10 Commits

Author SHA1 Message Date
fbt
97701825bd deps
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 16:55:09 +03:00
fbt
c6e43448ca clear the delimiter for read
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 09:01:49 +03:00
fbt
9b3516951c code cleanup
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 08:43:05 +03:00
fbt
91a5d9bec2 Line breaks
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 08:33:20 +03:00
fbt
40c1767aae I'm tired of updating the help in README
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 08:32:52 +03:00
fbt
7c9d85e8c0 Some options overhaul and 8fw json support
Signed-off-by: fbt <fbt@fleshless.org>
2016-03-06 08:28:33 +03:00
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
3 changed files with 123 additions and 57 deletions

View File

@@ -1,38 +1,25 @@
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
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).
ufw can upload files to 8fw.me, shorten urls and show you your ip.
Call ufw -h for help.
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
Dependencies: curl, jshon
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.
Call ufwd -h for help.

133
ufw
View File

@@ -22,24 +22,28 @@ usage() {
_cat <<- EOF
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 public.
-u # Generate a shortlink from URL.
-m # Maximum filesize (takes K, M and G suffixes).
-a # Add the file to an album.
-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|--shorten <URL> # Generate a shortlink from URL.
-S|--short-url # Get a shortlink when uploading a file.
-P|--page-url # Get a link to the file page instead of a direct one.
-m|--max-filesize <num>[suf] # 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.
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).
# Others are self-explanatory:
cfg_url_regex
cfg_tmp_dir
cfg_service_url
cfg_api_path
EOF
}
@@ -69,7 +73,25 @@ get_max_filesize() {
fi
}
get_album_id() {
declare api_response api_status api_status_message
api_response=$( curl -fsL "$cfg_service_url/$cfg_api_path/album?a=new&name=$1&format=json&secret=$secret" )
get_api_status <<< "$api_response"
if (( api_status == 200 )); then
album_id=$( jshon -e data -e album -e id -u <<< "$api_response" )
misc_curl_args+=( -F album_id="$album_id" )
else
printf 'Error [album]: %s %s\n' "$api_status" "$api_status_message"
return 1
fi
}
upload() {
declare api_response api_status api_status_message
if (( flag_scrot )); then
flag_rm=1
file=$(take_screenshot) || { return 1; }
@@ -110,33 +132,66 @@ upload() {
get_file_hash "$file"
curl -sL \
if [[ "$album_name" ]]; then
get_album_id "$album_name"
fi
api_response=$( curl -sL \
-F file="@$file" \
-F upload_mode='api' \
-F api_format='json' \
-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/upload"
"$cfg_service_url/$cfg_api_path/upload" )
if (( $? )); then
err 'Something has gone wrong with the upload.'
return 7
if (( flag_shortlink )); then
if (( flag_directlink )); then
file_url_request='short_url_direct'
else
file_url_request='short_url'
fi
else
if (( flag_directlink )); then
file_url_request='direct_url'
else
file_url_request='page_url'
fi
fi
get_api_status <<< "$api_response"
if (( api_status == 200 )); then
file_link=$( jshon -e data -e file -e "$file_url_request" -u <<< "$api_response" )
printf '%s\n' "$file_link"
if (( flag_rm )); then
msg "Removing file: $file"
rm "$file"
fi
else
printf 'Error: %s %s\n' "$api_status" "$api_status_message"
return 1
fi
}
get_shortlink() {
declare url=$1
declare url=$1 api_response api_status api_status_message
if ! curl -fsL "$cfg_service_url/api?mode=url_add&url=${url}&raw=1"; then
err 'Something went wrong!'
api_response=$( curl -sL "$cfg_service_url/$cfg_api_path/url?a=add&url=${url}&format=json&secret=$secret" )
get_api_status <<< "$api_response"
if (( api_status == 200 )); then
read -r short_url real_url < <(
jshon -e data -e URL -e shorturl -u <<< "$api_response"
)
printf '%s\n' "$short_url"
else
printf 'Error: %s %s\n' "$api_status" "$api_status_message"
fi
}
@@ -162,6 +217,12 @@ take_screenshot() {
printf '%s\n' "$tmp_file"
}
get_api_status() {
read -d '' -r api_status api_status_message < <(
jshon -e status -e code -u -p -e message -u
)
}
_mktemp() {
declare tmp_file_name tmp_file_name_extra="$2" tmp_dir="$1"
@@ -178,10 +239,17 @@ _mktemp() {
}
get_my_ip() {
my_ip=$( curl -fsL https://zfh.so/ip )
declare api_response api_status api_status_message my_ip
if ! (( $? )); then
printf '%s\n' $my_ip
api_response=$( curl -sl "$cfg_service_url/$cfg_api_path/ip?format=json" )
get_api_status <<< "$api_response"
if (( api_status == 200 )); then
my_ip=$( jshon -e data -e ip -u <<< "$api_response" )
printf '%s\n' "$my_ip"
else
printf 'Error: %s %s\n' "$api_status" "$api_status_message"
fi
}
@@ -238,6 +306,10 @@ main() {
cfg_service_url='https://8fw.me'
cfg_screenshot_ext='png'
cfg_max_filesize='200M'
cfg_api_path='/api/2'
flag_shortlink=0
flag_directlink=1
if [[ -f "$HOME/.suprc" ]]; then
printf 'Found legacy configfile, moving...\n' >&2
@@ -253,7 +325,7 @@ main() {
while [[ "$1" ]]; do
case "$1" in
-p|--private) flag_private='false';;
-p|--public) flag_private='false';;
-R|--remove-file) flag_rm='1';;
-s|--screenshot) flag_scrot='1';;
@@ -263,20 +335,21 @@ main() {
flag_scrot_fullscreen='1'
;;
-m|--max-filesize) cfg_max_filesize=$2; shift;;
-i|--my-ip) action='getmyip';;
-S|--short) flag_shortlink='1';;
-u|--url) action='url';;
-u|--shorten) action='url';;
-S|--short-url) flag_shortlink=1;;
-P|--page-url) flag_directlink=0;;
-a|--album-id)
misc_curl_args+=( -F "album_id=$2" )
shift
;;
-A|--album-name)
misc_curl_args+=( -F "album_name=$2" )
shift
;;
-A|--album-name) album_name=$2; shift;;
-d|--description)
misc_curl_args+=( -F "description=$2" )

8
ufwd
View File

@@ -13,7 +13,13 @@ 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