--- experimental/host/vb_net_test/nettest.frm 2001/02/23 10:29:16 1.4 +++ experimental/host/vb_net_test/nettest.frm 2001/02/23 17:51:07 1.18 @@ -1,182 +1,257 @@ VERSION 5.00 Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX" +Object = "{33155A3D-0CE0-11D1-A6B4-444553540000}#1.0#0"; "SysTray.ocx" Begin VB.Form Form1 BorderStyle = 3 'Fixed Dialog - Caption = "TCP/UDP Test program" + Caption = "i-scream Winhost" ClientHeight = 5655 ClientLeft = 45 ClientTop = 330 - ClientWidth = 5670 + ClientWidth = 4710 LinkTopic = "Form1" MaxButton = 0 'False MinButton = 0 'False ScaleHeight = 5655 - ScaleWidth = 5670 + ScaleWidth = 4710 ShowInTaskbar = 0 'False StartUpPosition = 3 'Windows Default - Begin VB.CommandButton Command3 - Caption = "TCP to Filter" + Begin VB.CommandButton Hide + Caption = "Hide Window" Height = 375 - Left = 3720 - TabIndex = 5 - Top = 2520 - Width = 1575 + Left = 3120 + TabIndex = 7 + Top = 840 + Width = 1455 End + Begin SysTray.SystemTray SystemTray + Left = 2160 + Top = 1800 + _ExtentX = 847 + _ExtentY = 847 + SysTrayText = "i-scream Winhost" + IconFile = 0 + End + Begin VB.Timer Timer1 + Left = 2760 + Top = 1800 + End Begin VB.TextBox Text4 - Height = 2535 + Height = 1575 Left = 240 MultiLine = -1 'True ScrollBars = 2 'Vertical - TabIndex = 4 + TabIndex = 1 Text = "nettest.frx":0000 Top = 3000 - Width = 5055 + Width = 3975 End - Begin VB.CommandButton Command2 - Caption = "TCP to FilterManager" + Begin VB.CommandButton Reconfigure + Caption = "Reconfigure with FilterManager" Height = 375 - Left = 3360 - TabIndex = 3 - Top = 2040 - Width = 1935 + Left = 120 + TabIndex = 0 + Top = 840 + Width = 2895 End - Begin MSWinsockLib.Winsock Winsock2 - Left = 4920 - Top = 120 + Begin MSWinsockLib.Winsock TCPSock + Left = 3720 + Top = 1800 _ExtentX = 741 _ExtentY = 741 _Version = 393216 End - Begin VB.CommandButton Command1 - Caption = "Send UDP" - Height = 375 - Left = 4320 - TabIndex = 2 - Top = 1560 - Width = 975 - End - Begin VB.TextBox Text1 - Height = 855 - Left = 360 - TabIndex = 0 - Text = "" - Top = 600 - Width = 4935 - End - Begin MSWinsockLib.Winsock Winsock1 - Left = 4320 - Top = 120 + Begin MSWinsockLib.Winsock UDPSock + Left = 3240 + Top = 1800 _ExtentX = 741 _ExtentY = 741 _Version = 393216 Protocol = 1 End + Begin VB.Label Label5 + Caption = "b e t a" + BeginProperty Font + Name = "MS Sans Serif" + Size = 24 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 615 + Left = 240 + TabIndex = 8 + Top = 120 + Width = 1815 + End + Begin VB.Label Label2 + Alignment = 1 'Right Justify + Caption = "Next heartbeat:" + Height = 255 + Left = 2400 + TabIndex = 6 + Top = 480 + Width = 1455 + End Begin VB.Label Label1 - Caption = "Packet contents" + Alignment = 1 'Right Justify + Caption = "Next UDP packet:" Height = 255 - Left = 360 - TabIndex = 1 - Top = 360 - Width = 2895 + Left = 2400 + TabIndex = 5 + Top = 120 + Width = 1455 End + Begin VB.Label Label4 + BorderStyle = 1 'Fixed Single + Caption = "0" + Height = 255 + Left = 3960 + TabIndex = 4 + Top = 480 + Width = 615 + End + Begin VB.Label Label3 + BorderStyle = 1 'Fixed Single + Caption = "0" + Height = 255 + Left = 3960 + TabIndex = 3 + Top = 120 + Width = 615 + End + Begin VB.Label Status + Alignment = 2 'Center + Caption = "Status:" + Height = 255 + Left = 0 + TabIndex = 2 + Top = 1320 + Width = 4695 + End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False +' For the system tray bits Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long Dim filterManagerHostname As String -Dim filterManagerTCPPort As Integer +Dim filterManagerTCPPort As Long +Dim seqNo As Long +Dim machineName As String + Dim filterHostname As String Dim filterTCPPort As Integer Dim filterUDPPort As Integer Dim fileList As String Dim lastModified As String +Dim UDPUpdateTime As Integer +Dim TCPUpdateTime As Integer + Dim protocolVersion As String Dim connected As Boolean -Dim responseNumber As Integer +'Dim CUpTime As New CUpTime -Private Sub Command1_Click() +Dim responseNumber As Integer - xml = "" - - ' Use the first winsock control to send a UDP packet. - Winsock1.RemoteHost = filterHostname - Winsock1.RemotePort = filterUDPPort - Winsock1.SendData xml - -End Sub - -Private Sub Command2_Click() - - ' establish a TCP connection to a filtermanager - Winsock2.Close - Winsock2.Connect filterManagerHostname, filterManagerTCPPort - -End Sub - -Private Sub Command3_Click() - ' establish a TCP connection to a filter - Winsock2.Close - Winsock2.Connect filterHostname, filterTCPPort -End Sub - Private Sub Form_Load() + protocolVersion = "1.1" + Status.Caption = "Loading" + 'Form1.Caption = "i-scream Winhost " & protocolVersion & " for " & GetVersion() + ''''TEMP - filterManagerHostname = "killigrew.ukc.ac.uk" - filterManagerTCPPort = 4567 - Exit Sub - ''' ENDTEMP + 'filterManagerHostname = "killigrew.ukc.ac.uk" + 'filterManagerTCPPort = 4567 + ''''' END TEMP + 'GoTo skip On Error GoTo iniError Dim buf As String * 256 Dim length As Long - length = GetPrivateProfileString("i-scream Winhost", "FilterManager", "", buf, Len(buf), App.Path & "winhost.ini") + length = GetPrivateProfileString("i-scream Winhost", "FilterManager", "", buf, Len(buf), App.Path & "/winhost.ini") filterManagerHostname = Left$(buf, length) - length = GetPrivateProfileString("i-scream Winhost", "FilterManagerPort", "", buf, Len(buf), App.Path & "winhost.ini") - filterManagerTCPPort = Left$(buf, length) + length = GetPrivateProfileInt("i-scream Winhost", "FilterManagerPort", 0, App.Path & "/winhost.ini") + filterManagerTCPPort = length +skip: + + Status.Caption = "Connecting to Filter Manager " & filterManagerHostname & ":" & filterManagerTCPPort + Reconfigure_Click + Form1.Show + SystemTray.Action = 0 + + Exit Sub iniError: - x = MsgBox("The i-scream Winhost could not read the correct settings from the winhost.ini file. Please correct these and try again.", 48, "Configuration not found") + x = MsgBox("The i-scream Winhost could not read the correct settings from the winhost.ini file. Please correct these and try again. " & Err.Description, 48, "Configuration not found") End End Sub -Private Sub Label2_Click() +Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) + x = MsgBox("Are you sure you want to shut down the Winhost? This will stop your computer sending information to the i-scream Central Monitoring System.", vbYesNo, "i-scream Winhost") + If x = 7 Then + Cancel = True + Else + SystemTray.Action = 2 + End If End Sub -Private Sub Winsock2_Connect() - - responseNumber = 0 +Private Sub Hide_Click() + Form1.Visible = False + SystemTray.Icon = Val(Form1.Icon) +End Sub + +Private Sub Reconfigure_Click() + ' establish a TCP connection to a filtermanager + connected = False + TCPSock.Close + TCPSock.Connect filterManagerHostname, filterManagerTCPPort +End Sub + + + +Private Sub SystemTray_MouseDblClk(ByVal Button As Integer) + + Form1.Visible = True + Form1.SetFocus + + +End Sub + +Private Sub TCPSock_Connect() + + responseNumber = 0 ' Send something as soon as we connect to the server. If connected = False Then ' contact the FilterManager - Winsock2.SendData "STARTCONFIG" & vbCrLf + TCPSock.SendData "STARTCONFIG" & vbCrLf Else ' Contact the Filter - Winsock2.SendData "HEARTBEAT" & vbCrLf + TCPSock.SendData "HEARTBEAT" & vbCrLf End If End Sub -Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long) +Private Sub TCPSock_DataArrival(ByVal bytesTotal As Long) responseNumber = responseNumber + 1 ' Get the line from the server. - Winsock2.GetData response, vbString, bytesTotal + TCPSock.GetData response, vbString, bytesTotal ' Remove linefeeds and returns from the line. response = Replace(response, Chr(13), "") @@ -189,24 +264,26 @@ Private Sub Winsock2_DataArrival(ByVal bytesTotal As L Select Case responseNumber Case 1: If Not response = "OK" Then GoTo configError - Winsock2.SendData "LASTMODIFIED" & vbCrLf + TCPSock.SendData "LASTMODIFIED" & vbCrLf Case 2: If response = "ERROR" Then GoTo configError lastModified = response - Winsock2.SendData "FILELIST" & vbCrLf + TCPSock.SendData "FILELIST" & vbCrLf Case 3: If response = "ERROR" Then GoTo configError fileList = response - Winsock2.SendData "UDPUpdateTime" & vbCrLf + TCPSock.SendData "UDPUpdateTime" & vbCrLf Case 4: If response = "ERROR" Then GoTo configError - Winsock2.SendData "TCPUpdateTime" & vbCrLf + UDPUpdateTime = response + TCPSock.SendData "TCPUpdateTime" & vbCrLf Case 5: If response = "ERROR" Then GoTo configError - Winsock2.SendData "ENDCONFIG" & vbCrLf + TCPUpdateTime = response + TCPSock.SendData "ENDCONFIG" & vbCrLf Case 6: If Not response = "OK" Then GoTo configError - Winsock2.SendData "FILTER" & vbCrLf + TCPSock.SendData "FILTER" & vbCrLf Case 7: 'we got a filter list here. readTo = 0 @@ -220,14 +297,17 @@ Private Sub Winsock2_DataArrival(ByVal bytesTotal As L response = Mid(response, readTo + 1, Len(response)) ' get TCP Port number filterTCPPort = response - Winsock2.SendData "END" & vbCrLf + TCPSock.SendData "END" & vbCrLf Case 8: If Not response = "OK" Then GoTo configError connected = True responseNumber = 0 - Winsock2.Close + TCPSock.Close Text4.Text = Text4.Text & vbCrLf & " " - x = MsgBox("got config okay") + Status.Caption = "Configuration successful" + Label3.Caption = UDPUpdateTime + Label4.Caption = TCPUpdateTime + Timer1.Interval = 1000 End Select Else ' Perform a heartbeat (1.1) @@ -235,20 +315,20 @@ Private Sub Winsock2_DataArrival(ByVal bytesTotal As L Select Case responseNumber Case 1: If Not response = "OK" Then GoTo heartbeatError - Winsock2.SendData "CONFIG" & vbCrLf + TCPSock.SendData "CONFIG" & vbCrLf Case 2: If Not response = "OK" Then GoTo heartbeatError - Winsock2.SendData fileList & vbCrLf + TCPSock.SendData fileList & vbCrLf Case 3: If Not response = "OK" Then GoTo heartbeatError - Winsock2.SendData lastModified & vbCrLf + TCPSock.SendData lastModified & vbCrLf Case 4: If Not response = "OK" Then GoTo heartbeatError - Winsock2.SendData "ENDHEARTBEAT" & vbCrLf + TCPSock.SendData "ENDHEARTBEAT" & vbCrLf Case 5: If Not response = "OK" Then GoTo heartbeatError - Winsock2.Close - x = MsgBox("heartbeat sent okay.") + TCPSock.Close + Status.Caption = "Heartbeat sent successfully." End Select End If @@ -257,7 +337,105 @@ Private Sub Winsock2_DataArrival(ByVal bytesTotal As L Exit Sub configError: - x = MsgBox("error doing configuration") + Status.Caption = "FAILED to get configuration" + Exit Sub heartbeatError: - x = MsgBox("error doing configuration") + Status.Caption = "Heatbeat FAILED" + Exit Sub End Sub + +Private Sub Timer1_Timer() + + Label3.Caption = Label3.Caption - 1 + Label4.Caption = Label4.Caption - 1 + + Status.Caption = "" + + If Label3.Caption < 1 Then + + ' prepare the contents of the XML packet. + seqNo = seqNo + 1 + machineName = TCPSock.LocalHostName + LocalIP = TCPSock.LocalIP + packetDate = Date2Num() + + + Dim verinfo As OSVERSIONINFO + verinfo.dwOSVersionInfoSize = Len(verinfo) + ret% = GetVersionEx(verinfo) + If ret% = 0 Then + MsgBox "Error getting Windows version Information" + End + End If + + osName = getVersion() + osVersionMajor = verinfo.dwMajorVersion + osVersionMinor = verinfo.dwMinorVersion + osBuild = verinfo.dwBuildNumber + + Dim sysinfo As SYSTEM_INFO + GetSystemInfo sysinfo + Select Case sysinfo.dwProcessorType + Case PROCESSOR_INTEL_386 + processorType = "Intel 386" + Case PROCESSOR_INTEL_486 + processorType = "Intel 486" + Case PROCESSOR_INTEL_PENTIUM + processorType = "Intel Pentium variant" + Case PROCESSOR_MIPS_R4000 + processorType = "MIPS R4000" + Case PROCESSOR_ALPHA_21064 + processorType = "DEC Alpha 21064" + Case Else + processorType = "(unknown)" + End Select + + Dim memsts As MEMORYSTATUS + Dim memory& + GlobalMemoryStatus memsts + memory& = memsts.dwTotalPhys + memTotal = memory& \ 1024 + memory& = memsts.dwAvailPhys + memFree = memory& \ 1024 + memory& = memsts.dwTotalVirtual + swapTotal = memory& \ 1024 + memory& = memsts.dwAvailVirtual + swapFree = memory& \ 1024 + + ' build the contents of the XML packet + xml = "" & _ + "" & _ + "" & osName & "" & _ + "" & osVersionMajor & "" & _ + "" & osBuild & "" & _ + "" & osName & "" & _ + "" & osVersionMinor & "" & _ + "" & processorType & "" & _ + "" & _ + "" & memTotal & "" & memFree & "" & _ + "" & swapTotal & "" & swapFree & "" & _ + "" + Text4.Text = Text4.Text + xml + + ' Use the first winsock control to send a UDP packet. + UDPSock.RemoteHost = filterHostname + UDPSock.RemotePort = filterUDPPort + UDPSock.SendData xml + Status.Caption = "UDP packet sent" + Label3.Caption = UDPUpdateTime + End If + + If Label4.Caption < 1 Then + ' establish a TCP connection to a filter + TCPSock.Close + TCPSock.Connect filterHostname, filterTCPPort + Label4.Caption = TCPUpdateTime + End If + +End Sub + +Function Date2Num() As Long + Dim x As Long + x = DateDiff("s", "1-1-1970", Now) + Date2Num = x +End Function