export LC_ALL=C LANG=C
-# this program is supposed to be symlinked into a http root directory
-# we will use the http root as object storage (data directory) and call sub
-# programs from the directory in which the real executable resides
-# therefore we need to identify the code and data directories _EXEC and _DATA
-call="$0"
-real="$(readlink -f $call)"
-_DATA="$(dirname "$call")" #storage directory
-_EXEC="${real%/shcgi/index.cgi}" #execution directory
-
-. "$_EXEC/shcgi/misc.sh"
-
-# put debug options in the local.opts file
-. "$_EXEC/shcgi/debug.sh"
-[ -r "$_DATA/local.opts" ] && . "$_DATA/local.opts"
+if [ "$1" = '--ncat' ]; then
+ export REMOTE_ADDR="${NCAT_REMOTE_ADDR}"
+ export SERVER_NAME="${NCAT_LOCAL_ADDR}"
+ export SERVER_PORT="${NCAT_LOCAL_PORT}"
+else
+ # this program is supposed to be symlinked into a http root directory
+ # we will use the http root as object storage (data directory) and call sub
+ # programs from the directory in which the real executable resides
+ # therefore we need to identify the code and data directories _EXEC and _DATA
+ call="$0"
+ real="$(readlink -f $call)"
+ _DATA="$(dirname "$call")" #storage directory
+ _EXEC="${real%/shcgi/index.cgi}" #execution directory
+
+ . "$_EXEC/shcgi/misc.sh"
+
+ # put debug options in the local.opts file
+ . "$_EXEC/shcgi/debug.sh"
+ [ -r "$_DATA/local.opts" ] && . "$_DATA/local.opts"
+fi
+
+if [ "$1" = '--server' ]; then
+ shift 1
+ ncat -kle "$0 --ncat" $@
+ exit $?
+
+elif [ "$1" = '--inetd' -o "$1" = '--ncat' ]; then
+ eval $(
+ sed -nr '
+ /^(GET|HEAD|POST) ([^\?]*)\??(.+)? (HTTP\/[0-9]\.[0-9])\r?$/{
+ h
+ s;(GET|HEAD|POST) ([^\?]*)\??(.+)? (HTTP\/[0-9]\.[0-9])\r?$;export REQUEST_METHOD='\''\1'\'';p
+ g
+ s;(GET|HEAD|POST) ([^\?]*)\??(.+)? (HTTP\/[0-9]\.[0-9])\r?$;\2;
+ s;'\'';'\''\\'\'''\'';g
+ s;^.*$;export PATH_INFO='\''&'\'';p
+ g
+ s;(GET|HEAD|POST) ([^\?]*)\??(.+)? (HTTP\/[0-9]\.[0-9])\r?$;\3;
+ s;'\'';'\''\\'\'''\'';g
+ s;^.*$;export QUERY_STRING='\''&'\'';p
+ g
+ s;(GET|HEAD|POST) ([^\?]*)\??(.+)? (HTTP\/[0-9]\.[0-9])\r?$;export SERVER_PROTOCOL='\''\4'\'';p
+ g
+ }
+
+ /^[Pp][Rr][Oo][Xx][Yy]: /d
+
+ /^[a-zA-Z_-]+: .*$/{
+ h
+ s;^[^:]+: (.*)\r$;\1;
+ s;'\'';'\''\\'\'''\'';g
+ s;^.*$;'\''&'\'';
+ x
+ s;: .*$;;
+ y;abcdefghijklmnopqrstuvwxyz-;ABCDEFGHIJKLMNOPQRSTUVWXYZ_;
+ s;^.+$;export HTTP_&=;
+ G
+ s;\n;;
+ p
+ }
+ /^\r?$/q
+ '
+ )
+fi
. "$_EXEC/shcgi/cgi.sh"