first commit

master
KatolaZ 7 years ago
commit ccb361e758
  1. 121
      gprsh
  2. 1
      gprsh_serve

121
gprsh

@ -0,0 +1,121 @@
#!/bin/sh
##
## === gprsh ===
##
## gprsh is a simple gopher server in a POSIX shell script:
##
## $ ./gprsh [<PORT> [<GOPHERDIR>]
##
## If PORT is not specified, the default is 70. If GOPHERDIR is not
## specified, "./" is assumed
##
##
## (c) 2018 Vincenzo 'KatolaZ' Nicosia <katolaz@freaknet.org>
##
##
######################
##
## If the script is called with basename "gprsh", launch the netcat
## server...
##
MYNAME=$(basename $0)
if [ -z "${MYNAME#gprsh}" ]; then
## we are called as gprsh -- launch the server
PORT=${1:-70}
GOPHERDIR=${2:-"./"}
while [ 1 -eq 1 ]; do
netcat -vv -k -l -p ${PORT} -c "./gprsh_serve ${GOPHERDIR}"
ret=$?
done
exit 0
fi
######################
##
## ...otherwise, serve a request
##
## function
invalid_selector(){
sel="$1"
echo "iInvalid selector: \"$sel\""
echo "."
exit 1
}
## function
serve_selector(){
sel="$1"
cat "${sel}"
echo "."
exit 0
}
### transform a .gph file into a gophermap
## function
serve_index(){
IDX=$1
IFS='
'
while read line; do
rline=$(echo $line | sed -r -e 's/\r//g')
case $rline in
'['*)
echo $rline | sed -r -e 's/\[//g;s/\]//g;s/\|/\t/g;s/\t//;s/$/\r/g'
;;
*)
echo $line
esac
done < $IDX
exit 0
}
GOPHERDIR=${1:-"./"}
read selector
selector=$(echo $selector | sed -r 's:\r::g' )
echo "iGOPHERDIR: ${GOPHERDIR}"
echo "iselector: \"${selector}\""
case $selector in
/*|"")
RP1=$(realpath "${GOPHERDIR}"/"${selector}" || "")
RP2=$(realpath "${GOPHERDIR}")"${selector}"
echo "iRP1: ${RP1}"
echo "iRP2: ${RP2}"
#echo "."
if [ "${RP1}" = "${RP2}" ]; then
if [ -f "${RP1}" ]; then
serve_selector "${RP1}"
elif [ -d "${RP1}" ]; then
[ -f "${RP1}/gophermap" ] && serve_selector "${RP1}/gophermap"
[ -f "${RP1}/index.gph" ] && serve_index "${RP1}/index.gph"
else
echo "3Err Unable to find file ${selector}"
fi
fi
invalid_selector "$selector"
;;
*)
[ -f "${GOPHERDIR}/gophermap" ] && cat "${GOPHERDIR}/gophermap" && echo "." && exit 0
invalid_selector "/"
;;
esac

@ -0,0 +1 @@
gprsh
Loading…
Cancel
Save