11 Commits

Author SHA1 Message Date
fbt
e610dce293 * Fix README
* Create the album ourselves.

Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 07:35:25 +03:00
fbt
634b11c3b4 forgot about --
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 07:19:40 +03:00
fbt
f05682e9a7 new README
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 07:18:59 +03:00
fbt
71744b6325 api tweaks
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 06:57:47 +03:00
fbt
b33e57e886 fastfix
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-03 21:55:51 +03:00
fbt
3fe0d59815 album 2016-03-03 21:49:49 +03:00
fbt
ef3cd20dfc Add file to an album on upload 2016-03-03 19:00:39 +03:00
fbt
fd208cff1e pass keys to ufw
Signed-off-by: fbt <fbt@fleshless.org>
2016-02-22 23:43:04 +03:00
fbt
776217ab00 8fw now marks new files as private unless stated otherwise
Signed-off-by: fbt <fbt@fleshless.org>
2016-02-22 23:19:06 +03:00
fbt
2d7e65682f eh 2016-01-01 17:16:03 +03:00
fbt
baa483e7cc notification support 2015-12-20 15:46:24 +03:00
3 changed files with 122 additions and 59 deletions

View File

@@ -1,38 +1,50 @@
LICENSE
=======
All scripts here are released uder the ISC permissive free software license (http://en.wikipedia.org/wiki/ISC_license).
It basically says that you can do whatever you like with the code as long as you credit the author and provide the license with it.
Also see LICENSE in the repo.
ufw-tools
=========
ufw-tools are two simple-ish scripts for uploading files to 8fw.me.
Support
=======
I do not promise any support for any of the provided scripts. That said, I'll do what I can for you if I'm not too busy and/or drunk.
General information
===================
The paths are all configurable of course.
The help information that the scripts give is dynamic and is provided here only for reference.
Scripts
=======
ufw
---
A very simple tool to upload files to the zfh.so file hosting
ufw is the main one, it uploads shit.
Usage: ufw [-RsF] [-D num] [file/url]"
Flags:
-R # Remove the file after uploading.
-s # Make a screenshot and upload it instead of a file.
-F # Make a fullscreen shot instead of prompting for a window/area. Implies -s.
-D <num> # Delay the shot by <num> seconds.
-p # Make the file private. Requires $secret to be set in the config.
-m # Maximum filesize (takes K, M and G suffixes).
Flags:
-R # Remove the file after uploading.
-s # Make a screenshot and upload it instead of a file.
-F # Make a fullscreen shot instead of prompting for a window/area. Implies -s.
-d # Supply a dexcription.
-D <num> # Delay the shot by <num> seconds.
-p # Make the file public.
-u # Generate a shortlink from URL.
-m # Maximum filesize (takes K, M and G suffixes).
-a # Add the file to an album.
-A # API response format.
Config options (~/.config/ufw):
secret # Your personal token. Get it at https://zfh.so/settings_form
cfg_screenshot_ext # Screenshot file type, used by scrot.
cfg_max_filesize # Maximum filesize in megabytes.
# Others are self-explanatory:
cfg_url_regex
cfg_tmp_dir
cfg_service_url
Config options (~/.config/ufw):
secret # Your personal token. Get it at https://zfh.so/settings_form
cfg_screenshot_ext # Screenshot file type, used by scrot.
# Others are self-explanatory:
cfg_url_regex
cfg_tmp_dir
cfg_script_url
ufwd
----
ufwd periodically checks a directory of your choosing (defaults to $XDG_RUNTIME DIR/ufwd) and invokes ufw to upload the files and remove them.
Usage: ufwd [-hn] [-d workdir] -D [check delay] -- [ufw flags]
-h # Show this message.
-n # Enable notifications with notify-send. Must be installed.
-d [path] # Set the dir that is to be watched.
-D [sec] # Set the check interval.

86
ufw
View File

@@ -1,12 +1,9 @@
#!/usr/bin/env bash
#!/usr/bin/bash
# Copyright (c) 2012 fbt <fbt@fleshless.org>
# License: ISC
#
# About:
# A simple upload script for ZFH (http://zerofiles.org)
_self="${0##*/}"
# A simple upload script for UFW (http://zerofiles.org)
_cat() {
while read; do
@@ -23,25 +20,30 @@ err() { msg "(error) $1" >&2; }
usage() {
_cat <<- EOF
Usage: ${_self} [-RsF] [-D num] [file/url]"
Usage: ufw [-RsF] [-D num] [file/url]"
Flags:
-R # Remove the file after uploading.
-s # Make a screenshot and upload it instead of a file.
-F # Make a fullscreen shot instead of prompting for a window/area. Implies -s.
-d # Supply a dexcription.
-D <num> # Delay the shot by <num> seconds.
-p # Make the file private. Requires \$secret to be set in the config.
-u # Generate a shortlink from URL.
-m # Maximum filesize (takes K, M and G suffixes).
-R|--remove-file # Remove the file after uploading.
-s|--screenshot # Make a screenshot and upload it instead of a file.
-F|--fullscreen # Make a fullscreen shot instead of prompting for a window/area. Implies -s.
-d|--description # Supply a description.
-D|--screenshot-delay <num> # Delay the shot by <num> seconds.
-p|--public # Make the file public.
-u|--short # Generate a shortlink from URL.
-m|--max-filesize # Maximum filesize (takes K, M and G suffixes).
-a|--album-id # Add the file to an album.
-A|--album-name # Add the file to an album by name. The album will be crated, if necessary.
-M|--api-format # API response format.
Config options (~/.config/ufw):
secret # Your personal token. Get it at https://zfh.so/settings_form
cfg_screenshot_ext # Screenshot file type, used by scrot.
cfg_max_filesize # Maximum filesize in megabytes.
cfg_max_filesize # Maximum filesize (takes K, M and G suffixes).
cfg_api_format # Set the api response format. Supports json or plain (default).
# Others are self-explanatory:
cfg_url_regex
cfg_tmp_dir
cfg_service_url
cfg_api_path
EOF
}
@@ -112,22 +114,25 @@ upload() {
get_file_hash "$file"
file_url=$( curl -fsL "${cfg_service_url}/api?mode=file&file=${file_hash}&direct=1&short=${flag_shortlink}" )
if ! (( $? )); then
printf '%s\n' "$file_url"
else
curl -sL \
-F file="@$file" \
-F upload_mode='api' \
-F flag_private="$flag_private" \
-F short="$flag_shortlink" \
-F description="$description" \
-F secret="$secret" \
-F submit="" \
-A 'zerofiles.org upload script' \
"$cfg_service_url/upload"
if [[ "$album_name" ]]; then
if album_id=$( curl -fsL "$cfg_service_url/$cfg_api_path/album?a=new&name=$album_name&format=plain&secret=$secret" ); then
misc_curl_args+=( -F album_id="$album_id" )
else
return 1
fi
fi
curl -sL \
-F file="@$file" \
-F api_format="$cfg_api_format" \
-F flag_private="$flag_private" \
-F short="$flag_shortlink" \
-F secret="$secret" \
-F submit="" \
"${misc_curl_args[@]}" \
-A 'zerofiles.org upload script' \
"$cfg_service_url/$cfg_api_path/upload"
if (( $? )); then
err 'Something has gone wrong with the upload.'
return 7
@@ -245,6 +250,8 @@ main() {
cfg_service_url='https://8fw.me'
cfg_screenshot_ext='png'
cfg_max_filesize='200M'
cfg_api_format='plain'
cfg_api_path='/api/2'
if [[ -f "$HOME/.suprc" ]]; then
printf 'Found legacy configfile, moving...\n' >&2
@@ -260,21 +267,36 @@ main() {
while [[ "$1" ]]; do
case "$1" in
-p|--private) flag_private='true';;
-p|--public) flag_private='false';;
-R|--remove-file) flag_rm='1';;
-s|--screenshot) flag_scrot='1';;
-d|--description) description="$2"; shift;;
-D|--screenshot-delay) cfg_scrot_delay="$2"; shift;;
-F|--fullscreen)
flag_scrot='1'
flag_scrot_fullscreen='1'
;;
-m|--max-filesize) cfg_max_filesize=$2; shift;;
-M|--api-format) cfg_api_format=$2; shift;;
-i|--my-ip) action='getmyip';;
-S|--short) flag_shortlink='1';;
-u|--url) action='url';;
-a|--album-id)
misc_curl_args+=( -F "album_id=$2" )
shift
;;
-A|--album-name) album_name=$2; shift;;
-d|--description)
misc_curl_args+=( -F "description=$2" )
shift
;;
-h|--help|--usage) usage; return;;

33
ufwd
View File

@@ -13,15 +13,24 @@ cfg_scan_delay='30'
msg() { printf '%s\n' "$*"; }
err() { echo "$*" >&2; }
usage() { echo "No help available."; }
usage() {
printf 'Usage: ufwd [-hn] [-d workdir] -D [check delay]\n'
printf ' -h # Show this message.\n'
printf ' -n # Enable notifications with notify-send. Must be installed.\n'
printf ' -d [path] # Set the dir that is to be watched.\n'
printf ' -D [sec] # Set the check interval.\n'
}
main() {
while (( $# )); do
case "$1" in
(--help|-h) usage; return 0;;
(--workdir|-d) cfg_workdir="$2"; shift;;
(--scan-delay|-D) cfg_scan_delay="$2"; shift;;
(--notify|-n) flag_enable_notifications=1;;
(--) shift; break;;
(-*)
err "Unknown key: $1"
@@ -34,6 +43,15 @@ main() {
shift
done
if (( flag_enable_notifications )); then
if type -P notify-send &>/dev/null; then
msg "Found notify-send."
else
err "notify-send not found in PATH, disabling notifications."
flag_enable_notifications=0
fi
fi
mkdir -p "$cfg_workdir" || {
return 1
}
@@ -44,7 +62,18 @@ main() {
while sleep "$cfg_scan_delay"; do
for i in *; do
ufw -R "$i"
upload_output=$( ufw "$@" -R "$i" )
upload_return=$?
if (( flag_enable_notifications )); then
if (( $upload_return )); then
notify-send 'ufwd' "File upload failed: $upload_output"
else
notify-send 'ufwd' "File uploaded: $upload_output"
fi
fi
printf '%s\n' "$upload_output"
done
done
}