ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/host/vb_net_test/nettest.frm
Revision: 1.15
Committed: Fri Feb 23 17:08:37 2001 UTC (23 years, 9 months ago) by pjm2
Branch: MAIN
Changes since 1.14: +67 -21 lines
Log Message:
Added a lot of API calls to obtain various system information.
The contents of the XML packet are built using these.

File Contents

# User Rev Content
1 pjm2 1.1 VERSION 5.00
2     Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
3 pjm2 1.11 Object = "{33155A3D-0CE0-11D1-A6B4-444553540000}#1.0#0"; "SysTray.ocx"
4 pjm2 1.1 Begin VB.Form Form1
5 pjm2 1.10 BorderStyle = 4 'Fixed ToolWindow
6     Caption = "i-scream Winhost"
7 pjm2 1.1 ClientHeight = 5655
8     ClientLeft = 45
9 pjm2 1.10 ClientTop = 285
10 pjm2 1.12 ClientWidth = 4710
11 pjm2 1.1 LinkTopic = "Form1"
12     MaxButton = 0 'False
13     ScaleHeight = 5655
14 pjm2 1.12 ScaleWidth = 4710
15 pjm2 1.1 ShowInTaskbar = 0 'False
16     StartUpPosition = 3 'Windows Default
17 pjm2 1.11 Begin VB.CommandButton Hide
18 pjm2 1.12 Caption = "Hide Window"
19     Height = 375
20     Left = 3120
21 pjm2 1.11 TabIndex = 7
22 pjm2 1.12 Top = 840
23     Width = 1455
24 pjm2 1.11 End
25     Begin SysTray.SystemTray SystemTray
26 pjm2 1.12 Left = 2160
27     Top = 1800
28 pjm2 1.11 _ExtentX = 847
29     _ExtentY = 847
30     SysTrayText = "i-scream Winhost"
31     IconFile = 0
32     End
33 pjm2 1.8 Begin VB.Timer Timer1
34 pjm2 1.12 Left = 2760
35     Top = 1800
36 pjm2 1.1 End
37     Begin VB.TextBox Text4
38 pjm2 1.6 Height = 1575
39 pjm2 1.1 Left = 240
40     MultiLine = -1 'True
41     ScrollBars = 2 'Vertical
42 pjm2 1.10 TabIndex = 1
43 pjm2 1.1 Text = "nettest.frx":0000
44     Top = 3000
45 pjm2 1.12 Width = 3975
46 pjm2 1.1 End
47 pjm2 1.10 Begin VB.CommandButton Reconfigure
48     Caption = "Reconfigure with FilterManager"
49 pjm2 1.12 Height = 375
50 pjm2 1.10 Left = 120
51     TabIndex = 0
52 pjm2 1.12 Top = 840
53 pjm2 1.10 Width = 2895
54 pjm2 1.1 End
55 pjm2 1.5 Begin MSWinsockLib.Winsock TCPSock
56 pjm2 1.12 Left = 3720
57     Top = 1800
58 pjm2 1.1 _ExtentX = 741
59     _ExtentY = 741
60     _Version = 393216
61     End
62 pjm2 1.5 Begin MSWinsockLib.Winsock UDPSock
63 pjm2 1.12 Left = 3240
64     Top = 1800
65 pjm2 1.1 _ExtentX = 741
66     _ExtentY = 741
67     _Version = 393216
68     Protocol = 1
69     End
70 pjm2 1.9 Begin VB.Label Label2
71     Alignment = 1 'Right Justify
72     Caption = "Next heartbeat:"
73 pjm2 1.8 Height = 255
74 pjm2 1.12 Left = 2400
75 pjm2 1.10 TabIndex = 6
76 pjm2 1.9 Top = 480
77     Width = 1455
78 pjm2 1.8 End
79 pjm2 1.9 Begin VB.Label Label1
80     Alignment = 1 'Right Justify
81     Caption = "Next UDP packet:"
82 pjm2 1.8 Height = 255
83 pjm2 1.12 Left = 2400
84 pjm2 1.10 TabIndex = 5
85 pjm2 1.9 Top = 120
86     Width = 1455
87 pjm2 1.8 End
88 pjm2 1.9 Begin VB.Label Label4
89 pjm2 1.10 BorderStyle = 1 'Fixed Single
90 pjm2 1.9 Caption = "0"
91 pjm2 1.7 Height = 255
92 pjm2 1.12 Left = 3960
93 pjm2 1.10 TabIndex = 4
94 pjm2 1.9 Top = 480
95     Width = 615
96 pjm2 1.7 End
97 pjm2 1.9 Begin VB.Label Label3
98 pjm2 1.10 BorderStyle = 1 'Fixed Single
99 pjm2 1.9 Caption = "0"
100 pjm2 1.7 Height = 255
101 pjm2 1.12 Left = 3960
102 pjm2 1.10 TabIndex = 3
103 pjm2 1.9 Top = 120
104     Width = 615
105 pjm2 1.7 End
106 pjm2 1.6 Begin VB.Label Status
107 pjm2 1.12 Alignment = 2 'Center
108 pjm2 1.6 Caption = "Status:"
109 pjm2 1.1 Height = 255
110 pjm2 1.6 Left = 120
111 pjm2 1.10 TabIndex = 2
112 pjm2 1.12 Top = 1320
113     Width = 4455
114 pjm2 1.1 End
115     End
116     Attribute VB_Name = "Form1"
117     Attribute VB_GlobalNameSpace = False
118     Attribute VB_Creatable = False
119     Attribute VB_PredeclaredId = True
120     Attribute VB_Exposed = False
121 pjm2 1.15 ' For the system tray bits
122 pjm2 1.4 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
123     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
124    
125     Dim filterManagerHostname As String
126     Dim filterManagerTCPPort As Integer
127    
128 pjm2 1.13 Dim seqNo As Long
129     Dim machineName As String
130    
131 pjm2 1.2 Dim filterHostname As String
132 pjm2 1.3 Dim filterTCPPort As Integer
133     Dim filterUDPPort As Integer
134     Dim fileList As String
135     Dim lastModified As String
136 pjm2 1.2
137 pjm2 1.7 Dim UDPUpdateTime As Integer
138     Dim TCPUpdateTime As Integer
139    
140 pjm2 1.2 Dim protocolVersion As String
141     Dim connected As Boolean
142 pjm2 1.1 Dim responseNumber As Integer
143    
144 pjm2 1.2 Private Sub Form_Load()
145 pjm2 1.13
146 pjm2 1.2 protocolVersion = "1.1"
147 pjm2 1.13
148 pjm2 1.10 Status.Caption = "Loading"
149 pjm2 1.15 'Form1.Caption = "i-scream Winhost " & protocolVersion & " for " & GetVersion()
150 pjm2 1.6
151 pjm2 1.4 ''''TEMP
152     filterManagerHostname = "killigrew.ukc.ac.uk"
153     filterManagerTCPPort = 4567
154 pjm2 1.13 ''''' END TEMP
155 pjm2 1.4
156 pjm2 1.13 GoTo skip
157 pjm2 1.4 On Error GoTo iniError
158     Dim buf As String * 256
159     Dim length As Long
160     length = GetPrivateProfileString("i-scream Winhost", "FilterManager", "<no value>", buf, Len(buf), App.Path & "winhost.ini")
161     filterManagerHostname = Left$(buf, length)
162     length = GetPrivateProfileString("i-scream Winhost", "FilterManagerPort", "<no value>", buf, Len(buf), App.Path & "winhost.ini")
163     filterManagerTCPPort = Left$(buf, length)
164 pjm2 1.13 skip:
165    
166 pjm2 1.10 Status.Caption = "Connecting to Filter Manager"
167 pjm2 1.13 Reconfigure_Click
168 pjm2 1.6
169 pjm2 1.15 Form1.Show
170     SystemTray.Action = 0
171    
172    
173 pjm2 1.4 Exit Sub
174    
175     iniError:
176     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")
177     End
178    
179     End Sub
180    
181 pjm2 1.10 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
182 pjm2 1.11 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")
183 pjm2 1.10 If x = 7 Then
184     Cancel = True
185 pjm2 1.15 Else
186     SystemTray.Action = 2
187 pjm2 1.10 End If
188    
189     End Sub
190    
191 pjm2 1.11 Private Sub Hide_Click()
192     Form1.Visible = False
193     SystemTray.Icon = Val(Form1.Icon)
194     End Sub
195    
196 pjm2 1.10 Private Sub Reconfigure_Click()
197     ' establish a TCP connection to a filtermanager
198     connected = False
199     TCPSock.Close
200     TCPSock.Connect filterManagerHostname, filterManagerTCPPort
201 pjm2 1.11 End Sub
202    
203    
204    
205     Private Sub SystemTray_MouseDblClk(ByVal Button As Integer)
206    
207     Form1.Visible = True
208     Form1.SetFocus
209 pjm2 1.12
210 pjm2 1.11
211 pjm2 1.10 End Sub
212    
213 pjm2 1.5 Private Sub TCPSock_Connect()
214 pjm2 1.6
215     responseNumber = 0
216 pjm2 1.1
217 pjm2 1.3 ' Send something as soon as we connect to the server.
218     If connected = False Then
219     ' contact the FilterManager
220 pjm2 1.5 TCPSock.SendData "STARTCONFIG" & vbCrLf
221 pjm2 1.3 Else
222     ' Contact the Filter
223 pjm2 1.5 TCPSock.SendData "HEARTBEAT" & vbCrLf
224 pjm2 1.3 End If
225 pjm2 1.1
226     End Sub
227    
228 pjm2 1.5 Private Sub TCPSock_DataArrival(ByVal bytesTotal As Long)
229 pjm2 1.1
230     responseNumber = responseNumber + 1
231    
232     ' Get the line from the server.
233 pjm2 1.5 TCPSock.GetData response, vbString, bytesTotal
234 pjm2 1.1
235     ' Remove linefeeds and returns from the line.
236     response = Replace(response, Chr(13), "")
237     response = Replace(response, Chr(10), "")
238     Text4.Text = Text4.Text & vbCrLf & response
239    
240 pjm2 1.2 If connected = False Then
241     ' Perform TCP configuration (1.1)
242     On Error GoTo configError
243     Select Case responseNumber
244     Case 1:
245     If Not response = "OK" Then GoTo configError
246 pjm2 1.5 TCPSock.SendData "LASTMODIFIED" & vbCrLf
247 pjm2 1.2 Case 2:
248     If response = "ERROR" Then GoTo configError
249 pjm2 1.3 lastModified = response
250 pjm2 1.5 TCPSock.SendData "FILELIST" & vbCrLf
251 pjm2 1.2 Case 3:
252     If response = "ERROR" Then GoTo configError
253 pjm2 1.3 fileList = response
254 pjm2 1.5 TCPSock.SendData "UDPUpdateTime" & vbCrLf
255 pjm2 1.2 Case 4:
256     If response = "ERROR" Then GoTo configError
257 pjm2 1.7 UDPUpdateTime = response
258 pjm2 1.5 TCPSock.SendData "TCPUpdateTime" & vbCrLf
259 pjm2 1.2 Case 5:
260     If response = "ERROR" Then GoTo configError
261 pjm2 1.7 TCPUpdateTime = response
262 pjm2 1.5 TCPSock.SendData "ENDCONFIG" & vbCrLf
263 pjm2 1.2 Case 6:
264     If Not response = "OK" Then GoTo configError
265 pjm2 1.5 TCPSock.SendData "FILTER" & vbCrLf
266 pjm2 1.2 Case 7:
267     'we got a filter list here.
268     readTo = 0
269     ' get hostname
270     readTo = InStr(1, response, ";", vbBinaryCompare)
271     filterHostname = Mid(response, 1, readTo - 1)
272     response = Mid(response, readTo + 1, Len(response))
273     ' get UDP Port number
274     readTo = InStr(1, response, ";")
275     filterUDPPort = Mid(response, 1, readTo - 1)
276     response = Mid(response, readTo + 1, Len(response))
277     ' get TCP Port number
278     filterTCPPort = response
279 pjm2 1.5 TCPSock.SendData "END" & vbCrLf
280 pjm2 1.2 Case 8:
281     If Not response = "OK" Then GoTo configError
282     connected = True
283     responseNumber = 0
284 pjm2 1.5 TCPSock.Close
285 pjm2 1.2 Text4.Text = Text4.Text & vbCrLf & " <closed>"
286 pjm2 1.10 Status.Caption = "Configuration successful"
287 pjm2 1.8 Label3.Caption = UDPUpdateTime
288     Label4.Caption = TCPUpdateTime
289     Timer1.Interval = 1000
290 pjm2 1.2 End Select
291     Else
292     ' Perform a heartbeat (1.1)
293     On Error GoTo heartbeatError
294     Select Case responseNumber
295     Case 1:
296 pjm2 1.3 If Not response = "OK" Then GoTo heartbeatError
297 pjm2 1.5 TCPSock.SendData "CONFIG" & vbCrLf
298 pjm2 1.2 Case 2:
299 pjm2 1.3 If Not response = "OK" Then GoTo heartbeatError
300 pjm2 1.5 TCPSock.SendData fileList & vbCrLf
301 pjm2 1.2 Case 3:
302 pjm2 1.3 If Not response = "OK" Then GoTo heartbeatError
303 pjm2 1.5 TCPSock.SendData lastModified & vbCrLf
304 pjm2 1.2 Case 4:
305 pjm2 1.3 If Not response = "OK" Then GoTo heartbeatError
306 pjm2 1.5 TCPSock.SendData "ENDHEARTBEAT" & vbCrLf
307 pjm2 1.2 Case 5:
308 pjm2 1.3 If Not response = "OK" Then GoTo heartbeatError
309 pjm2 1.5 TCPSock.Close
310 pjm2 1.10 Status.Caption = "Heartbeat sent successfully."
311 pjm2 1.2 End Select
312    
313     End If
314    
315    
316     Exit Sub
317    
318     configError:
319 pjm2 1.10 Status.Caption = "FAILED to get configuration"
320 pjm2 1.8 Exit Sub
321 pjm2 1.2 heartbeatError:
322 pjm2 1.10 Status.Caption = "Heatbeat FAILED"
323 pjm2 1.8 Exit Sub
324 pjm2 1.1 End Sub
325 pjm2 1.5
326 pjm2 1.8 Private Sub Timer1_Timer()
327    
328     Label3.Caption = Label3.Caption - 1
329     Label4.Caption = Label4.Caption - 1
330    
331 pjm2 1.10 Status.Caption = ""
332 pjm2 1.8
333     If Label3.Caption < 1 Then
334 pjm2 1.15
335     ' prepare the contents of the XML packet.
336     seqNo = seqNo + 1
337     machineName = TCPSock.LocalHostName
338 pjm2 1.13 localIP = TCPSock.localIP
339 pjm2 1.14 packetDate = Date2Num()
340 pjm2 1.15
341    
342     Dim verinfo As OSVERSIONINFO
343     verinfo.dwOSVersionInfoSize = Len(verinfo)
344     ret% = GetVersionEx(verinfo)
345     If ret% = 0 Then
346     MsgBox "Error getting Windows version Information"
347     End
348     End If
349    
350     osName = getVersion()
351     osVersionMajor = verinfo.dwMajorVersion
352     osVersionMinor = verinfo.dwMinorVersion
353     osBuild = verinfo.dwBuildNumber
354    
355     Dim sysinfo As SYSTEM_INFO
356     GetSystemInfo sysinfo
357     Select Case sysinfo.dwProcessorType
358     Case PROCESSOR_INTEL_386
359     processorType = "Intel 386"
360     Case PROCESSOR_INTEL_486
361     processorType = "Intel 486"
362     Case PROCESSOR_INTEL_PENTIUM
363     processorType = "Intel Pentium variant"
364     Case PROCESSOR_MIPS_R4000
365     processorType = "MIPS R4000"
366     Case PROCESSOR_ALPHA_21064
367     processorType = "DEC Alpha 21064"
368     Case Else
369     processorType = "(unknown)"
370     End Select
371    
372     Dim memsts As MEMORYSTATUS
373     Dim memory&
374     GlobalMemoryStatus memsts
375     memory& = memsts.dwTotalPhys
376     memTotal = memory& \ 1024
377     memory& = memsts.dwAvailPhys
378     memFree = memory& \ 1024
379     memory& = memsts.dwTotalVirtual
380     swapTotal = memory& \ 1024
381     memory& = memsts.dwAvailVirtual
382     swapFree = memory& \ 1024
383    
384     ' build the contents of the XML packet
385 pjm2 1.13 xml = "<packet seq_no=""" & seqNo & """ machine_name=""" & machineName & """ date=""" & packetDate & """ type=""data"" ip=""" & localIP & """>" & _
386 pjm2 1.15 "<os>" & _
387     "<name>" & osName & "</name>" & _
388     "<version>" & osVersionMajor & "</version>" & _
389     "<release>" & osBuild & "</release>" & _
390     "<platform>" & osName & "</platform>" & _
391     "<minor_version>" & osVersionMinor & "</minor_version>" & _
392     "<processor>" & processorType & "</processor>" & _
393     "</os>" & _
394     "<memory><total>" & memTotal & "</total><free>" & memFree & "</free></memory>" & _
395     "<swap><total>" & swapTotal & "</total><free>" & swapFree & "</free></swap>" & _
396 pjm2 1.13 ""
397     Text4.Text = Text4.Text + xml
398 pjm2 1.8
399     ' Use the first winsock control to send a UDP packet.
400     UDPSock.RemoteHost = filterHostname
401     UDPSock.RemotePort = filterUDPPort
402     UDPSock.SendData xml
403 pjm2 1.10 Status.Caption = "UDP packet sent"
404 pjm2 1.8 Label3.Caption = UDPUpdateTime
405     End If
406    
407     If Label4.Caption < 1 Then
408     ' establish a TCP connection to a filter
409     TCPSock.Close
410     TCPSock.Connect filterHostname, filterTCPPort
411     Label4.Caption = TCPUpdateTime
412     End If
413    
414     End Sub
415 pjm2 1.13
416     Function Date2Num() As Long
417 pjm2 1.14 Dim x As Long
418     x = DateDiff("s", "1-1-1970", Now)
419     Date2Num = x
420 pjm2 1.13 End Function