--- experimental/host/vb_net_test/nettest.frm 2001/02/23 10:34:47 1.5
+++ experimental/host/vb_net_test/nettest.frm 2001/02/28 09:18:26 1.27
@@ -1,83 +1,127 @@
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"
- ClientHeight = 5655
+ Caption = "i-scream Winhost"
+ ClientHeight = 1185
ClientLeft = 45
ClientTop = 330
- ClientWidth = 5670
+ ClientWidth = 4710
+ Icon = "nettest.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
- ScaleHeight = 5655
- ScaleWidth = 5670
+ ScaleHeight = 1185
+ ScaleWidth = 4710
ShowInTaskbar = 0 'False
- StartUpPosition = 3 'Windows Default
- Begin VB.CommandButton Command3
- Caption = "TCP to Filter"
- Height = 375
- Left = 3720
- TabIndex = 5
- Top = 2520
- Width = 1575
+ StartUpPosition = 2 'CenterScreen
+ Visible = 0 'False
+ Begin VB.CommandButton Command1
+ Caption = "more"
+ Height = 255
+ Left = 3960
+ TabIndex = 8
+ Top = 840
+ Width = 615
End
- Begin VB.TextBox Text4
- Height = 2535
- Left = 240
+ Begin VB.TextBox Text1
+ Height = 2055
+ Left = 120
+ Locked = -1 'True
MultiLine = -1 'True
ScrollBars = 2 'Vertical
- TabIndex = 4
- Text = "nettest.frx":0000
- Top = 3000
- Width = 5055
+ TabIndex = 7
+ Top = 1200
+ Width = 4455
End
- Begin VB.CommandButton Command2
- Caption = "TCP to FilterManager"
+ Begin VB.CommandButton Hide
+ Caption = "hide"
+ Height = 255
+ Left = 3960
+ TabIndex = 6
+ Top = 480
+ Width = 615
+ End
+ Begin SysTray.SystemTray SystemTray
+ Left = 2520
+ Top = 4200
+ _ExtentX = 847
+ _ExtentY = 847
+ SysTrayText = "i-scream Winhost"
+ IconFile = 0
+ End
+ Begin VB.Timer Timer1
+ Left = 3120
+ Top = 4200
+ End
+ Begin VB.CommandButton Reconfigure
+ Caption = "Reconfigure with FilterManager"
Height = 375
- Left = 3360
- TabIndex = 3
- Top = 2040
- Width = 1935
+ Left = 840
+ TabIndex = 0
+ Top = 3480
+ Width = 2895
End
Begin MSWinsockLib.Winsock TCPSock
- Left = 4920
- Top = 120
+ Left = 4080
+ Top = 4200
_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 UDPSock
- Left = 4320
- Top = 120
+ Left = 3600
+ Top = 4200
_ExtentX = 741
_ExtentY = 741
_Version = 393216
Protocol = 1
End
+ Begin VB.Label Label2
+ Alignment = 1 'Right Justify
+ Caption = "Next heartbeat:"
+ Height = 255
+ Left = 120
+ TabIndex = 5
+ Top = 480
+ Width = 1455
+ End
Begin VB.Label Label1
- Caption = "Packet contents"
+ Alignment = 1 'Right Justify
+ Caption = "Next UDP packet:"
Height = 255
- Left = 360
+ Left = 120
+ TabIndex = 4
+ Top = 120
+ Width = 1455
+ End
+ Begin VB.Label Label4
+ BorderStyle = 1 'Fixed Single
+ Caption = "0"
+ Height = 255
+ Left = 1680
+ TabIndex = 3
+ Top = 480
+ Width = 615
+ End
+ Begin VB.Label Label3
+ BorderStyle = 1 'Fixed Single
+ Caption = "0"
+ Height = 255
+ Left = 1680
+ TabIndex = 2
+ Top = 120
+ Width = 615
+ End
+ Begin VB.Label Status
+ Alignment = 2 'Center
+ Caption = "Status:"
+ Height = 255
+ Left = 0
TabIndex = 1
- Top = 360
- Width = 2895
+ Top = 840
+ Width = 3855
End
End
Attribute VB_Name = "Form1"
@@ -85,77 +129,138 @@ 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
+Dim wksta As New CNetWksta
-Private Sub Command1_Click()
+Dim windowBig As Boolean
- ' build the contents of the XML packet.
- xml = ""
+Dim responseNumber As Integer
- ' Use the first winsock control to send a UDP packet.
- UDPSock.RemoteHost = filterHostname
- UDPSock.RemotePort = filterUDPPort
- UDPSock.SendData xml
+Private Sub Command1_Click()
-End Sub
+ ' Toggle visibility of the debug output.
-Private Sub Command2_Click()
-
- ' establish a TCP connection to a filtermanager
- TCPSock.Close
- TCPSock.Connect filterManagerHostname, filterManagerTCPPort
+ If windowBig Then
+ Form1.Height = 1500
+ windowBig = False
+ Else
+ Form1.Height = 4350
+ windowBig = True
+ End If
End Sub
-Private Sub Command3_Click()
- ' establish a TCP connection to a filter
- TCPSock.Close
- TCPSock.Connect filterHostname, filterTCPPort
-End Sub
-
Private Sub Form_Load()
+
+ If App.PrevInstance Then
+ x = MsgBox("There is already an i-scream Winhost running on this machine.", 48, "i-scream host already running")
+ End
+ End If
+
protocolVersion = "1.1"
+ Status.Caption = "Loading"
+ Form1.Caption = "i-scream Winhost " & protocolVersion
+
+ CUpTime.Init
+
+ If CUpTime.isWin9x Then
+ x = MsgBox("Sorry, the i-scream host can only be used to monitor servers (i.e. not Win9x)", 48, "Not a server")
+ End
+ End If
+
+ windowBig = False
+
''''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
+ If filterManagerHostname = "" Then
+ GoTo iniError
+ End If
+ On Error GoTo 0
+skip:
+
+ Status.Caption = "Connecting to Filter Manager " & filterManagerHostname & ":" & filterManagerTCPPort
+ Reconfigure_Click
+ SystemTray.Icon = Val(Form1.Icon)
+ 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 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 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
+
+ responseNumber = 0
' Send something as soon as we connect to the server.
If connected = False Then
@@ -178,7 +283,7 @@ Private Sub TCPSock_DataArrival(ByVal bytesTotal As Lo
' Remove linefeeds and returns from the line.
response = Replace(response, Chr(13), "")
response = Replace(response, Chr(10), "")
- Text4.Text = Text4.Text & vbCrLf & response
+ 'Text4.Text = Text4.Text & vbCrLf & response
If connected = False Then
' Perform TCP configuration (1.1)
@@ -187,24 +292,42 @@ Private Sub TCPSock_DataArrival(ByVal bytesTotal As Lo
Case 1:
If Not response = "OK" Then GoTo configError
TCPSock.SendData "LASTMODIFIED" & vbCrLf
+ Text1.Text = "Requesting configuration from FilterManager:- " & vbCrLf
+ Text1.Text = Text1.Text & response & vbCrLf
Case 2:
If response = "ERROR" Then GoTo configError
lastModified = response
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.SendData "FILELIST" & vbCrLf
+ ''' Uncomment this for new protocol release.
+ 'Case 2a:
+ 'If response = "ERROR" Then GoTo configError
+ 'fileList = response
+ 'Text1.Text = Text1.Text & response & vbCrLf
+ 'TCPSock.SendData "FQDN" & vbCrLf
Case 3:
If response = "ERROR" Then GoTo configError
fileList = response
+ Text1.Text = Text1.Text & response & vbCrLf
+ ' REMOVE above line, uncomment next
+ 'machineName = response
TCPSock.SendData "UDPUpdateTime" & vbCrLf
Case 4:
If response = "ERROR" Then GoTo configError
+ UDPUpdateTime = response
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.SendData "TCPUpdateTime" & vbCrLf
Case 5:
If response = "ERROR" Then GoTo configError
+ TCPUpdateTime = response
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.SendData "ENDCONFIG" & vbCrLf
Case 6:
If Not response = "OK" Then GoTo configError
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.SendData "FILTER" & vbCrLf
Case 7:
+ Text1.Text = Text1.Text & response & vbCrLf
'we got a filter list here.
readTo = 0
' get hostname
@@ -223,8 +346,12 @@ Private Sub TCPSock_DataArrival(ByVal bytesTotal As Lo
connected = True
responseNumber = 0
TCPSock.Close
- Text4.Text = Text4.Text & vbCrLf & " "
- x = MsgBox("got config okay")
+ Text1.Text = Text1.Text & response & vbCrLf
+ 'Text4.Text = Text4.Text & vbCrLf & " "
+ Status.Caption = "Configuration successful"
+ Label3.Caption = UDPUpdateTime
+ Label4.Caption = TCPUpdateTime
+ Timer1.Interval = 1000
End Select
Else
' Perform a heartbeat (1.1)
@@ -232,20 +359,26 @@ Private Sub TCPSock_DataArrival(ByVal bytesTotal As Lo
Select Case responseNumber
Case 1:
If Not response = "OK" Then GoTo heartbeatError
+ Text1.Text = "Performing heartbeat: -" & vbCrLf
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.SendData "CONFIG" & vbCrLf
Case 2:
If Not response = "OK" Then GoTo heartbeatError
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.SendData fileList & vbCrLf
Case 3:
If Not response = "OK" Then GoTo heartbeatError
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.SendData lastModified & vbCrLf
Case 4:
If Not response = "OK" Then GoTo heartbeatError
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.SendData "ENDHEARTBEAT" & vbCrLf
Case 5:
If Not response = "OK" Then GoTo heartbeatError
+ Text1.Text = Text1.Text & response & vbCrLf
TCPSock.Close
- x = MsgBox("heartbeat sent okay.")
+ Status.Caption = "Heartbeat sent successfully."
End Select
End If
@@ -254,8 +387,116 @@ Private Sub TCPSock_DataArrival(ByVal bytesTotal As Lo
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
+
+ ' Comment this line in the next protocol
+ 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
+
+ uptime = CUpTime.MilliSecs \ 1000
+
+ CUpTime.Capture
+ cpu_time = CUpTime.CPUTime
+ percent_idle = CUpTime.PercentIdle
+
+ ' build the contents of the XML packet
+ xml = "" & _
+ "" & _
+ "" & osName & "" & _
+ "" & osVersionMajor & "" & _
+ "" & osBuild & "" & _
+ "" & osName & "" & _
+ "" & osVersionMinor & "" & _
+ "" & processorType & "" & _
+ "" & uptime & "" & _
+ "" & _
+ "" & percent_idle & "" & cpu_time & "" & _
+ "" & memTotal & "" & memFree & "" & _
+ "" & swapTotal & "" & swapFree & "" & _
+ ""
+ Text1.Text = "Last packet contained: -" & vbCrLf & 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