home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / srev13h.zip / test-cgi.cmd < prev    next >
OS/2 REXX Batch file  |  1998-01-23  |  4KB  |  134 lines

  1. /***************************************************************************
  2.  *  TEST-CGI.CMD - a REXX script to test CGI interface
  3.  *
  4.  *  An sre-http adaptation of work by:   Frankie Fan <kfan@netcom.com>  7/11/94
  5.  *
  6.  **************************************************************************/
  7.  
  8. Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  9. Call SysLoadFuncs
  10.  
  11. Parse Arg Argv
  12.  
  13.  
  14. env = "OS2ENVIRONMENT"
  15. vtab = ""
  16. lead = "<LI>"
  17. Argc = Words(Argv)
  18.  
  19. Say "Content-type: text/html"
  20. Say
  21.  
  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 || "HTTP_REFERER = " value("HTTP_REFERER",,env) || vtab 
  40. Say lead || "PATH_INFO = " value("PATH_INFO",,env) || vtab 
  41. Say lead || "PATH_TRANSLATED = " value("PATH_TRANSLATED",,env) || vtab 
  42. Say lead || "SCRIPT_NAME = " value("SCRIPT_NAME",,env) || vtab 
  43. Say lead || "QUERY_STRING = " value("QUERY_STRING",,env) || vtab 
  44. Say lead || "REMOTE_HOST = " value("REMOTE_HOST",,env) || vtab 
  45. Say lead || "REMOTE_ADDR = " value("REMOTE_ADDR",,env) || vtab 
  46. Say lead || "REMOTE_USER = " value("REMOTE_USER",,env) || vtab 
  47. Say lead || "AUTH_TYPE = " value("AUTH_TYPE",,env) || vtab 
  48. Say lead || "CONTENT_TYPE = " value("CONTENT_TYPE",,env) || vtab
  49. len = value("CONTENT_LENGTH",,env)
  50. Say lead || "CONTENT_LENGTH = " || len || vtab   
  51.  
  52. /* sre-http add-ons */
  53. say lead ||"CALLER_THREAD = " value("CALLER_THREAD",,env) || ' <em>(SRE-Http add-on </em>)'||vtab
  54. say lead ||"SERVER_PID = " value("SERVER_PID",,env) || ' <em>(SRE-Http add-on </em>)'||vtab
  55.  
  56. Say lead || "DOCUMENT_ROOT = " value("DOCUMENT_ROOT",,env) || ' <em>(SRE-Http add-on </em>)'||vtab
  57.  
  58. say lead ||"SCRIPT_DIR = " value("SCRIPT_DIR",,env) || ' <em>(SRE-Http add-on </em>)'|| vtab
  59. say lead ||"SERVER_ROOT = " value("SERVER_ROOT",,env) || ' <em>(SRE-Http add-on </em>)'|| vtab
  60.  
  61. say lead ||"SREF_PRIVSET = " value("SREF_PRIVSET",,env) || ' <em>(SRE-Http add-on </em>)'|| vtab
  62.  
  63. if (method == "GET") Then Do
  64.    query_string = value("QUERY_STRING",,env)
  65. end
  66.  
  67. If (method == "POST") & (len \= "") Then Do
  68.   /* use POST method to pass parameters */
  69.  
  70.   post_string = charin(,,len) /* read only the number specified 
  71.                                  in CONTENT_LENGTH */
  72.  
  73.   Say vtab 
  74.   Say lead || "Standard Input = " || post_string || vtab
  75.   query_string = post_string
  76. End
  77.  
  78.    NF = ParseQueryString( query_string)
  79.    Say "<UL>"
  80.    do i = 1 to NFields
  81.       Say lead || Parms.Tag.i ' = ' Parms.XVal.i || vtab
  82.    end
  83.    Say "</UL>"
  84.  
  85. Say "</UL>"
  86. say " "
  87. say " <br>Note: current process and thread are: " dospid()' 'dostid()
  88. say
  89. return
  90.  
  91.  
  92.     /* Do not modify below this line --  Important parsing code... */
  93. ParseQueryString: procedure expose Parms. NFields
  94.   Parse arg P
  95.   i = 1
  96.   do while ((P \= '') & (i < 10))
  97.      Parse var P Parms.Text.i '&' rest
  98.      Parse var Parms.Text.i Parms.Tag.i '=' Parms.KeyVal.i
  99.      Parms.Tag.i = translate( Parms.Tag.i)
  100.      Parms.XVal.i=DecodeKeyVal( Parms.KeyVal.i)
  101.      P = rest
  102.      i = i + 1
  103.   end
  104.   NFields = i - 1
  105.   return NFields
  106.  
  107. /************************************************/
  108. /* procedure from TEST-CGI.CMD, modified by daniel hellerstein 12/97,
  109. from code by  Frankie Fan <kfan@netcom.com>  7/11/94 */
  110. DecodeKeyVal: procedure
  111.   parse arg Code
  112.   Text=''
  113.   Code=translate(Code, ' ', '+')
  114.   rest='%'
  115.   do while (rest\='')
  116.      Parse var Code T '%' rest
  117.      Text=Text || T
  118.      if (rest\='' ) then
  119.       do
  120.         ch = left( rest,2)
  121.         if verify(ch,'01234567890ABCDEF')=0 then
  122.            c=X2C(ch)
  123.         else
  124.            c=ch
  125.         Text=Text || c
  126.         Code=substr( rest, 3)
  127.       end
  128.   end
  129.   return Text
  130.  
  131.  
  132.  
  133.  
  134.