home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 July / PCWorld_2000-07_cd.bin / Komunik / sambar / _SETUP.1 / PBCgi.bas < prev    next >
BASIC Source File  |  1998-07-08  |  4KB  |  106 lines

  1. ' This program is for PowerBasic Console Compiler and was converted from
  2. ' the Delphi program named CGITEST which was by Dave Wedwick,
  3. ' Phoenix Transit System, June, 1997
  4.  
  5. ' Converted on June 1998 by David Martin, Ivy League Software
  6.  
  7. ' This tests the win-cgi capabilities of a web server.
  8.  
  9. ' The win-cgi programs receive three command line parameters.  These are
  10. ' filenames for interacting with the server.
  11.  
  12. ' The first parameter is the name of an INI file (doesn't have to be an 
  13. ' .INI file extension) containing information needed to process the request.
  14.  
  15. ' The second parameter is the name of a file containing data that was POSTed
  16. ' by a form.
  17.  
  18. ' The third parameter is the file to where output needs to go to return data
  19. ' to the web server.
  20.  
  21. ' This program simply reads the data from the file identified by the first
  22. ' command line parameter and writes it to the file identified by the third
  23. ' parameter.  Some HTML formatting is included in the output. Include this
  24. ' program in HTML Forms to see the results of submitting the form, etc.
  25.  
  26. FUNCTION PBMain ()
  27.  
  28.     ' If launched by the web server, there will be (at least) three
  29.     ' command line parameters.  If there aren't, assume that this is
  30.     ' being launched by the command line and show a usage message.
  31.  
  32.     CommandLine$ = COMMAND$
  33.  
  34.     IF PARSECOUNT ( CommandLine$ , ANY ", " ) < 3 THEN
  35.         ' This is for when someone runs it from the command line
  36.         CLS
  37.         STDOUT "This is a Win-CGI Test Program..."
  38.         STDOUT
  39.         STDOUT "This program tests the cgi-win capabilities of a web server."
  40.         STDOUT
  41.         STDOUT "To test, copy this executable to the cgi-win area of the web"
  42.         STDOUT "server and reference it via the web browser."
  43.         STDOUT
  44.         STDOUT "Example: HTTP:\\www.myserver.com\cgi-win\pbcgi.exe"
  45.         IF NOT CommandLine$ = "" THEN
  46.             STDOUT
  47.             STDOUT "The COMMAND$ was: ";
  48.             STDOUT CommandLine$
  49.             STDOUT "Which has" ;
  50.             STDOUT LTRIM$(STRING$(PARSECOUNT ( CommandLine$ , ANY ", " ),2)) ;
  51.             STDOUT "parameters"
  52.         END IF
  53.     ELSE
  54.         gIniFile$ = PARSE$( CommandLine$ , ANY ", " , 1 )
  55.         gInputFile$ = PARSE$( CommandLine$ , ANY ", " , 2 )
  56.         gOutputFile$ = PARSE$( CommandLine$ , ANY ", " , 3 )
  57.  
  58.         ' Open the third parameter for writing (output)
  59.         gOutputNum% = FREEFILE    
  60.       OPEN gOutputFile$ FOR BINARY AS #gOutputNum%
  61.     
  62.         ' Required header used by the server for processing
  63.       PUT$ #gOutputNum% , "HTTP/1.0 200 OK" + CHR$(13,10)
  64.       PUT$ #gOutputNum% , "Content-type: text/html" + CHR$(13,10) + CHR$(13,10)
  65.     
  66.         ' Useing builtin commands is easy
  67.       PUT$ #gOutputNum% , "The date & time at the server is " + DATE$ + " at " + TIME$
  68.     
  69.         ' Show what the three filenames are
  70.       PUT$ #gOutputNum% , "<H4>INI file is: " + gIniFile$ + _
  71.                                                 "<br>Input file is: " + gInputFile$ + _
  72.                                                 "<br>Output file is: " + gOutputFile$ + "</H4>"
  73.         ' Read INI file and write it back out to the Output file
  74.         gIniNum% = FREEFILE
  75.       OPEN gIniFile$ FOR BINARY AS #gIniNum%
  76.       PUT$ #gOutputNum% , "<HR><H1>Contents of INI file:</H1>"
  77.       PUT$ #gOutputNum% , "<PRE>" + CHR$(13,10)
  78.       WHILE NOT EOF(gIniNum%)
  79.             GET$ #gIniNum% , 4000 , TheLineIn$
  80.           PUT$ #gOutputNum% , TheLineIn$ + CHR$(13,10)
  81.       WEND
  82.       PUT$ #gOutputNum% , "</PRE>" + CHR$(13,10)
  83.       CLOSE #gIniNum%
  84.     
  85.         ' Read Input file and write it back out to the Output file
  86.         gInputNum% = FREEFILE
  87.       OPEN gInputFile$ FOR BINARY AS #gInputNum%
  88.       PUT$ #gOutputNum% , "<BR><HR><H1>Contents of INPUT file:</H1>"
  89.       PUT$ #gOutputNum% , "<PRE>" + CHR$(13,10)
  90.       WHILE NOT EOF(gInputNum%)
  91.             GET$ #gInputNum% , 4000 , TheLineIn$
  92.           PUT$ #gOutputNum% , TheLineIn$ + CHR$(13,10)
  93.       WEND
  94.       PUT$ #gOutputNum% , "</PRE>" + CHR$(13,10)
  95.       CLOSE #gInputNum%
  96.     
  97.       PUT$ #gOutputNum% , "<HR>"
  98.     
  99.       CLOSE #gOutputNum%
  100.     
  101.         ' We're done.  When this .EXE finishes, the web server
  102.         ' then processes the output file for the client.
  103.     END IF
  104.     
  105. END FUNCTION
  106.