ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/winhost/nettest.frm
Revision: 1.21
Committed: Mon Feb 26 09:23:34 2001 UTC (23 years, 9 months ago) by pjm2
Branch: MAIN
Changes since 1.20: +12 -3 lines
Log Message:
Added a check for Win9x machines on startup.  We do not wish to monitor these types of
machine as they are not servers.

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