init
This commit is contained in:
		
							
								
								
									
										157
									
								
								sup
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										157
									
								
								sup
									
									
									
									
									
										Executable file
									
								
							| @@ -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 "$@" | ||||
		Reference in New Issue
	
	Block a user