From 39318169e0b50551db511851829f9337c5fa6313 Mon Sep 17 00:00:00 2001 From: glenda Date: Sun, 15 Nov 2020 15:13:27 +0000 Subject: Import site to git --- bin/contrib/rc-httpd/handlers/cgi | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 bin/contrib/rc-httpd/handlers/cgi (limited to 'bin/contrib/rc-httpd/handlers/cgi') diff --git a/bin/contrib/rc-httpd/handlers/cgi b/bin/contrib/rc-httpd/handlers/cgi new file mode 100755 index 0000000..2c9a9b9 --- /dev/null +++ b/bin/contrib/rc-httpd/handlers/cgi @@ -0,0 +1,46 @@ +#!/bin/rc +fn filter_headers{ + response=(200 OK) + lines='' + done=false + while(~ $done false){ + line=`{getline} + head=`{echo $line | awk '{print tolower($1)}'} + if(~ $head status:*) + response=`{echo $line | awk '{$1="" ; print}'} + if not if(~ $line '') + done=true + if not + lines=$"lines^$"line^$cr^' +' + } + echo 'HTTP/1.1' $"response^$cr + echo -n $"lines + do_log $response(1) +} + +fn run_cgi { + path=$cgi_path exec $"cgi_bin $params || echo 'Status: 500' +} + +cgi_bin=$1 +cgi_dir=. +if(! ~ $#* 1) + cgi_dir=$*($#*) +if not if(~ $"cgi_bin /*){ + cgi_dir=`{basename -d $"cgi_bin} + cgi_dir=$"cgi_dir +} +if(! ~ $"cgi_bin */*) + cgi_bin=./$"cgi_bin +if(! builtin cd $"cgi_dir >[2]/dev/null || ! test -x $"cgi_bin){ + error 500 + exit +} + +run_cgi | { + filter_headers + emit_extra_headers + echo $cr + exec cat +} -- cgit v1.2.3