home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 February / PCWorld_2001-02_cd.bin / Software / Vyzkuste / visirc / webserv.vsc < prev   
Text File  |  1996-12-22  |  3KB  |  90 lines

  1. // WEBSERV.VSC - Version 1.20
  2. // A skeletal web server written in ObjectViRCScript
  3.  
  4. Alias STARTWEBSERVER
  5.   @ $webform = $new(TTabbedForm)
  6.   With @p $webform.
  7.        Left = 20
  8.        Top = 300
  9.        Width = 600
  10.        Height = 120
  11.        FormStyle = fsStayOnTop
  12.        Caption = ObjectViRCScript Web Server Example
  13.        TabCaption = Web server
  14.        Visible = True
  15.   EndWith
  16.  
  17.   @ $webpanel = $new(TPanel ownedby $webform)
  18.   With @p $webpanel.
  19.        Height = 25
  20.        Align = alTop
  21.        BevelOuter = bvLowered
  22.        Caption = Listening for connections ...
  23.        Visible = True
  24.   EndWith
  25.  
  26.   @ $webedit = $new(TRichEdit ownedby $webform)
  27.   With @p $webedit.
  28.        Align = alClient
  29.        ReadOnly = True
  30.        Visible = True
  31.   EndWith
  32.  
  33.   @ $websocket = $new(TSockets ownedby $webform)
  34.   With @p $websocket.
  35.        Port = 80
  36.        OnSessionAvailable = WEBSOCKET_INCOMINGCONNECTION
  37.        OnDataAvailable = WEBSOCKET_DATA
  38.        OnSessionClosed = WEBSOCKET_CLOSE
  39.        OnErrorOccurred = Nop
  40.   EndWith
  41.  
  42.   @p $webform.OnClose = WEBSERVER_SHUTDOWN
  43.   @p $webform.OnResize = $webedit.Repaint
  44.  
  45.   $websocket.SListen
  46.  
  47.   TextOut > %$webedit clBlue *** Welcome to the \bViRC '96 web server\b example application.
  48. EndAlias
  49.  
  50. Alias WEBSOCKET_INCOMINGCONNECTION
  51.   $websocket.SAccept
  52.   @l $remoteip = $prop($websocket.RemoteIPAddr)
  53.   TextOut > %$webedit clGreen *** Accepting incoming connection from \b$remoteip\b
  54.   @p $webpanel.Caption = Connected to $remoteip.
  55. EndAlias
  56.  
  57. Alias WEBSOCKET_DATA
  58.   @l $x = $prop($websocket.Text)
  59.   Parse $upper($x)
  60.     if ([$0] == [GET])
  61.        ChDir $getpath(virc)
  62.        @ $webfile = $substr($1 2 9999)
  63.        if ($fileexists($webfile))
  64.           TextOut > %$webedit clBlue *** Processing request: \b$0 $1\b (success)
  65.           @l $i = $getlinesinfile($webfile)
  66.           for (@l $j = 1; $j <= $i; $j++)
  67.             $websocket.SendCRLF $readline($j $webfile)
  68.           endfor
  69.           $websocket.SClose
  70.        else
  71.           TextOut > %$webedit clBlue *** Processing request: \b$0 $1\b (failure)
  72.           $websocket.SendCRLF <HTML><H1>ViRC '96 - Web server error</H1><P>Cannot find file: <B>$webfile</B></P></HTML>
  73.           $websocket.SClose
  74.        endif
  75.     endif
  76.   EndParse
  77. EndAlias
  78.  
  79. Alias WEBSOCKET_CLOSE
  80.   @l $remoteip = $prop($websocket.RemoteIPAddr)
  81.   $websocket.SClose
  82.   TextOut > %$webedit clRed *** Connection closed: \b$remoteip\b
  83.   @p $webpanel.Caption = Disconnected from $remoteip, listening ...
  84. EndAlias
  85.  
  86. Alias WEBSERVER_SHUTDOWN
  87.   $websocket.SCancelListen
  88.   Destroy $webform
  89. EndAlias
  90.