+++ /dev/null
-#!/bin/zsh
-
-# Copyright 2016 Paul Hänsch
-#
-# This file is part of shcgi.
-#
-# shcgi is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# shcgi is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with shcgi. If not, see <http://www.gnu.org/licenses/>.
-
-if [ "$1" = '--server' ]; then
- shift 1
- ncat -klc "$call --ncat" $@
- exit $?
-fi
-
-export REMOTE_ADDR="${NCAT_REMOTE_ADDR}"
-export SERVER_NAME="${NCAT_LOCAL_ADDR}"
-export SERVER_PORT="${NCAT_LOCAL_PORT}"
-
-eval $(
-sed -unr '
- w/dev/stderr
- /^(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 REQUEST_URI='\''&'\'';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
-'
-)
-
-HTTP_format(){
- LC_ALL=C sed -urn '
- :A
- /^\r?$/!{H;n;bA}
-
- g
- s;^(\r?\n)*;;;
- s;([^\r])\n;\1\r\n;g;
- aConnection: close\r\n\r
- /^Status: *[1-5][0-9][0-9] .*/{s;^Status: *;HTTP/1.1 ;; bX}
- s;^(.+\n)?Location: .*$;HTTP/1.1 302 Found\r\n&;
- s;^(.+\n)?Content-Type: .*$;HTTP/1.1 200 OK\r\n&;
-
- :X
- p
- $q
- n
- bX
- '
-}
-
-
-if [ -z "$QUERY_STRING" ]; then
- PATH_INFO="$(printf "$(printf %s "$PATH_INFO" |sed 's:+: :g;s:\\:\\\\:g;s:%:\\x:g')")"
- PATH_INFO="$(invalidate "${PATH_INFO}" '(^|.*/)\.\./.*' '')"
- [ -f "${treeroot:-${_DATA}}/$PATH_INFO" ] && . "$_EXEC/shcgi/static.sh" "${treeroot:-${_DATA}}/$PATH_INFO"
- exit 0
-fi |HTTP_format