added check of nc implementation

master
KatolaZ 7 years ago
parent 02f1dc94fd
commit e8292927e3
  1. 24
      gosher

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

Loading…
Cancel
Save