several fixes and improvements

master
Hiltjo Posthuma 7 years ago committed by KatolaZ
parent 31ae1ddf4f
commit 250aead2ce

@ -98,20 +98,22 @@ if [ -z "${MYNAME#gosher}" ]; then
[ "$STYLE" = "pipe" ] && { [ "$STYLE" = "pipe" ] && {
mkfifo -m 600 "$INF" mkfifo -m 600 "$INF"
# shellcheck disable=SC2050 # shellcheck disable=SC2050
while [ 1 -eq 1 ]; do while :; do
# shellcheck disable=SC2094 # shellcheck disable=SC2094
${GOSHER_SERVE} "${GOPHERDIR}" \ ${GOSHER_SERVE} "${GOPHERDIR}" \
"${HOSTNAME}" "${PORT}" <"$INF" |\ "${HOSTNAME}" "${PORT}" <"$INF" |\
${NETCAT} -vvvvv -l "${HOSTNAME}" "${PORT}" >"$INF" ${NETCAT} -vvvvv -l "${HOSTNAME}" "${PORT}" >"$INF"
sleep 1
done done
rm -f $INF rm -f $INF
exit 0 exit 0
} }
[ "$STYLE" = 'fork' ] && { [ "$STYLE" = 'fork' ] && {
# shellcheck disable=SC2050 # shellcheck disable=SC2050
while [ 1 -eq 1 ]; do while :; do
${NETCAT} -vv -l -p "$PORT" -c \ ${NETCAT} -vv -l -p "$PORT" -c \
"${GOSHER_SERVE} ${GOPHERDIR} ${HOSTNAME} ${PORT}" "${GOSHER_SERVE} ${GOPHERDIR} ${HOSTNAME} ${PORT}"
sleep 1
done done
exit 0 exit 0
} }
@ -153,28 +155,26 @@ serve_selector(){
exit 0 exit 0
} }
### transform a .gph file into a gophermap ### transform a .gph file into a gophermap
## function ## function
serve_index(){ serve_index(){
IDX=$1 IDX=$1
IFS='
'
echo "[$(date +%Y-%m-%d\ %H:%M:%S)|GPH|${IDX}|\"\"]" >&2 echo "[$(date +%Y-%m-%d\ %H:%M:%S)|GPH|${IDX}|\"\"]" >&2
while read -r line; do while read -r line; do
rline=$(echo "$line" | tr -d '\r') rline=$(echo "$line" | tr -d '\r')
case "$rline" in case "$rline" in
'['*) '['*)
echo "$rline" | sed -r -e 's/\[//g;s/\]//g;s/\|/ /g;s/ //;s/$/\r/g' line=$(echo "$rline" | sed -r -e 's/\[//g;s/\]//g;s/\|/ /g;s/ / /;')
;; ;;
t*) t*)
echo "$rline" | cut -c 2- line=$(echo "$rline" | cut -b 2-)
;; ;;
*) *)
echo "$line" ;;
esac esac
done < "$IDX" printf '%s\r\n' "$line"
done < "$IDX"
# shellcheck disable=SC1117 # shellcheck disable=SC1117
printf ".\r\n" printf ".\r\n"
exec 1>&- exec 1>&-
@ -210,19 +210,19 @@ serve_cgi(){
script_name=$( echo "$1" | sed -r 's:^/+::') script_name=$( echo "$1" | sed -r 's:^/+::')
query_string="$2" query_string="$2"
echo "[$(date +%Y-%m-%d\ %H:%M:%S)|CGI|${script_name}|\"${query_string}\"]" >&2 echo "[$(date +%Y-%m-%d\ %H:%M:%S)|CGI|${script_name}|\"${query_string}\"]" >&2
GATEWAY_INTERFACE="CGI/1.1" GATEWAY_INTERFACE="CGI/1.1"
PATH_INFO="${script_name}" PATH_INFO="${script_name}"
PATH_TRANSLATED="${script_name}" PATH_TRANSLATED="${script_name}"
[ -n "${QUERY_STRING}" ] && QUERY_STRING="${query_string}" [ -n "${QUERY_STRING}" ] && QUERY_STRING="${query_string}"
REMOTE_ADDR= REMOTE_ADDR=
REMOTE_HOST= REMOTE_HOST=
REQUEST_METHOD="GET" REQUEST_METHOD="GET"
SCRIPT_NAME="${script_name}" SCRIPT_NAME="${script_name}"
SERVER_NAME="${HOSTNAME}" SERVER_NAME="${HOSTNAME}"
SERVER_PORT="${PORT}" SERVER_PORT="${PORT}"
SERVER_PROTOCOL="gopher/1.0" SERVER_PROTOCOL="gopher/1.0"
SERVER_SOFTWARE="gosher" SERVER_SOFTWARE="gosher"
####X_GOPHER_SEARCH= search (See above.) ####X_GOPHER_SEARCH= search (See above.)
export GATEWAY_INTERFACE PATH_INFO PATH_TRANSLATED QUERY_STRING export GATEWAY_INTERFACE PATH_INFO PATH_TRANSLATED QUERY_STRING
export REMOTE_ADDR REMOTE_HOST REQUEST_METHOD SCRIPT_NAME export REMOTE_ADDR REMOTE_HOST REQUEST_METHOD SCRIPT_NAME
export SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE export SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE
@ -238,7 +238,6 @@ HOSTNAME=${2:-"localhost"}
PORT=${3:-"70"} PORT=${3:-"70"}
read -r selector read -r selector
selector=$(echo "$selector" | tr -d '\r' ) selector=$(echo "$selector" | tr -d '\r' )
[ -n "$DEBUG" ] && { [ -n "$DEBUG" ] && {
@ -249,19 +248,19 @@ selector=$(echo "$selector" | tr -d '\r' )
case "$selector" in case "$selector" in
URL:*) URL:*)
## it's a special URL selector ## it's a special URL selector
url=$(echo "$selector" | cut -d ":" -f 2- | sed 's:^//::g') url=$(echo "$selector" | cut -d ":" -f 2-)
serve_redirect "$url" serve_redirect "$url"
;; ;;
/?*.cgi*) /?*.cgi*)
## it's a CGI ## it's a CGI
script_name=$(echo "$selector" | cut -d "?" -f 1) script_name=$(echo "$selector" | cut -d "?" -f 1)
query_string=$(echo "$selector" | cut -d "?" -f 2) query_string=$(echo "$selector" | cut -d "?" -f 2)
[ "${script_name}" = "${query_string}" ] && query_string="" [ "${script_name}" = "${query_string}" ] && query_string=""
RP1=$(readlink -f "${GOPHERDIR}""${script_name}" || "") RP1=$(readlink -f "${GOPHERDIR}""${script_name}")
# shellcheck disable=SC2181 # shellcheck disable=SC2181
[ $? -eq 0 ] || invalid_selector "${selector}" [ $? -eq 0 ] || invalid_selector "${selector}"
RP2=$(readlink -f "${GOPHERDIR}")"${script_name}" RP2=$(readlink -f "${GOPHERDIR}")"${script_name}"
RP2=$(echo "${RP2}" | sed -r 's/\/+/\//g') RP2=$(echo "${RP2}" | sed -r 's:/+:/:g')
# shellcheck disable=SC2181 # shellcheck disable=SC2181
[ $? -eq 0 ] || invalid_selector "${selector}" [ $? -eq 0 ] || invalid_selector "${selector}"
[ -n "$DEBUG" ] && { [ -n "$DEBUG" ] && {
@ -278,7 +277,7 @@ case "$selector" in
;; ;;
/?*|"") /?*|"")
## it's a regular selector ## it's a regular selector
RP1=$(readlink -f "${GOPHERDIR}"/"${selector}" || "") RP1=$(readlink -f "${GOPHERDIR}"/"${selector}")
# shellcheck disable=SC2181 # shellcheck disable=SC2181
[ $? -eq 0 ] || invalid_selector "$selector" [ $? -eq 0 ] || invalid_selector "$selector"
RP2=$(readlink -f "${GOPHERDIR}")"${selector}" RP2=$(readlink -f "${GOPHERDIR}")"${selector}"
@ -312,4 +311,3 @@ case "$selector" in
invalid_selector "/" invalid_selector "/"
;; ;;
esac esac

Loading…
Cancel
Save