home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spezial / SPEZIAL2_97.zip / SPEZIAL2_97.iso / ANWEND / ONLINE / SREFV12J / TEST-CGI.CMD < prev    next >
OS/2 REXX Batch file  |  1997-07-12  |  4KB  |  124 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.  
  16. env = "OS2ENVIRONMENT"
  17. vtab = ""
  18. lead = "<LI>"
  19. Argc = Words(Argv)
  20.  
  21. Say "Content-type: text/html"
  22. Say
  23.  
  24.  
  25. Say "<H1>CGI/1.0 test script report:</H1>"  || vtab
  26.  
  27. method = value("REQUEST_METHOD",,env)
  28.  
  29. Say "<UL>"
  30.  
  31. Say lead || "argc = " Argc || vtab
  32. Say lead || "argv = " Argv || vtab
  33. Say lead || "SERVER_SOFTWARE = " value("SERVER_SOFTWARE",,env) || vtab
  34. Say lead || "SERVER_NAME = " value("SERVER_NAME",,env) || vtab
  35. Say lead || "GATEWAY_INTERFACE = " value("GATEWAY_INTERFACE",,env) || vtab 
  36. Say lead || "SERVER_PROTOCOL = " value("SERVER_PROTOCOL",,env) || vtab 
  37. Say lead || "SERVER_PORT = " value("SERVER_PORT",,env) || vtab
  38. Say lead || "REQUEST_METHOD = " method || vtab 
  39. Say lead || "HTTP_USER_AGENT = " value("HTTP_USER_AGENT",,env) || vtab 
  40. Say lead || "HTTP_ACCEPT = " value("HTTP_ACCEPT",,env) || vtab 
  41. Say lead || "PATH_INFO = " value("PATH_INFO",,env) || vtab 
  42. Say lead || "PATH_TRANSLATED = " value("PATH_TRANSLATED",,env) || vtab 
  43. Say lead || "SCRIPT_NAME = " value("SCRIPT_NAME",,env) || vtab 
  44. Say lead || "QUERY_STRING = " value("QUERY_STRING",,env) || vtab 
  45. Say lead || "REMOTE_HOST = " value("REMOTE_HOST",,env) || vtab 
  46. Say lead || "REMOTE_ADDR = " value("REMOTE_ADDR",,env) || vtab 
  47. Say lead || "REMOTE_USER = " value("REMOTE_USER",,env) || vtab 
  48. Say lead || "AUTH_TYPE = " value("AUTH_TYPE",,env) || vtab 
  49. Say lead || "CONTENT_TYPE = " value("CONTENT_TYPE",,env) || vtab
  50. len = value("CONTENT_LENGTH",,env)
  51. Say lead || "CONTENT_LENGTH = " || len || vtab   
  52.  
  53. /* sre-filter add-ons */
  54. say lead ||"CALLER_THREAD = " value("CALLER_THREAD",,env) || ' <em>(SRE-Filter add-on </em>)'||vtab
  55. say lead ||"SERVER_PID = " value("SERVER_PID",,env) || ' <em>(SRE-Filter add-on </em>)'||vtab
  56.  
  57. say lead ||"SCRIPT_DIR = " value("SCRIPT_DIR",,env) || ' <em>(SRE-Filter add-on </em>)'|| vtab
  58. say lead ||"SERVER_ROOT = " value("SERVER_ROOT",,env) || ' <em>(SRE-Filter add-on </em>)'|| vtab
  59.  
  60. say lead ||"SREF_PRIVSET = " value("SREF_PRIVSET",,env) || ' <em>(SRE-Filter add-on </em>)'|| vtab
  61.  
  62. if (method == "GET") Then Do
  63.    query_string = value("QUERY_STRING",,env)
  64. end
  65.  
  66. If (method == "POST") & (len \= "") Then Do
  67.   /* use POST method to pass parameters */
  68.  
  69.   post_string = charin(,,len) /* read only the number specified 
  70.                                  in CONTENT_LENGTH */
  71.  
  72.   Say vtab 
  73.   Say lead || "Standard Input = " || post_string || vtab
  74.   query_string = post_string
  75. End
  76.  
  77.    NF = ParseQueryString( query_string)
  78.    Say "<UL>"
  79.    do i = 1 to NFields
  80.       Say lead || Parms.Tag.i ' = ' Parms.XVal.i || vtab
  81.    end
  82.    Say "</UL>"
  83.  
  84. Say "</UL>"
  85. say " "
  86. say " <br>Note: current process and thread are: " dospid()' 'dostid()
  87. say
  88. return
  89.  
  90.  
  91.     /* Do not modify below this line --  Important parsing code... */
  92. ParseQueryString: procedure expose Parms. NFields
  93.   Parse arg P
  94.   i = 1
  95.   do while ((P \= '') & (i < 10))
  96.      Parse var P Parms.Text.i '&' rest
  97.      Parse var Parms.Text.i Parms.Tag.i '=' Parms.KeyVal.i
  98.      Parms.Tag.i = translate( Parms.Tag.i)
  99.      Parms.XVal.i=DecodeKeyVal( Parms.KeyVal.i)
  100.      P = rest
  101.      i = i + 1
  102.   end
  103.   NFields = i - 1
  104.   return NFields
  105.  
  106. DecodeKeyVal: procedure
  107.   parse arg Code
  108.   Text=''
  109.   Code=translate(Code, ' ', '+')
  110.   rest='%'
  111.   do while (rest\='')
  112.      Parse var Code T '%' rest
  113.      Text=Text || T
  114.      if (rest\='') then
  115.       do
  116.         ch = left( rest,2)
  117.         c=X2C(ch)
  118.         Text=Text || c
  119.         Code=substr( rest, 3)
  120.       end
  121.   end
  122.   return Text
  123.  
  124.