home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / test-cgi.cmd < prev    next >
OS/2 REXX Batch file  |  1995-04-20  |  3KB  |  111 lines

  1. /***************************************************************************
  2.  *  TEST-CGI.CMD - a REXX script to test CGI interface
  3.  *
  4.  *  Author:  Frankie Fan <kfan@netcom.com>  7/11/94
  5.  *
  6.  *  $Header$
  7.  *
  8.  *  $Log$
  9.  **************************************************************************/
  10. Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  11. Call SysLoadFuncs
  12.  
  13. Parse Arg Argv
  14.  
  15. env = "OS2ENVIRONMENT"
  16. vtab = ""
  17. lead = "<LI>"
  18. Argc = Words(Argv)
  19.  
  20. Say "Content-type: text/html"
  21. Say
  22.  
  23. Say "<H1>CGI/1.0 test script report:</H1>"  || vtab
  24.  
  25. method = value("REQUEST_METHOD",,env)
  26.  
  27. Say "<UL>"
  28.  
  29. Say lead || "argc = " Argc || vtab
  30. Say lead || "argv = " Argv || vtab
  31. Say lead || "SERVER_SOFTWARE = " value("SERVER_SOFTWARE",,env) || vtab
  32. Say lead || "SERVER_NAME = " value("SERVER_NAME",,env) || vtab
  33. Say lead || "GATEWAY_INTERFACE = " value("GATEWAY_INTERFACE",,env) || vtab 
  34. Say lead || "SERVER_PROTOCOL = " value("SERVER_PROTOCOL",,env) || vtab 
  35. Say lead || "SERVER_PORT = " value("SERVER_PORT",,env) || vtab
  36. Say lead || "REQUEST_METHOD = " method || vtab 
  37. Say lead || "HTTP_USER_AGENT = " value("HTTP_USER_AGENT",,env) || vtab 
  38. Say lead || "HTTP_ACCEPT = " value("HTTP_ACCEPT",,env) || vtab 
  39. Say lead || "PATH_INFO = " value("PATH_INFO",,env) || vtab 
  40. Say lead || "PATH_TRANSLATED = " value("PATH_TRANSLATED",,env) || vtab 
  41. Say lead || "SCRIPT_NAME = " value("SCRIPT_NAME",,env) || vtab 
  42. Say lead || "QUERY_STRING = " value("QUERY_STRING",,env) || vtab 
  43. Say lead || "REMOTE_HOST = " value("REMOTE_HOST",,env) || vtab 
  44. Say lead || "REMOTE_ADDR = " value("REMOTE_ADDR",,env) || vtab 
  45. Say lead || "REMOTE_USER = " value("REMOTE_USER",,env) || vtab 
  46. Say lead || "AUTH_TYPE = " value("AUTH_TYPE",,env) || vtab 
  47. Say lead || "CONTENT_TYPE = " value("CONTENT_TYPE",,env) || vtab
  48. len = value("CONTENT_LENGTH",,env)
  49. Say lead || "CONTENT_LENGTH = " || len || vtab   
  50.  
  51.  
  52. if (method == "GET") Then Do
  53.    query_string = value("QUERY_STRING",,env)
  54. end
  55.  
  56. If (method == "POST") & (len \= "") Then Do
  57.   /* use POST method to pass parameters */
  58.  
  59.   post_string = charin(,,len) /* read only the number specified 
  60.                                  in CONTENT_LENGTH */
  61.  
  62.   Say vtab 
  63.   Say lead || "Standard Input = " || post_string || vtab
  64.   query_string = post_string
  65. End
  66.  
  67.    NF = ParseQueryString( query_string)
  68.    Say "<UL>"
  69.    do i = 1 to NFields
  70.       Say lead || Parms.Tag.i ' = ' Parms.XVal.i || vtab
  71.    end
  72.    Say "</UL>"
  73.  
  74. Say "</UL>"
  75. return
  76.  
  77.  
  78.     /* Do not modify below this line --  Important parsing code... */
  79. ParseQueryString: procedure expose Parms. NFields
  80.   Parse arg P
  81.   i = 1
  82.   do while ((P \= '') & (i < 10))
  83.      Parse var P Parms.Text.i '&' rest
  84.      Parse var Parms.Text.i Parms.Tag.i '=' Parms.KeyVal.i
  85.      Parms.Tag.i = translate( Parms.Tag.i)
  86.      Parms.XVal.i=DecodeKeyVal( Parms.KeyVal.i)
  87.      P = rest
  88.      i = i + 1
  89.   end
  90.   NFields = i - 1
  91.   return NFields
  92.  
  93. DecodeKeyVal: procedure
  94.   parse arg Code
  95.   Text=''
  96.   Code=translate(Code, ' ', '+')
  97.   rest='%'
  98.   do while (rest\='')
  99.      Parse var Code T '%' rest
  100.      Text=Text || T
  101.      if (rest\='') then
  102.       do
  103.         ch = left( rest,2)
  104.         c=X2C(ch)
  105.         Text=Text || c
  106.         Code=substr( rest, 3)
  107.       end
  108.   end
  109.   return Text
  110.  
  111.