X-Git-Url: http://git.plutz.net/?p=cgilite;a=blobdiff_plain;f=cgilite.sh;h=cac905ff6ace8ae929572c5ec8a9e69afbca54ad;hp=9f2eedc179227a21247578990955dcea1bb4befc;hb=83858b60dffca6249f763e89a3a49c323dd76331;hpb=d86724ff87cf2ed1245532a614dcaed697b26cb9 diff --git a/cgilite.sh b/cgilite.sh index 9f2eedc..cac905f 100755 --- a/cgilite.sh +++ b/cgilite.sh @@ -30,7 +30,7 @@ HEADER(){ # referencing HTTP_* environment variables. if [ -n "${cgilite_headers+x}" ]; then printf %s "$cgilite_headers" \ - | sed -rn 's;^'"${1}"': ([^\r]+)\r?$;\1;ip;q;' + | sed -rn 's;^'"${1}"': ([^\r]+)\r?$;\1;i; tX; d; :X;p;q;' else eval "printf %s \"\$HTTP_$(printf %s "${1}" |tr a-z A-Z |tr -c A-Z _)\"" fi @@ -49,7 +49,9 @@ HEX_DECODE(){ ')" } -if [ "$1" = '--inetd' -a -z "$REQUEST_METHOD" ]; then +if [ -z "$REQUEST_METHOD" -a -z "$SERVER_PROTOCOL" ]; then + # no webserver variables means we are running via inetd / ncat + # so use builtin web server REMOTE_ADDR="${TCPREMOTEIP:-$NCAT_REMOTE_ADDR}" SERVER_NAME="${TCPLOCALIP:-$NCAT_LOCAL_ADDR}" SERVER_PORT="${TCPLOCALPORT:-$NCAT_LOCAL_PORT}" @@ -60,13 +62,11 @@ if [ "$1" = '--inetd' -a -z "$REQUEST_METHOD" ]; then cgilite_headers="$(sed -u '/^\r\?$/q')" HTTP_CONTENT_LENGTH="$(HEADER Content-Length |grep -xE '[0-9]+')" - HTTP_COOKIE="$(HEADER Cookie)" export REMOTE_ADDR SERVER_NAME SERVER_PORT REQUEST_METHOD REQUEST_URI SERVER_PROTOCOL \ - PATH_INFO QUERY_STRING HTTP_CONTENT_LENGTH HTTP_COOKIE + PATH_INFO QUERY_STRING HTTP_CONTENT_LENGTH - . "$0" |sed '1{s;^Status: ;HTTP/1.0 ;; t; iHTTP/1.0 200 OK\r - }' + . "$0" |sed '1{s;^Status: ;HTTP/1.0 ;; t; s;^;HTTP/1.0 200 OK\r\n;;}' exit $? fi