From 5b25c5155312f626813e0d36b7933f5eba801dd2 Mon Sep 17 00:00:00 2001 From: Mitchell Riedstra Date: Fri, 29 Oct 2021 21:53:53 -0400 Subject: Major dotfile cleanup --- scripts/httpsvr | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100755 scripts/httpsvr (limited to 'scripts/httpsvr') diff --git a/scripts/httpsvr b/scripts/httpsvr new file mode 100755 index 0000000..ffc816a --- /dev/null +++ b/scripts/httpsvr @@ -0,0 +1,68 @@ +#!/bin/sh +# Stupid basic http server using OpenBSD netcat +set -e + +PORT="${PORT:-8900}" +ADDR="${ADDR:-127.0.0.1}" + +ncpid= + +send_index() { +cat < + + + + Netcat HTTP + + + Minimal HTTP server in posix SH and OpenBSD's netcat + + +EOF +} + +cleanup() { + set +e + kill "$ncpid" >/dev/null 2>&1 + rm "$_f" "$_inF" >/dev/null 2>&1 + exit 0 +} +trap cleanup EXIT INT + +while true ; do + _f="$(mktemp)" + + _inF="$(mktemp)" + rm -f "$_inF" + mkfifo "$_inF" + + #shellcheck disable=SC2002 + cat "$_inF" | nc -l "$ADDR" "$PORT" > "$_f" & # | tee /dev/fd/2 >"$_f" & + ncpid=$! + + counter=0 + while [ $counter -lt 100 ] || [ -s "$_f" ] ; do + if grep -qi "^Accept:" "$_f" ; then + pth="$(sed -nre 's@^GET ([^ ][^ ]*) HTTP/1.1.*@\1@gp' < "$_f")" + + echo "Request for path: $pth" + + case $pth in + /) send_index >"$_inF" ;; + esac + + break + fi + sleep .01 + [ -s "$_f" ] && counter=$((counter += 1)) + ps $ncpid >/dev/null 2>&1 || break + done + + kill $ncpid || echo "" + rm "$_f" "$_inF" +done -- cgit v1.2.3