#!/usr/bin/env bash # Copyright (c) 2012 fbt # 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 "$@"