]> git.plutz.net Git - confetti/blob - cgi.sh
676dbc581abcccf9a4da74c979b227e176fd5624
[confetti] / cgi.sh
1 #!/bin/zsh
2
3 declare -A _GET
4 declare -A _POST
5
6 cgi_get() {  # parse HTTP GET string
7   echo "$QUERY_STRING" |tr '&' '\n' |while read query; do
8     key="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\1:')"
9     val="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\2:')"
10     _GET["$key"]="$(echo -e "$(echo "$val" |sed 's:+: :g;s:%:\\x:g')")"
11   done
12   debug "$_GET"
13 }
14
15 cgi_post() {  # parse HTTP POST string
16   sed -u 1q |tr '&' '\n' |while read query; do
17     key="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\1:')"
18     val="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\2:')"
19     value="$(echo -e "$(echo "$val" |sed 's:+: :g;s:%:\\x:g')")"
20     if [ -n "$_POST[\"$key\"]" ]; then
21       n=0
22       while [ -n "$_POST[\"$key$n\"]" ]; do n=$(($n + 1)); done
23       _POST["$key$n"]="$value"
24     else
25       _POST["$key"]="$value"
26     fi
27     debug "post($key$n) => $value"
28   done
29   debug "$_POST"
30 }