Shell CGI
来源:互联网 发布:域名服务器机型 编辑:程序博客网 时间:2024/06/15 20:59
#!/bin/sh## Process input to a CGI script. Written and Copyright 1995 Frank Pilhofer# You may freely use and distribute this code free of charge provided that# this copyright notice remains. fp@informatik.uni-frankfurt.de## All variables in here are prefixed by _F_, so you shouldn't have# any conflicts with your own var names## get query string. if $REQUEST_METHOD is "POST", then it must be read# from stdin, else it's in $QUERY_STRING#if [ ${DEBUG:-0} -eq 1 ] ; thenecho --Program Starts-- 1>&2fi#if [ "$REQUEST_METHOD" = "POST" ] ; then_F_QUERY_STRING=`dd count=$CONTENT_LENGTH bs=1 2> /dev/null`"&"if [ "$QUERY_STRING" != "" ] ; then_F_QUERY_STRING="$_F_QUERY_STRING""$QUERY_STRING""&"fiif [ ${DEBUG:-0} -eq 1 ] ; thenecho --Posted String-- 1>&2fielse_F_QUERY_STRING="$QUERY_STRING""&"if [ ${DEBUG:-0} -eq 1 ] ; thenecho --Query String-- 1>&2fifiif [ ${DEBUG:-0} -eq 1 ] ; then( echo " " $_F_QUERY_STRING echo --Adding Arguments-- ) 1>&2fi## if there are arguments, use them as well.#for _F_PAR in $* ; do_F_QUERY_STRING="$_F_QUERY_STRING""$_F_PAR""&"if [ ${DEBUG:-0} -eq 1 ] ; thenecho " " arg $_F_PAR 1>&2fidoneif [ ${DEBUG:-0} -eq 1 ] ; then( echo --With Added Arguments-- echo " " $_F_QUERY_STRING ) 1>&2fi## if $PATH_INFO is not empty and contains definitions '=', append it as well.# but replace slashes by ampersands#if echo $PATH_INFO | grep = > /dev/null ; then_F_PATH_INFO="$PATH_INFO""//"if [ ${DEBUG:-0} -eq 1 ] ; then( echo --Adding Path Info-- echo " " $_F_PATH_INFO ) 1>&2fiwhile [ "$_F_PATH_INFO" != "" -a "$_F_PATH_INFO" != "/" ] ; do_F_QUERY_STRING="$_F_QUERY_STRING""`echo $_F_PATH_INFO | cut -d / -f 1`""&"_F_PATH_INFO=`echo $_F_PATH_INFO | cut -s -d / -f 2-`donefi## append another '&' to fool some braindead cut implementations. Test yours:# echo 'i am braindead!' | cut -d '!' -f 2#_F_QUERY_STRING="$_F_QUERY_STRING""&"#if [ ${DEBUG:-0} -eq 1 ] ; then( echo --Final Query String-- echo " " $_F_QUERY_STRING ) 1>&2fi#while [ "$_F_QUERY_STRING" != "" -a "$_F_QUERY_STRING" != "&" ] ; do_F_VARDEF=`echo $_F_QUERY_STRING | cut -d \& -f 1`#_F_QUERY_STRING=`echo $_F_QUERY_STRING | cut -d \& -f 2-`_F_VAR=`echo $_F_VARDEF | cut -d = -f 1`_F_VAL=`echo "$_F_VARDEF""=" | cut -d = -f 2`## Workaround for more braindead cut implementations that strip delimiters# at the end of the line (i.e. HP-UX 10)#if echo $_F_QUERY_STRING | grep -c \& > /dev/null ; then_F_QUERY_STRING=`echo $_F_QUERY_STRING | cut -d \& -f 2-`else_F_QUERY_STRING=""fiif [ ${DEBUG:-0} -eq 1 ] ; then( echo --Got Variable-- echo " " var=$_F_VAR echo " " val=$_F_VAL echo " " rem=$_F_QUERY_STRING ) 1>&2fiif [ "$_F_VAR" = "" ] ; thencontinuefi## replace '+' by spaces#_F_VAL="$_F_VAL""++"_F_TMP=while [ "$_F_VAL" != "" -a "$_F_VAL" != "+" -a "$_F_VAL" != "++" ] ; do_F_TMP="$_F_TMP""`echo $_F_VAL | cut -d + -f 1`"_F_VAL=`echo $_F_VAL | cut -s -d + -f 2-`if [ "$_F_VAL" != "" -a "$_F_VAL" != "+" ] ; then_F_TMP="$_F_TMP"" "fidoneif [ ${DEBUG:-0} -eq 1 ] ; thenecho " " vrs=$_F_TMP 1>&2fi## replace '%XX' by ascii character. the hex sequence MUST BE uppercase#_F_TMP="$_F_TMP""%%"_F_VAL=while [ "$_F_TMP" != "" -a "$_F_TMP" != "%" ] ; do_F_VAL="$_F_VAL""`echo $_F_TMP | cut -d % -f 1`"_F_TMP=`echo $_F_TMP | cut -s -d % -f 2-`if [ "$_F_TMP" != "" -a "$_F_TMP" != "%" ] ; thenif [ ${DEBUG:-0} -eq 1 ] ; thenecho " " got hex "%" $_F_TMP 1>&2fi_F_HEX=`echo $_F_TMP | cut -c 1-2 | tr "abcdef" "ABCDEF"`_F_TMP=`echo $_F_TMP | cut -c 3-`## can't handle newlines anyway. replace by space##if [ "$_F_HEX" = "0A" ] ; then#_F_HEX="20"#fi_F_VAL="$_F_VAL""`/bin/echo '\0'\`echo "16i8o"$_F_HEX"p" | dc\``"fidone## replace forward quotes to backward quotes, since we have trouble handling# the former ones.#_F_VAL=`echo $_F_VAL | tr "'" '\`'`## if debug, send variables to stderr#if [ ${DEBUG:-0} -eq 1 ] ; then( echo --Final Assignment-- echo "FORM_$_F_VAR"=\'$_F_VAL\' ) 1>&2fi#/bin/echo "FORM_$_F_VAR"=\'$_F_VAL\'/bin/echo "FORM_$_F_VAR"="'"$_F_VAL"'"done#if [ ${DEBUG:-0} -eq 1 ] ; thenecho done. 1>&2fi## done.#exit 0
0 0
- Shell CGI
- shell之cgi编程
- shell写cgi脚本
- 使用shell脚本编写cgi
- 用shell写cgi 打开mjpg-streamer
- 教你用shell写CGI程序
- Using shell scripts for CGI in lighttpd
- 一个解析cgi参数的SHELL脚本
- Linux C代码实现cgi shell
- Processing Form Data in Shell CGI Scripts
- shell编写简单的CGI脚本
- Tomcat 支持 shell 脚本运行(CGI)
- CGI
- CGI
- CGI
- cgi
- CGI
- cgi
- 图像处理、模式识别、模式分类、机器视觉推荐图书汇总
- google Map的总结
- Context与Activity/Service/Application
- 自定义JSP中的Taglib标签之五自定义标签之SimpleTagSupport使用
- XCode 7.2 下安装Alcatraz
- Shell CGI
- ios手势识别(敲击,捏合,拖拽,轻扫,旋转,长按)
- jQuery之ajax编程
- 正则表达式
- 免费的编程中文书籍索引
- 程序员面试宝典1
- 自定义JSP中的Taglib标签之六Taglib中常用的属性值与tld常用标签简介与web.xml设置自定义标签的uri
- 一键开启tomcat和mysql服务程序
- Android 代码混淆总结