home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 27 / IOPROG_27.ISO / SOFT / HTTPSER.ZIP / HTSTST.FOR (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1996-11-14  |  23.0 KB  |  614 lines

  1. VERSION 4.00
  2. Begin VB.Form frmHTTPSRTest 
  3.    Caption         =   "HTTP Server Test"
  4.    ClientHeight    =   7695
  5.    ClientLeft      =   1320
  6.    ClientTop       =   1545
  7.    ClientWidth     =   6780
  8.    Height          =   8100
  9.    Left            =   1260
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   7695
  12.    ScaleWidth      =   6780
  13.    Top             =   1200
  14.    Width           =   6900
  15.    Begin VB.CommandButton btnClear 
  16.       Caption         =   "Clear Log"
  17.       Height          =   375
  18.       Left            =   1800
  19.       TabIndex        =   11
  20.       Top             =   3000
  21.       Width           =   975
  22.    End
  23.    Begin VB.TextBox txtPort 
  24.       Height          =   285
  25.       Left            =   3240
  26.       TabIndex        =   6
  27.       Text            =   "81"
  28.       Top             =   1680
  29.       Width           =   1695
  30.    End
  31.    Begin VB.TextBox txtMax 
  32.       Height          =   285
  33.       Left            =   3240
  34.       TabIndex        =   5
  35.       Text            =   "100"
  36.       Top             =   1320
  37.       Width           =   1695
  38.    End
  39.    Begin VB.TextBox txtPortDefault 
  40.       Height          =   285
  41.       Left            =   3240
  42.       TabIndex        =   9
  43.       Text            =   "82"
  44.       Top             =   2520
  45.       Width           =   1695
  46.    End
  47.    Begin VB.TextBox txtMaxDefault 
  48.       Height          =   285
  49.       Left            =   3240
  50.       TabIndex        =   8
  51.       Text            =   "100"
  52.       Top             =   2160
  53.       Width           =   1695
  54.    End
  55.    Begin VB.CommandButton btnDefault 
  56.       Caption         =   "Start"
  57.       Height          =   375
  58.       Left            =   5160
  59.       TabIndex        =   10
  60.       Top             =   2280
  61.       Width           =   975
  62.    End
  63.    Begin VB.CommandButton btnManual 
  64.       Caption         =   "Start"
  65.       Height          =   375
  66.       Left            =   5160
  67.       TabIndex        =   7
  68.       Top             =   1440
  69.       Width           =   975
  70.    End
  71.    Begin VB.CommandButton btnProxy 
  72.       Caption         =   "Start"
  73.       Height          =   375
  74.       Left            =   5160
  75.       TabIndex        =   4
  76.       Top             =   240
  77.       Width           =   975
  78.    End
  79.    Begin VB.TextBox txtPortProxy 
  80.       Height          =   285
  81.       Left            =   3240
  82.       TabIndex        =   2
  83.       Text            =   "80"
  84.       Top             =   480
  85.       Width           =   1695
  86.    End
  87.    Begin VB.TextBox txtProxy 
  88.       Height          =   285
  89.       Left            =   3240
  90.       TabIndex        =   3
  91.       Top             =   840
  92.       Width           =   2775
  93.    End
  94.    Begin VB.TextBox txtLog 
  95.       Height          =   4095
  96.       Left            =   120
  97.       MultiLine       =   -1  'True
  98.       ScrollBars      =   2  'Vertical
  99.       TabIndex        =   12
  100.       Top             =   3480
  101.       Width           =   6495
  102.    End
  103.    Begin VB.TextBox txtMaxProxy 
  104.       Height          =   285
  105.       Left            =   3240
  106.       TabIndex        =   1
  107.       Text            =   "100"
  108.       Top             =   120
  109.       Width           =   1695
  110.    End
  111.    Begin HTTPSRLib.HTTPSR HTTPSRDefault 
  112.       Left            =   240
  113.       Top             =   2400
  114.       _ExtentX        =   741
  115.       _ExtentY        =   741
  116.       Blocking        =   0   'False
  117.       SleepTime       =   10
  118.       ListenPort      =   0
  119.       MaxConnections  =   100
  120.       DefaultDocument =   "index.htm"
  121.       RootDirectory   =   "c:\netmanag.32\webdocs"
  122.    End
  123.    Begin HTTPSRLib.HTTPSR HTTPSRManual 
  124.       Left            =   360
  125.       Top             =   1680
  126.       _ExtentX        =   741
  127.       _ExtentY        =   741
  128.       Blocking        =   0   'False
  129.       SleepTime       =   10
  130.       ListenPort      =   0
  131.       MaxConnections  =   100
  132.       DefaultDocument =   "index.htm"
  133.       RootDirectory   =   "c:\netmanag.32\webdocs"
  134.    End
  135.    Begin HTTPSRLib.HTTPSR HTTPSRProxy 
  136.       Left            =   120
  137.       Top             =   600
  138.       _ExtentX        =   741
  139.       _ExtentY        =   741
  140.       Blocking        =   0   'False
  141.       SleepTime       =   10
  142.       ListenPort      =   0
  143.       MaxConnections  =   100
  144.       DefaultDocument =   "index.htm"
  145.       RootDirectory   =   "c:\netmanag.32\webdocs"
  146.    End
  147.    Begin VB.Label Label7 
  148.       Caption         =   "Server Port:"
  149.       Height          =   255
  150.       Left            =   1200
  151.       TabIndex        =   22
  152.       Top             =   1680
  153.       Width           =   1935
  154.    End
  155.    Begin VB.Label Label6 
  156.       Caption         =   "Max Connections:"
  157.       Height          =   255
  158.       Left            =   1200
  159.       TabIndex        =   21
  160.       Top             =   1320
  161.       Width           =   1815
  162.    End
  163.    Begin VB.Label Label3 
  164.       Caption         =   "Server Port:"
  165.       Height          =   255
  166.       Left            =   1200
  167.       TabIndex        =   20
  168.       Top             =   2520
  169.       Width           =   1935
  170.    End
  171.    Begin VB.Label Label8 
  172.       Caption         =   "Max Connections:"
  173.       Height          =   255
  174.       Left            =   1200
  175.       TabIndex        =   19
  176.       Top             =   2160
  177.       Width           =   1815
  178.    End
  179.    Begin VB.Label Label11 
  180.       Caption         =   "Default"
  181.       BeginProperty Font 
  182.          name            =   "MS Sans Serif"
  183.          charset         =   0
  184.          weight          =   700
  185.          size            =   12
  186.          underline       =   0   'False
  187.          italic          =   0   'False
  188.          strikethrough   =   0   'False
  189.       EndProperty
  190.       Height          =   255
  191.       Left            =   120
  192.       TabIndex        =   18
  193.       Top             =   2160
  194.       Width           =   975
  195.    End
  196.    Begin VB.Label Label10 
  197.       Caption         =   "Manual"
  198.       BeginProperty Font 
  199.          name            =   "MS Sans Serif"
  200.          charset         =   0
  201.          weight          =   700
  202.          size            =   12
  203.          underline       =   0   'False
  204.          italic          =   0   'False
  205.          strikethrough   =   0   'False
  206.       EndProperty
  207.       Height          =   255
  208.       Left            =   120
  209.       TabIndex        =   17
  210.       Top             =   1320
  211.       Width           =   975
  212.    End
  213.    Begin VB.Label Label9 
  214.       Caption         =   "Proxy"
  215.       BeginProperty Font 
  216.          name            =   "MS Sans Serif"
  217.          charset         =   0
  218.          weight          =   700
  219.          size            =   12
  220.          underline       =   0   'False
  221.          italic          =   0   'False
  222.          strikethrough   =   0   'False
  223.       EndProperty
  224.       Height          =   255
  225.       Left            =   120
  226.       TabIndex        =   16
  227.       Top             =   120
  228.       Width           =   735
  229.    End
  230.    Begin VB.Label Label4 
  231.       Caption         =   "Log:"
  232.       Height          =   255
  233.       Left            =   120
  234.       TabIndex        =   15
  235.       Top             =   3000
  236.       Width           =   495
  237.    End
  238.    Begin VB.Line Line3 
  239.       X1              =   0
  240.       X2              =   6600
  241.       Y1              =   2880
  242.       Y2              =   2880
  243.    End
  244.    Begin VB.Line Line2 
  245.       X1              =   0
  246.       X2              =   6600
  247.       Y1              =   2040
  248.       Y2              =   2040
  249.    End
  250.    Begin VB.Line Line1 
  251.       X1              =   0
  252.       X2              =   6600
  253.       Y1              =   1200
  254.       Y2              =   1200
  255.    End
  256.    Begin HTTPCTLib.HTTP HTTPCT1 
  257.       Left            =   600
  258.       Top             =   600
  259.       _ExtentX        =   741
  260.       _ExtentY        =   741
  261.       Blocking        =   0   'False
  262.       SleepTime       =   10
  263.       RemoteHost      =   "127.0.0.1"
  264.       RemotePort      =   80
  265.       ConnectTimeout  =   0
  266.       RecvTimeout     =   0
  267.       NotificationMode=   1
  268.       Document        =   ""
  269.       Method          =   1
  270.    End
  271.    Begin VB.Label Label5 
  272.       Caption         =   "Server Port:"
  273.       Height          =   255
  274.       Left            =   1200
  275.       TabIndex        =   14
  276.       Top             =   480
  277.       Width           =   1935
  278.    End
  279.    Begin VB.Label Label2 
  280.       Caption         =   "HTTP Server:"
  281.       Height          =   255
  282.       Left            =   1200
  283.       TabIndex        =   13
  284.       Top             =   840
  285.       Width           =   1815
  286.    End
  287.    Begin VB.Label Label1 
  288.       Caption         =   "Max Connections:"
  289.       Height          =   255
  290.       Left            =   1200
  291.       TabIndex        =   0
  292.       Top             =   120
  293.       Width           =   1815
  294.    End
  295. Attribute VB_Name = "frmHTTPSRTest"
  296. Attribute VB_Creatable = False
  297. Attribute VB_Exposed = False
  298. Dim strPostData As String
  299. Sub EnumSessions(ByVal httpsr1 As HTTPSR)
  300.     Dim session1 As HTTPSRSession
  301.     Log "---Enumeration of Sessions, Count is: " & httpsr1.Sessions.Count
  302.     For Each session1 In httpsr1.Sessions
  303.         Log vbTab & session1.RemoteHostIP & "  " & session1.RemotePort & "  " & session1.StateString
  304.     Next
  305. End Sub
  306. Sub Log(ByVal str As String)
  307.     txtLog.SelText = vbCrLf & str
  308.     txtLog.SelStart = Len(txtLog)
  309. End Sub
  310. Sub StartServer(btn As CommandButton, max As Integer, port As Integer, httpsr1 As HTTPSR)
  311.     On Error Resume Next
  312.     If btn.Caption = "Start" Then
  313.         httpsr1.MaxConnections = max
  314.         httpsr1.ListenPort = port
  315.         httpsr1.Start
  316.         If (Err.Number > 0) Then
  317.             Log "Failed to start server on port : " & port & vbCrLf & vbTab & Err.Description
  318.         Else
  319.             Log "Started HTTP server at port : " & port
  320.             btn.Caption = "Stop"
  321.         End If
  322.     Else
  323.         httpsr1.Stop False
  324.         Log "Stopped HTTP server at port : " & port
  325.         btn.Caption = "Start"
  326.     End If
  327. End Sub
  328. Private Sub LogError(ByVal httpsr1 As HTTPSR, Number As Integer, Description As String)
  329.     Log "Server port: " & httpsr1.ListenPort & " Error event: " & Number & " " & Description
  330.     Dim error As icError
  331.     Dim errors As icErrors
  332.     Set errors = httpsr1.errors
  333.     If Not (errors Is Nothing) Then
  334.         If IsEmpty(errors.Source) Then
  335.             Log vbTab & "Errors.Source is empty"
  336.         Else
  337.             Log vbTab & "Errors Source: " & "Thread: " & errors.Source.ThreadID & _
  338.                 " Remote host: " & errors.Source.RemoteHostIP & " " & errors.Source.RemoteHostName
  339.         End If
  340.         For Each error In errors
  341.             Log vbTab & "Error type: " & error.Type & " " & error.Code & " " & _
  342.                     error.Description
  343.         Next
  344.     Else
  345.         Log vbTab & "Errors property is nothing!"
  346.     End If
  347. End Sub
  348. Private Sub btnClear_Click()
  349.     txtLog = ""
  350. End Sub
  351. Private Sub btnDefault_Click()
  352.     StartServer btnDefault, txtMaxDefault, txtPortDefault, HTTPSRDefault
  353. End Sub
  354. Private Sub btnManual_Click()
  355.     StartServer btnManual, txtMax, txtPort, HTTPSRManual
  356. End Sub
  357. Private Sub btnProxy_Click()
  358.     StartServer btnProxy, txtMaxProxy, txtPortProxy, HTTPSRProxy
  359. End Sub
  360. Private Sub Form_Load()
  361. ' start all servers
  362.     btnProxy_Click
  363.     btnManual_Click
  364.     btnDefault_Click
  365. End Sub
  366. Private Sub HTTPSRDefault_Accept(ByVal Session As Object, AcceptConnection As Boolean)
  367.     Log "Default server --- accept connection from " & Session.RemoteHostIP & " Port: " & Session.RemotePort
  368. End Sub
  369. Private Sub HTTPSRDefault_CloseAll()
  370.     Log "Default server --- all sessions are closed"
  371. End Sub
  372. Private Sub HTTPSRDefault_DocInput(ByVal Session As Object, ByVal DocInput As DocInput)
  373.     Log "Default server -- DocInput event: state = " & DocInput.State
  374. End Sub
  375. Private Sub HTTPSRDefault_DocOutput(ByVal Session As Object, ByVal DocOutput As DocOutput)
  376.     Log "Default server --- DocOutput event - state: " & DocOutput.State
  377. Dim data As Variant
  378.     If DocOutput.State = icDocBegin Then
  379.         strPostData = ""
  380.     ElseIf DocOutput.State = icDocHeaders Then
  381.         Dim hdr As DocHeader
  382.         For Each hdr In DocOutput.Headers
  383.             Log vbTab & hdr.Name & " : " & hdr.Value
  384.         Next
  385.     ElseIf DocOutput.State = icDocData Then
  386.         DocOutput.GetData data
  387.         strPostData = strPostData & data
  388.     ElseIf DocOutput.State = icDocEnd Then
  389.         Log vbTab & "Output data in file: " & DocOutput.filename
  390.         Log strPostData
  391.     End If
  392. End Sub
  393. Private Sub HTTPSRDefault_Error(Number As Integer, Description As String, Scode As Long, Source As String, HelpFile As String, HelpContext As Long, CancelDisplay As Boolean)
  394.     LogError HTTPSRDefault, Number, Description
  395. End Sub
  396. Private Sub HTTPSRDefault_RemoteHostName(ByVal Session As Object, ByVal Success As Boolean)
  397.     Log "Default server --- RemoteHostName event " & str(Success)
  398.     Log vbTab & "Session thread ID: " & Session.ThreadID & _
  399.         " RemoteHost: " & Session.RemoteHostIP & " " & Session.RemoteHostName
  400. End Sub
  401. Private Sub HTTPSRDefault_Request(ByVal Session As Object, EnableDefault As Boolean)
  402.         EnableDefault = True
  403.         Log "Default server -- Got request from :" & Session.RemoteHostIP & _
  404.             " Port: " & Session.RemotePort
  405.         Log vbTab & "Document: " & Session.Document
  406.         Log Session.RequestString
  407.         If Session.Method = prsPut Or Session.Method = prsPost Then ' POST and PUT
  408.             Session.DocOutput.filename = "c:\default.txt"
  409.         End If
  410. End Sub
  411. Private Sub HTTPSRDefault_StateChanged(ByVal Session As Object, ByVal State As Integer)
  412.     If State = prcConnected Then
  413.         Session.Timeout = 1 ' in seconds
  414.         Log "Default server --- new session from : " & Session.RemoteHostIP & _
  415.             " Port: " & Session.RemotePort & " Timeout(seconds): " & Session.Timeout
  416.     End If
  417.     Log "Default server --- session State changed to : " & Session.StateString
  418.     EnumSessions HTTPSRDefault
  419. End Sub
  420. Private Sub HTTPSRDefault_Timeout(ByVal Session As Object)
  421.     Log "Default server --- timeout"
  422.     Session.Close
  423. End Sub
  424. Private Sub HTTPSRProxy_Accept(ByVal Session As Object, AcceptConnection As Boolean)
  425.     Log "Proxy server --- accept connection from " & Session.RemoteHostIP & " Port: " & Session.RemotePort
  426. End Sub
  427. Private Sub HTTPSRProxy_CloseAll()
  428.     Log "Proxy server --- all sessions are closed"
  429. End Sub
  430. Private Sub HTTPSRProxy_DocInput(ByVal Session As Object, ByVal DocInput As DocInput)
  431.     Log "Proxy server -- DocInput event: state = " & DocInput.State
  432.     If DocInput.State = icDocHeaders Then
  433.         If Len(Session.ReplyString) = 0 Then  ' replystring hasn't been set
  434.             Session.ReplyString = httpct1.ReplyString
  435.         End If
  436.         Log vbTab & "Reply string: " & Session.ReplyString
  437.     ElseIf DocInput.State = icDocData Then
  438.         If Session.Method = prsHead Then  ' for HEAD
  439.             ' Chameleon HTTP server sends data even for HEAD request
  440. '            DocInput.SetData "" ' do not send data for HEAD request
  441.         End If
  442.     ElseIf DocInput.State = icDocEnd Then
  443.         Log vbTab & "BytesTransferred: " & DocInput.BytesTransferred
  444.         Session.DocInput.DocLink = Nothing  ' for doclink, must be here
  445.         httpct1.DocInput.DocLink = Nothing
  446.         If Len(Session.ReplyString) = 0 Then  ' didn't get headers notification
  447.             Session.ReplyString = "HTTP/1.0 404 Error in processing"
  448.             Session.ReplyDoc , "<BODY> Error in processing request, please return to home page</BODY>"
  449.         Else
  450.             Session.Close
  451.         End If
  452.         ' could result in partial data if default docstream implementation is used.
  453.         ' httpsr override ondata to fix docstream problem.
  454.     End If
  455. End Sub
  456. Private Sub HTTPSRProxy_DocOutput(ByVal Session As Object, ByVal DocOutput As DocOutput)
  457.     Log "Proxy server --- DocOutput event - state: " & DocOutput.State
  458. Dim data As Variant
  459.     If DocOutput.State = icDocBegin Then
  460.         strPostData = ""
  461.     ElseIf DocOutput.State = icDocHeaders Then
  462.         Dim hdr As DocHeader
  463.         For Each hdr In DocOutput.Headers
  464.             Log vbTab & hdr.Name & " : " & hdr.Value
  465.         Next
  466.     ElseIf DocOutput.State = icDocData Then
  467.         DocOutput.GetData data
  468.         strPostData = strPostData & data
  469.     ElseIf DocOutput.State = icDocEnd Then
  470.         Log vbTab & "Output data in file: " & DocOutput.filename
  471.         Log strPostData
  472.     End If
  473. End Sub
  474. Private Sub HTTPSRProxy_Error(Number As Integer, Description As String, Scode As Long, Source As String, HelpFile As String, HelpContext As Long, CancelDisplay As Boolean)
  475.     LogError HTTPSRProxy, Number, Description
  476. End Sub
  477. Private Sub HTTPSRProxy_RemoteHostName(ByVal Session As Object, ByVal Success As Boolean)
  478.     Log "Proxy server --- RemoteHostName event " & str(Success)
  479.     Log vbTab & "Session thread ID: " & Session.ThreadID & _
  480.         " RemoteHost: " & Session.RemoteHostIP & " " & Session.RemoteHostName
  481. End Sub
  482. Private Sub HTTPSRProxy_Request(ByVal Session As Object, EnableDefault As Boolean)
  483.         If (txtProxy.Text = "") Then
  484.             Log "ERROR: Please enter a HTTP Server"
  485.             'MsgBox "Please enter a HTTP Server"
  486.            Exit Sub
  487.         End If
  488.         EnableDefault = False
  489.         Log "Proxy server -- Got request from :" & Session.RemoteHostIP & _
  490.             " Port: " & Session.RemotePort
  491.         Log vbTab & "Document: " & Session.Document
  492.         Log Session.RequestString
  493.         
  494.         ' reset replystring
  495.         
  496.         Session.ReplyString = ""
  497.         If Session.Method = prsPut Or Session.Method = prsPost Then ' POST and PUT
  498.             Session.DocOutput.filename = "c:\proxy.txt"
  499.             httpct1.Method = Session.Method
  500.             Session.DocInput.DocLink = httpct1.DocOutput.DocLink
  501.             httpct1.DocInput.DocLink = Session.DocOutput.DocLink
  502.             Session.ReplyDoc
  503.             httpct1.SendDoc txtProxy.Text & Session.Document
  504.         Else  ' GET and HEAD
  505.             httpct1.Method = Session.Method
  506.             Session.DocInput.DocLink = httpct1.DocOutput.DocLink
  507.             Session.ReplyDoc
  508.             httpct1.GetDoc txtProxy.Text & Session.Document
  509.         End If
  510. End Sub
  511. Private Sub HTTPSRProxy_StateChanged(ByVal Session As Object, ByVal State As Integer)
  512.     If State = prcConnected Then
  513.         Session.Timeout = 1 ' in seconds
  514.         Log "Proxy server --- new session from : " & Session.RemoteHostIP & _
  515.             " Port: " & Session.RemotePort & " Timeout(seconds): " & Session.Timeout
  516.     End If
  517.     Log "Proxy server --- session State changed to : " & Session.StateString
  518.     EnumSessions HTTPSRProxy
  519. End Sub
  520. Private Sub HTTPSRProxy_Timeout(ByVal Session As Object)
  521.     Log "Proxy server --- timeout"
  522. '    Session.Close
  523. End Sub
  524. Private Sub HTTPSRManual_Accept(ByVal Session As Object, AcceptConnection As Boolean)
  525.     Log "Manual server --- accept connection from " & Session.RemoteHostIP & " Port: " & Session.RemotePort
  526. End Sub
  527. Private Sub HTTPSRManual_CloseAll()
  528.     Log "Manual server --- all sessions are closed"
  529. End Sub
  530. Private Sub HTTPSRManual_DocInput(ByVal Session As Object, ByVal DocInput As DocInput)
  531.     Log "Manual server -- DocInput event: state = " & DocInput.State
  532.     If DocInput.State = icDocData Then
  533.         If Session.Method = prsHead Then  ' for HEAD
  534.             DocInput.SetData "" ' do not send data for HEAD request
  535.         End If
  536.     ElseIf DocInput.State = icDocHeaders Then
  537.         If Len(Session.ReplyString) = 0 Then
  538.             Session.ReplyString = "HTTP/1.0 200 Document follows"
  539.         End If
  540.         Log vbTab & Session.ReplyString
  541.     ElseIf DocInput.State = icDocEnd Then
  542.         Log vbTab & "BytesTransferred: " & DocInput.BytesTransferred
  543.         If Len(Session.ReplyString) = 0 Then  ' no headers have been sent yet. something is wrong
  544.             Session.ReplyString = "HTTP/1.0 404 File not found"
  545.             Session.ReplyDoc , "<BODY> document is not found, return to home page</BODY>"
  546.         Else
  547.             Session.Close
  548.         End If
  549.         ' could result in partial data if default docstream implementation is used.
  550.         ' httpsr override ondata to fix docstream problem.
  551.     End If
  552. End Sub
  553. Private Sub HTTPSRManual_DocOutput(ByVal Session As Object, ByVal DocOutput As DocOutput)
  554.     Log "Manual server --- DocOutput event - state: " & DocOutput.State
  555. Dim data As Variant
  556.     If DocOutput.State = icDocBegin Then
  557.         strPostData = ""
  558.     ElseIf DocOutput.State = icDocHeaders Then
  559.         Dim hdr As DocHeader
  560.         For Each hdr In DocOutput.Headers
  561.             Log vbTab & hdr.Name & " : " & hdr.Value
  562.         Next
  563.     ElseIf DocOutput.State = icDocData Then
  564.         DocOutput.GetData data
  565.         strPostData = strPostData & data
  566.     ElseIf DocOutput.State = icDocEnd Then
  567.         Log vbTab & "Output data in file: " & DocOutput.filename
  568.         If Session.Method = prsPost Or Session.Method = prsPut Then
  569.             ' should integrate with CGI
  570.             Log strPostData
  571.             Session.ReplyDoc , "<BODY> Got post/put request, data is " & strPostData & "</BODY>"
  572.             Debug.Print Environ("REQUEST_METHOD")
  573.         Else ' GET, HEAD
  574.             If Session.Document = "/" Then
  575.                 Session.ReplyDoc , , HTTPSRManual.RootDirectory & "\" & HTTPSRManual.DefaultDocument  ' default HTML file
  576.             Else
  577.                 ' TODO: deal with subdirectory
  578.                 Session.ReplyDoc , , HTTPSRManual.RootDirectory & "\" & Right(Session.Document, Len(Session.Document) - 1)
  579.             End If
  580.         End If
  581.     End If
  582. End Sub
  583. Private Sub HTTPSRManual_Error(Number As Integer, Description As String, Scode As Long, Source As String, HelpFile As String, HelpContext As Long, CancelDisplay As Boolean)
  584.     LogError HTTPSRManual, Number, Description
  585. End Sub
  586. Private Sub HTTPSRManual_RemoteHostName(ByVal Session As Object, ByVal Success As Boolean)
  587.     Log "Manual server --- RemoteHostName event " & str(Success)
  588.     Log vbTab & "Session thread ID: " & Session.ThreadID & _
  589.         " RemoteHost: " & Session.RemoteHostIP & " " & Session.RemoteHostName
  590. End Sub
  591. Private Sub HTTPSRManual_Request(ByVal Session As Object, EnableDefault As Boolean)
  592.         EnableDefault = False
  593.         Log "Manual server -- Got request from :" & Session.RemoteHostIP & _
  594.             " Port: " & Session.RemotePort
  595.         Log vbTab & "Document: " & Session.Document
  596.         Log Session.RequestString
  597.         
  598.         Session.DocOutput.filename = "c:\manual.txt"
  599. End Sub
  600. Private Sub HTTPSRManual_StateChanged(ByVal Session As Object, ByVal State As Integer)
  601.     If State = prcConnected Then
  602.         Session.Timeout = 1 ' in seconds
  603.         Log "Manual server --- new session from : " & Session.RemoteHostIP & _
  604.             " Port: " & Session.RemotePort & " Timeout(seconds): " & Session.Timeout
  605.     End If
  606.     Log "Manual server --- session State changed to : " & Session.StateString
  607.     EnumSessions HTTPSRManual
  608. End Sub
  609. Private Sub HTTPSRManual_Timeout(ByVal Session As Object)
  610.     Log "Manual server --- timeout"
  611.     'Debug.Print "Manual server --- timeout"
  612. '    Session.Close
  613. End Sub
  614.