diff options
Diffstat (limited to 'gosher')
-rwxr-xr-x | gosher | 53 |
1 files changed, 30 insertions, 23 deletions
@@ -58,13 +58,13 @@ DEBUG= ## function cleanup(){ - [ -n "$INF" ] && [ -p "$INF" ] && rm -f ${INF} + [ -n "$INF" ] && [ -p "$INF" ] && rm -f "${INF}" exit 1 } -MYNAME=$(basename $0) -MYDIR=$(dirname $(realpath $0)) -NETCAT=$(which $NETCAT) +MYNAME=$(basename "$0") +MYDIR=$(dirname "$(realpath "$0")") +NETCAT=$(which "$NETCAT") if [ -z "${MYNAME#gosher}" ]; then ## we are called as gosher -- launch the server @@ -72,27 +72,30 @@ if [ -z "${MYNAME#gosher}" ]; then PORT=${1:-70} GOPHERDIR=${2:-"./"} - [ ! -f "${NETCAT}" -o ! -x "${NETCAT}" ] && { + [ ! -f "${NETCAT}" ] || [ ! -x "${NETCAT}" ] && { echo "Wrong NETCAT -- Exiting" >&2 exit 2 } - if [ -f "${MYDIR}/gosher_serve" -o -h "${MYDIR}/gosher_serve" ]; then + if [ -f "${MYDIR}/gosher_serve" ] || [ -h "${MYDIR}/gosher_serve" ]; then GOSHER_SERVE="${MYDIR}/gosher_serve" trap cleanup 0 HUP INT TRAP TERM QUIT - INF=${IPREFIX}$$ + INF="${IPREFIX}$$" [ "$STYLE" = "pipe" ] && { - mkfifo -m 600 $INF + mkfifo -m 600 "$INF" +# shellcheck disable=SC2050 while [ 1 -eq 1 ]; do - ${GOSHER_SERVE} ${GOPHERDIR} <$INF | ${NETCAT} -vvvvv -l -p ${PORT} >$INF +# shellcheck disable=SC2094 + ${GOSHER_SERVE} "${GOPHERDIR}" <"$INF" | ${NETCAT} -vvvvv -l -p "${PORT}" >"$INF" done rm -f $INF exit 0 } [ "$STYLE" = 'fork' ] && { +# shellcheck disable=SC2050 while [ 1 -eq 1 ]; do - ${NETCAT} -vv -l -p $PORT -c "${GOSHERSERVE} ${GOPHERDIR}" + ${NETCAT} -vv -l -p "$PORT" -c "${GOSHER_SERVE} ${GOPHERDIR}" done exit 0 } @@ -115,6 +118,7 @@ fi invalid_selector(){ sel="$1" echo "3Error: Invalid selector: \"$sel\"" +# shellcheck disable=SC1117 printf ".\r\n" exec 1>&- exec 2>&- @@ -139,19 +143,20 @@ serve_index(){ IDX=$1 IFS=' ' - while read line; do - rline=$(echo $line | sed -r -e 's/\r//g') - case $rline in + while read -r 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 "$rline" | sed -r -e 's/\[//g;s/\]//g;s/\|/\t/g;s/\t//;s/$/\r/g' ;; t*) - echo $rline | cut -c 2- + echo "$rline" | cut -c 2- ;; *) - echo $line + echo "$line" esac - done < $IDX + done < "$IDX" +# shellcheck disable=SC1117 printf ".\r\n" exec 1>&- exec 2>&- @@ -183,9 +188,9 @@ EOF GOPHERDIR=${1:-"./"} -read selector +read -r selector -selector=$(echo $selector | sed -r 's:\$.*::g;s:\r::g' ) +selector=$(echo "$selector" | sed -r 's:\$.*::g;s:\r::g' ) [ -n "$DEBUG" ] && { echo "iGOPHERDIR: ${GOPHERDIR}" @@ -194,13 +199,15 @@ selector=$(echo $selector | sed -r 's:\$.*::g;s:\r::g' ) case $selector in URL:*) - url=$(echo $selector | cut -d ":" -f 2-) - serve_redirect $url + url=$(echo "$selector" | cut -d ":" -f 2-) + serve_redirect "$url" ;; /?*|"") RP1=$(realpath "${GOPHERDIR}"/"${selector}" || "") +# shellcheck disable=SC2181 [ $? -eq 0 ] || invalid_selector "$selector" RP2=$(realpath "${GOPHERDIR}")"${selector}" +# shellcheck disable=SC2181 [ $? -eq 0 ] || invalid_selector "$selector" [ -n "$DEBUG" ] && { echo "iRP1: ${RP1}" @@ -209,8 +216,8 @@ case $selector in if [ "${RP1}" = "${RP2}" ]; then if [ -f "${RP1}" ]; then - if [ -n "$(echo $RP1 | sed -n '/\.gph$/p')" ]; then - serve_index $RP1 + if [ -n "$(echo "${RP1}" | sed -n '/\.gph$/p')" ]; then + serve_index "${RP1}" else serve_selector "${RP1}" fi |