#! /bin/bash -wT # (internal) routine to store POST data function cgi_get_POST_vars() { # check content type # FIXME: not sure if we could handle uploads with this.. #if [ "${CONTENT_TYPE}" != "application/x-www-form-urlencoded" ]; then # return #fi # save POST variables (only first time this is called) [ -z "$QUERY_STRING_POST" \ -a "$REQUEST_METHOD" = "POST" -a ! -z "$CONTENT_LENGTH" ] && \ read -n $CONTENT_LENGTH QUERY_STRING_POST #echo $QUERY_STRING_POST return } function cgi_decodevar() { local url_encoded="${1//+/ }" printf '%b' "${url_encoded//%/\\x}" } # routine to get variables from http requests # usage: cgi_getvars method varname1 [.. varnameN] # method is either GET or POST or BOTH # the magic varible name ALL gets everything function cgi_getvars() { [ $# -lt 2 ] && return local q="" p k v s # get query case $1 in GET) [ ! -z "${QUERY_STRING}" ] && q="${QUERY_STRING}&" ;; POST) cgi_get_POST_vars [ ! -z "${QUERY_STRING_POST}" ] && q="${QUERY_STRING_POST}&" ;; BOTH) [ ! -z "${QUERY_STRING}" ] && q="${QUERY_STRING}&" cgi_get_POST_vars [ ! -z "${QUERY_STRING_POST}" ] && q="${q}${QUERY_STRING_POST}&" ;; esac shift s=" $* " # parse the query data while [ ! -z "$q" ]; do p="${q%%&*}" # get first part of query string k="${p%%=*}" # get the key (variable name) from it v="${p#*=}" # get the value from it q="${q#$p&*}" # strip first part from query string # decode and evaluate var if requested [ "$1" = "ALL" -o "${s/ $k /}" != "$s" ] && \ eval "$k=\"$(cgi_decodevar $v | sed 's/[\"\\\$]/\\&/g')\"" done return } function debug() { /bin/cat < Test

Test for Bash CGI-Scripting

POST values from Standard-In

$(

Values

Auth: $AUTH
Method: $METHOD
id: $id
script: $script
redirect_uri: $redirect_uri

Environment

$(env)
&- #exec 2>&- # Una vez comprobado que el request es correcto, ejecutamos los comandos y liberamos la conexion nohup /bin/bash -c "./ogAgent.sh $id \"$script\" \"$redirect_uri\"" &>/dev/null &