329 lines
7.2 KiB
Bash
Executable File
329 lines
7.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
_qCol() {
|
|
# print "easier" mapping of ANSI colors and controls
|
|
local K="\033[1;30m"
|
|
local R="\033[1;31m"
|
|
local G="\033[1;32m"
|
|
local B="\033[1;34m"
|
|
local Y="\033[1;33m"
|
|
local M="\033[1;35m"
|
|
local C="\033[1;36m"
|
|
local W="\033[1;37m"
|
|
|
|
local k="\033[2;30m"
|
|
local r="\033[2;31m"
|
|
local g="\033[2;32m"
|
|
local b="\033[2;34m"
|
|
local y="\033[2;33m"
|
|
local m="\033[2;35m"
|
|
local c="\033[2;36m"
|
|
local w="\033[2;37m"
|
|
|
|
local bk="\033[40m"
|
|
local br="\033[41m"
|
|
local bg="\033[42m"
|
|
local by="\033[43m"
|
|
local bb="\033[44m"
|
|
local bm="\033[45m"
|
|
local bc="\033[46m"
|
|
local bw="\033[47m"
|
|
|
|
local S='\033[1m' #strong
|
|
local s='\033[2m' #strong off
|
|
local U='\033[4m' #underline
|
|
local u='\033[24m' #underline off
|
|
local z='\033[0m' #zero colors
|
|
local Z='\033[0m' #zero colors
|
|
local ic='\033[7m' #inverse colors
|
|
local io='\033[27m' #inverse off
|
|
local st='\033[9m' #strike on
|
|
local so='\033[29m' #strike off
|
|
local CLR='\033[2J' # Clear screen
|
|
local CLREND='\033[K' # Clear to end of line
|
|
local CLRBEG='\033[1K' # Clear to beginning of line
|
|
local CLRSCR="$CLR"'\033[0;0H' # Clear screen, reset cursor
|
|
|
|
local color_keys=" K R G B Y M C W k r g b y m c w S s U u z Z ic io st so bk br bg by bb bm bc bw CLR CLREND CLRBEG CLRSCR "
|
|
|
|
[[ "$1" = "export" ]] && {
|
|
local key
|
|
local prefix="$2"
|
|
[[ -z "$2" ]] && prefix=_c
|
|
for key in $color_keys; do
|
|
eval export ${prefix}${key}=\'${!key}\'
|
|
done
|
|
return
|
|
}
|
|
|
|
local arg val
|
|
for ((arg=1;arg<=$#;arg++)) {
|
|
val=${!arg}
|
|
[[ ${color_keys} = *" $val "* ]] || { echo "No such color code '${val}'" >&2; return 1; }
|
|
printf ${!val}
|
|
}
|
|
}
|
|
|
|
|
|
_cont() {
|
|
set +x
|
|
_qCol G
|
|
echo Continue
|
|
_qCol z
|
|
read continue
|
|
_qCol Y
|
|
echo =========================================
|
|
_qCol z
|
|
set -x
|
|
}
|
|
_title() {
|
|
_qCol G
|
|
echo "$1"
|
|
_qCol Y
|
|
echo =========================================
|
|
_qCol z
|
|
}
|
|
|
|
|
|
set -e
|
|
|
|
BIG="big file(1).ext"
|
|
BIGS="big_file1.ext"
|
|
SMALL="small file"
|
|
SMALLS="small_file"
|
|
IMAGE="image.jpg"
|
|
|
|
|
|
test -f "$BIG" || dd if=/dev/zero of="$BIG" bs=8192 count=40000
|
|
test -f "$SMALL" ||dd if=/dev/urandom of="$SMALL" bs=4096 count=400
|
|
test -f "$IMAGE" || convert -size 640x480 xc:gray $IMAGE
|
|
|
|
. ../.env
|
|
|
|
function t00-rebuild-docker() {
|
|
CWD=$PWD
|
|
cd ..
|
|
docker-compose up --build -d --force-recreate -t 0
|
|
cd "$CWD"
|
|
}
|
|
|
|
function t01-maintenance-begin() {
|
|
curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/maintenance
|
|
}
|
|
|
|
function t02-upload-small-image() {
|
|
|
|
pv "$IMAGE" | \
|
|
curl -fL -w "\n" -F file="@-" -X POST \
|
|
-H "Name: $IMAGE" \
|
|
-H "Max-Downloads: 4" \
|
|
-H "Expires-Days: 1" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/upload
|
|
}
|
|
|
|
function t03-upload-small-file() {
|
|
pv "$SMALL" | \
|
|
curl -fL -w "\n" -F file="@-" -X POST \
|
|
-H "Name: $SMALL" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/upload
|
|
|
|
}
|
|
|
|
function t04-upload-large-file-POST() {
|
|
pv "$BIG" | \
|
|
curl -fL -w "\n" -F file="@-" -X POST \
|
|
-H "Name: $BIG" \
|
|
-H "Max-Downloads: 4" \
|
|
-H "Expires-Days: 1" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/upload
|
|
}
|
|
|
|
function t04-upload-large-file-GET() {
|
|
pv "$BIG" | \
|
|
curl -fL -w "\n" --upload-file - \
|
|
-H "Name: $BIG" \
|
|
-H "Max-Downloads: 4" \
|
|
-H "Expires-Days: 1" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/upload
|
|
}
|
|
|
|
function t05-check-db-manually() {
|
|
sqlite3 ../data/flees.db "select * FROM files"
|
|
}
|
|
|
|
function t06-list-files() {
|
|
|
|
curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/ls
|
|
}
|
|
|
|
function t07-file-download() {
|
|
download_url=$( curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/ls | grep "$BIGS" | tail -n 1 | sed s,.*http,http, )
|
|
|
|
rm -f "$BIGS"
|
|
wget "$download_url"
|
|
}
|
|
|
|
function t08-file-details() {
|
|
download_url=$( curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/ls | grep "$BIGS" | tail -n 1 | sed s,.*http,http, )
|
|
token_name=$( echo $download_url | sed s,.*/d/,, )
|
|
curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/details/"$token_name"
|
|
}
|
|
function t09-file-delete() {
|
|
|
|
|
|
download_url=$( curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/ls | grep "$BIGS" | tail -n 1 | sed s,.*http,http, )
|
|
token_name=$( echo $download_url | sed s,.*/d/,, )
|
|
curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/delete/"$token_name"
|
|
}
|
|
|
|
function t09-unlimited-downloads() {
|
|
pv "$SMALL" | \
|
|
curl -fL -w "\n" -F file="@-" -X POST \
|
|
-H "Name: $SMALL" \
|
|
-H "Max-Downloads: -1" \
|
|
-H "Expires-Days: 1" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/upload
|
|
download_url=$( curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/ls | grep "$SMALLS" | tail -n 1 | sed s,.*http,http, )
|
|
token_name=$( echo $download_url | sed s,.*/d/,, )
|
|
for ((i=0;i<10;i++)); do
|
|
curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/d/"$token_name" > /dev/null
|
|
curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/details/"$token_name"
|
|
done
|
|
}
|
|
|
|
function t10-maintenance-post() {
|
|
|
|
pv "$SMALL" | \
|
|
curl -fL -w "\n" -F file="@-" -X POST \
|
|
-H "Name: $SMALL" \
|
|
-H "Max-Downloads: 4" \
|
|
-H "Expires-Days: -5" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/upload
|
|
pv "$SMALL" | \
|
|
curl -fL -w "\n" -F file="@-" -X POST \
|
|
-H "Name: $SMALL" \
|
|
-H "Max-Downloads: 0" \
|
|
-H "Expires-Days: 3" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/upload
|
|
|
|
curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/maintenance
|
|
|
|
curl -fL -w "\n" \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/ls
|
|
}
|
|
|
|
function t11-get-mfl() {
|
|
curl -fL \
|
|
-H "Secret: $FLASK_ACCESS_TOKEN" \
|
|
"$FLASK_PUBLIC_URL"/script/mfl > mfl
|
|
chmod +x mfl
|
|
|
|
}
|
|
function t12-mfl-update() {
|
|
./mfl update
|
|
}
|
|
function t13-mfl-list() {
|
|
./mfl list
|
|
./mfl
|
|
}
|
|
function t14-mfl-upload() {
|
|
./mfl w mfl
|
|
./mfl w -d 1 -m 1 mfl
|
|
cat mfl | ./mfl w mfl
|
|
./mfl w . "folder with spaces"
|
|
./mfl w "$SMALL"
|
|
}
|
|
|
|
|
|
|
|
_getlist() {
|
|
declare -F | awk '{ print $3 }' | grep -v ^_
|
|
echo exit
|
|
}
|
|
|
|
_getnext() {
|
|
hitfound=0
|
|
for line in $( _getlist ); do
|
|
if [[ $hitfound -eq 1 ]]; then
|
|
echo "$line"
|
|
return
|
|
fi
|
|
if [[ "$line" = "$1" ]]; then
|
|
hitfound=1
|
|
fi
|
|
done
|
|
}
|
|
|
|
|
|
_getchoice() {
|
|
_getlist | \
|
|
smenu -m "Pick task" -n 20 -t 1 -a c:2,b m:3,b -s '/'$1
|
|
|
|
}
|
|
|
|
|
|
if [[ -z "$1" ]]; then
|
|
|
|
next_task=0
|
|
while true; do
|
|
choice=$( _getchoice $next_task )
|
|
if [[ -z "$choice" ]]; then break; fi
|
|
_title "$choice"
|
|
set -x
|
|
"$choice"
|
|
set +x
|
|
_title ""
|
|
#~ next_task=$(( next_task + 1 ))
|
|
next_task=$( _getnext "$choice" )
|
|
|
|
done
|
|
|
|
else
|
|
# user passed commands from cmd line
|
|
if [[ "$1" = "all" ]]; then
|
|
args=$( _getlist )
|
|
else
|
|
args="$@"
|
|
fi
|
|
|
|
for choice in $args; do
|
|
_title "$choice"
|
|
set -x
|
|
"$choice"
|
|
set +x
|
|
_title ""
|
|
if [[ "$choice" = "t00-rebuild-docker" ]]; then sleep 3; fi
|
|
done
|
|
fi
|
|
|