diff options
Diffstat (limited to 'gprsh')
-rwxr-xr-x | gprsh | 121 |
1 files changed, 0 insertions, 121 deletions
@@ -1,121 +0,0 @@ -#!/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 - |