|
|
|
@ -51,7 +51,7 @@ NETCAT="nc" |
|
|
|
|
## |
|
|
|
|
## NETCAT_OPTS: any additional options to netcat |
|
|
|
|
## |
|
|
|
|
NETCAT_OPTS="" |
|
|
|
|
NETCAT_OPTS="-v" |
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
## STYLE: The way in which netcat will talk to gosher_serve |
|
|
|
@ -94,20 +94,36 @@ if [ -z "${MYNAME#gosher}" ]; then |
|
|
|
|
echo "Wrong NETCAT -- Exiting" >&2 |
|
|
|
|
exit 2 |
|
|
|
|
} |
|
|
|
|
is_openbsd=$(echo "${NETCAT}" | grep -i "certfile") |
|
|
|
|
|
|
|
|
|
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}$$" |
|
|
|
|
[ "$STYLE" = "pipe" ] && { |
|
|
|
|
[ "$STYLE" = "pipe" -a -n "${is_openbsd}" ] && { |
|
|
|
|
echo "Genuine OpenBSD nc detected" >&2 |
|
|
|
|
mkfifo -m 600 "$INF" |
|
|
|
|
# shellcheck disable=SC2050 |
|
|
|
|
while :; do |
|
|
|
|
# shellcheck disable=SC2094 |
|
|
|
|
${GOSHER_SERVE} "${GOPHERDIR}" \ |
|
|
|
|
"${HOSTNAME}" "${PORT}" <"$INF" |\ |
|
|
|
|
${NETCAT} -vvvvv -l "${HOSTNAME}" "${PORT}" >"$INF" |
|
|
|
|
${NETCAT} ${NETCAT_OPTS} -l "${HOSTNAME}" "${PORT}" >"$INF" |
|
|
|
|
sleep 1 |
|
|
|
|
done |
|
|
|
|
rm -f $INF |
|
|
|
|
exit 0 |
|
|
|
|
} |
|
|
|
|
[ "$STYLE" = "pipe" -a -z "${is_openbsd}" ] && { |
|
|
|
|
echo "Other nc implementation detected" >&2 |
|
|
|
|
mkfifo -m 600 "$INF" |
|
|
|
|
# shellcheck disable=SC2050 |
|
|
|
|
while :; do |
|
|
|
|
# shellcheck disable=SC2094 |
|
|
|
|
${GOSHER_SERVE} "${GOPHERDIR}" \ |
|
|
|
|
"${HOSTNAME}" "${PORT}" <"$INF" |\ |
|
|
|
|
${NETCAT} ${NETCAT_OPTS} -l -p "${PORT}" >"$INF" |
|
|
|
|
sleep 1 |
|
|
|
|
done |
|
|
|
|
rm -f $INF |
|
|
|
@ -116,7 +132,7 @@ if [ -z "${MYNAME#gosher}" ]; then |
|
|
|
|
[ "$STYLE" = 'fork' ] && { |
|
|
|
|
# shellcheck disable=SC2050 |
|
|
|
|
while :; do |
|
|
|
|
${NETCAT} -vv -l -p "$PORT" -c \ |
|
|
|
|
${NETCAT} ${NETCAT_OPTS} -l -p "$PORT" -c \ |
|
|
|
|
"${GOSHER_SERVE} ${GOPHERDIR} ${HOSTNAME} ${PORT}" |
|
|
|
|
sleep 1 |
|
|
|
|
done |
|
|
|
|