48 lines
1.0 KiB
Bash
Executable File
48 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
PROGNAME=${0##*/}
|
|
VERSION="0.0.1"
|
|
error_exit() {
|
|
printf "%s: %s\n" "$PROGNAME" "${1:-"Unknown Error"}" >&2
|
|
exit 1
|
|
}
|
|
|
|
usage() {
|
|
printf "usage: %s [OPTIONS] URI [ARGS]\n" "$PROGNAME"
|
|
printf "Simple client for spartan protocol\n"
|
|
}
|
|
|
|
request(){
|
|
printf "$host /$path $( $post | wc -c )\r\n$post" | nc $host $port
|
|
}
|
|
|
|
while getopts ":h:p:i:u:" arg; do
|
|
case $arg in
|
|
h | --help)
|
|
usage; exit ;;
|
|
p | --port)
|
|
export port=$OPTARG
|
|
;;
|
|
i | --input)
|
|
export post=$OPTARG
|
|
;;
|
|
u | --url)
|
|
url_unparsed=$OPTARG
|
|
#pattern=^((spartan)://)?([^/:]+)(:([0-9]+))?/(.*)$
|
|
#echo $url_unparsed
|
|
if [[ "$url_unparsed" =~ ^((spartan)://)?([^/:]+)(:([0-9]+))?/(.*)$ ]]; then
|
|
url=$(echo $url_unparsed | sed -e 's,spartan://,,g')
|
|
host=$(echo "$url" | sed -e 's|^[^/]*//||' -e 's|/.*$||')
|
|
path="$(echo $url | grep / | cut -d/ -f2-)"
|
|
port=${port:-300}
|
|
echo $port $post $host $path
|
|
request
|
|
else
|
|
echo $url_unparsed is not a Spartan URL
|
|
fi
|
|
;;
|
|
* | -* | --*)
|
|
usage; error_exit "unknown option $1" ;;
|
|
esac
|
|
done
|