commit
bd08d44b4c
1 changed files with 157 additions and 0 deletions
@ -0,0 +1,157 @@ |
|||
#!/usr/bin/env bash |
|||
# Copyright (c) 2012 fbt <fbt@fleshless.org> |
|||
# All rights reserved. |
|||
# |
|||
# Redistribution and use in source and binary forms, with or without |
|||
# modification, are permitted provided that the following conditions are met: |
|||
# - Redistributions of source code must retain the above copyright notice, |
|||
# this list of conditions and the following disclaimer. |
|||
# - Redistributions in binary form must reproduce the above copyright notice, |
|||
# this list of conditions and the following disclaimer in the |
|||
# documentation and/or other materials provided with the distribution. |
|||
# |
|||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR |
|||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
|||
# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR |
|||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER |
|||
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
|||
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|||
# |
|||
# About: |
|||
# A simple upload script for ZFH (http://zerofiles.org) |
|||
|
|||
cfg_url_regex='^[A-Za-z]([A-Za-z0-9+.-]+)?://.+' |
|||
cfg_tmp_dir="/tmp/$USER/sup"; TEMPDIR="$cfg_tmp_dir" |
|||
cfg_script_url='https://zfh.so/upload' |
|||
cfg_screenshot_ext='png' |
|||
|
|||
[[ -f $HOME/.suprc ]] && { source $HOME/.suprc; } |
|||
|
|||
sup.msg() { echo "[sup] $1"; } |
|||
sup.err() { sup.msg "(error) $1" >&2; } |
|||
|
|||
sup.usage() { |
|||
echo "Usage: `basename $0` [-RsF] [-D num] [file/url]" |
|||
} |
|||
|
|||
sup.env() { |
|||
for i in "$cfg_tmp_dir"; do |
|||
[[ -d "$i" ]] || { mkdir -p "$i"; } |
|||
done |
|||
} |
|||
|
|||
sup.upload() { |
|||
curl -F file="@$file" \ |
|||
-F upload_mode='api' \ |
|||
-F flag_private="$flag_private" \ |
|||
-F secret="$secret" \ |
|||
-F submit="" \ |
|||
"$cfg_script_url" -sL -A 'zerofiles.org upload script' || { return 1; } |
|||
|
|||
[[ "$flag_rm" ]] && { rm "$file"; } |
|||
|
|||
return 0 |
|||
} |
|||
|
|||
sup.mktemp() { |
|||
>"$1" || { |
|||
sup.err "Cannot create $1!" |
|||
return 1 |
|||
} |
|||
|
|||
echo "$1" |
|||
} |
|||
|
|||
sup.scrot() { |
|||
local tmp_file_name |
|||
|
|||
[[ "$scrot_exec" ]] || { scrot_exec=`which scrot`; } |
|||
[[ "$scrot_exec" ]] || { |
|||
sup.err "Please install scrot to use this function" |
|||
return 1 |
|||
} |
|||
|
|||
[[ "$flag_scrot_fullscreen" ]] || { scrot_args+=( '-s' ); } |
|||
[[ "$cfg_scrot_delay" ]] && { scrot_args+=( "-d $cfg_scrot_delay" ); } |
|||
|
|||
<<<<<<< HEAD |
|||
until [[ ! -e "${cfg_tmp_dir}/${tmp_file_name}" ]]; do |
|||
tmp_file_name="${RANDOM}${RANDOM}.${cfg_screenshot_ext}" |
|||
done |
|||
|
|||
scrot "${scrot_args[@]}" "${cfg_tmp_dir}/$tmp_file_name" || { |
|||
sup.err "Failed to take a screenshot." |
|||
return 1 |
|||
} |
|||
|
|||
echo "${cfg_tmp_dir}/$tmp_file_name" |
|||
======= |
|||
file=`sup.mktemp "$cfg_tmp_dir/sup_tmp_$$.png"` |
|||
scrot "${scrot_args[@]}" "$file" |
|||
>>>>>>> 1f00542683c0e9756a46582b7c62429adb2212f6 |
|||
} |
|||
|
|||
sup.exclude() { |
|||
[[ "$2" ]] && { echo "$1"; return 1; } |
|||
return 0 |
|||
} |
|||
|
|||
sup.if_url() { echo "$1" | grep -oE "$cfg_url_regex" &>/dev/null; } |
|||
|
|||
<<<<<<< HEAD |
|||
main() { |
|||
while [[ "$1" ]]; do |
|||
case "$1" in |
|||
-p|--private) flag_private='true';; |
|||
-R|--remove-file) flag_rm='1';; |
|||
|
|||
-s|--screenshot) flag_scrot='1';; |
|||
-F|--fullscreen) flag_scrot_fullscreen='1';; |
|||
-D|--screenshot-delay) cfg_scrot_delay="$2"; shift;; |
|||
======= |
|||
while getopts "pRsFD:h" option; do |
|||
case "$option" in |
|||
p) flag_private='true';; |
|||
>>>>>>> 1f00542683c0e9756a46582b7c62429adb2212f6 |
|||
|
|||
-h|--help|--usage) sup.usage; return;; |
|||
|
|||
--) break;; |
|||
|
|||
*) args+=( "$1" );; |
|||
esac |
|||
shift |
|||
done |
|||
|
|||
sup.env |
|||
|
|||
if [[ "$flag_scrot" ]]; then |
|||
file="$(sup.scrot)" || { return 1; } |
|||
else |
|||
target="${args[0]}"; [[ "$target" ]] || { sup.usage; exit 1; } |
|||
|
|||
<<<<<<< HEAD |
|||
sup.if_url "$target" && { |
|||
file=`mktemp "$cfg_tmp_dir/sup_tmp_XXXXXX"` |
|||
======= |
|||
[[ "$flag_scrot" ]] && { |
|||
sup.scrot |
|||
} || { |
|||
sup.if_url "$1" && { |
|||
file=`sup.mktemp "$cfg_tmp_dir/sup_tmp_$$"` |
|||
[[ "$file_title" ]] || { file_title="Source: $file; $cfg_default_title"; } |
|||
>>>>>>> 1f00542683c0e9756a46582b7c62429adb2212f6 |
|||
|
|||
curl -s "$target" > "$file" || { |
|||
sup.err "Could not download file." |
|||
return 1 |
|||
} |
|||
} |
|||
fi |
|||
|
|||
sup.upload |
|||
} |
|||
|
|||
main "$@" |
Loading…
Reference in new issue