/[cvs]/joko/ToolBox/Windows/VpnDial/src/Module_Main.bas
ViewVC logotype

Contents of /joko/ToolBox/Windows/VpnDial/src/Module_Main.bas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (show annotations)
Tue Nov 22 22:20:11 2005 UTC (18 years, 7 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
Changes since 1.8: +37 -23 lines
+ "new" feature: --dial within --monitor

1 Attribute VB_Name = "Module_Main"
2 Option Explicit
3
4 ' see: How To Obtain the IP Address Assigned to a RAS Client
5 ' http://support.microsoft.com/default.aspx?scid=kb;en-us;160622
6
7 ' see: RasGetProjectionInfo
8 ' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecomm5/html/wce50lrfRasGetProjectionInfo.asp
9
10 ' http://home.iprimus.com.au/billmcc/PlatformVB/dun/rasenumentries.htm
11 ' http://home.iprimus.com.au/billmcc/PlatformVB/dun/raserrorhandler.htm
12 ' http://www.mentalis.org/apilist/RasEnumEntries.shtml
13
14 ' http://www.activevb.de/tipps/tipkat/kat1.html
15 ' http://www.activevb.de/rubriken/apikatalog/deklarationen/rasenumentries.html
16 ' http://www.dotnet247.com/247reference/msgs/18/93960.aspx
17
18 ' contains all ras entry objects
19 Public RasEntries As New Collection
20
21 ' globals to store connection name and state
22 Public ConnectionName As String
23 Public ConnectionOnline As Boolean
24
25 ' globals to store information about action to do on up|down
26 Enum ActionTypes
27 RUN_SCRIPT
28 ADD_ROUTE
29 End Enum
30 Public ActionType As ActionTypes
31
32 Public ScriptName As String
33 Public RouteNet As String, RouteMask As String
34
35 Const RouteMaskDefault As String = "255.255.255.0"
36
37
38 Sub Main()
39
40 Dim cmdline As New CommandLine
41 Dim conName As String
42 Dim rasItem As RasEntryData
43 Dim success As Boolean
44
45 Dim script_name As String, script_args As String
46 Dim setup_user As String, setup_pass As String
47
48 ReadRasEntries
49 cmdline.parse
50
51 'If cmdline.hasSwitch("gui") Then
52 ' Form_Main.Show
53 'Else
54
55 ' run script
56 If cmdline.hasSwitch("script") And success = True Then
57 script_name = cmdline.getArgument("script")
58 If script_name <> "" Then
59 script_args = Chr(34) & DetermineClientIP(conName) & Chr(34) & " " & Chr(34) & DetermineServerIP(conName) & Chr(34)
60 Shell App.Path & "\" & script_name & " " & script_args, vbHide
61 End If
62 'End If
63
64 ' setup
65 ElseIf cmdline.hasSwitch("setup") Then
66 conName = cmdline.getArgument("setup")
67 If conName <> "" Then
68
69 On Error Resume Next
70 Set rasItem = RasEntries(conName)
71 If Err.Number <> 0 Then
72 MsgBox "Error while accessing RAS entry """ & conName & """." & vbCrLf & "Probably it does not exist?"
73 End
74 End If
75 On Error GoTo 0
76
77 If cmdline.hasSwitch("gui") Then
78 With Form_Credentials
79 .ras_connectionName = rasItem.entryname
80 .ras_phoneBook = rasItem.PhonebookPath
81 .Show
82 End With
83
84 ElseIf cmdline.hasSwitch("user") And cmdline.hasSwitch("pass") Then
85 setup_user = cmdline.getArgument("user")
86 setup_pass = cmdline.getArgument("pass")
87 SetupRasEntry rasItem.entryname, rasItem.PhonebookPath, setup_user, setup_pass
88 End If
89
90 End If
91
92 ' monitor
93 ElseIf cmdline.hasSwitch("monitor") Then
94 conName = cmdline.getArgument("monitor")
95 If conName <> "" Then
96
97 ' run script
98 If cmdline.hasSwitch("script") Then
99 ActionType = RUN_SCRIPT
100 ScriptName = cmdline.getArgument("script")
101 End If
102
103 ' add a route with target network via gateway
104 If cmdline.hasSwitch("net") Then
105 ActionType = ADD_ROUTE
106 RouteNet = cmdline.getArgument("net")
107 If cmdline.hasSwitch("mask") Then
108 RouteMask = cmdline.getArgument("mask")
109 Else
110 RouteMask = RouteMaskDefault
111 End If
112 End If
113
114 'Set rasItem = RasEntries(conName)
115 'RasRetrieveConnectionHandler conName
116 ConnectionName = conName
117 ConnectionOnline = RasIsOnline(conName)
118
119 If cmdline.hasSwitch("gui") Then
120 ShowTrayIcon Form_Main, getTrayIconTipText(ConnectionName, ConnectionOnline)
121 End If
122
123 ' dial command
124 If cmdline.hasSwitch("dial") Then
125 doDial conName
126 End If
127
128 ' monitor ras connection
129 MonitorRASStatusAsync
130
131 End If
132
133 ' dial command
134 ElseIf cmdline.hasSwitch("dial") Then
135 conName = cmdline.getArgument("dial")
136 doDial conName
137
138 ' hangup command
139 ElseIf cmdline.hasSwitch("hangup") Then
140 conName = cmdline.getArgument("hangup")
141 success = RasDisconnect(conName)
142 'MsgBox success
143
144 End If
145
146 'End If
147
148 End Sub
149
150 Private Sub ReadRasEntries()
151
152 Dim myEntries() As VBRasEntryName
153 Dim lngCount As Long
154 Dim rasItem As RasEntryData
155
156 lngCount = VBRasGetAllEntries(myEntries)
157
158 'MsgBox lngCount
159 Dim i As Integer
160 Dim curEntry As VBRasEntryName
161 For i = 0 To lngCount - 1
162 curEntry = myEntries(i)
163
164 Set rasItem = New RasEntryData
165 rasItem.entryname = curEntry.entryname
166 rasItem.PhonebookPath = curEntry.PhonebookPath
167 rasItem.Win2000_SystemPhonebook = curEntry.Win2000_SystemPhonebook
168
169 'MsgBox rasItem.entryname
170 On Error Resume Next
171 RasEntries.add rasItem, rasItem.entryname
172 If Err.Number = 457 Then
173 'MsgBox "Error: Duplicate RAS entry. Don't know what to dial. This error should not occour."
174 End If
175 On Error GoTo 0
176 Next i
177
178 End Sub
179
180 ' callback from MonitorRASStatusAsync
181 Public Sub detectOnlineOfflineChange()
182 Dim isOnline As Boolean
183 Dim script_name As String, script_args As String
184 Dim cmd As String
185
186 isOnline = RasIsOnline(ConnectionName)
187
188 If ConnectionOnline <> isOnline Then
189 'MsgBox isOnline
190
191 Select Case ActionType
192
193 Case RUN_SCRIPT:
194 script_name = ScriptName
195 If script_name <> "" Then
196 script_args = Chr(34) & DetermineClientIP(ConnectionName) & Chr(34) & " " & Chr(34) & DetermineServerIP(ConnectionName) & Chr(34)
197 cmd = App.Path & "\" & script_name & " " & script_args
198 End If
199
200 Case ADD_ROUTE:
201 ' connection goes online
202 If isOnline = True Then
203 script_name = "route"
204 script_args = "add " & RouteNet & " mask " & RouteMask & " " & DetermineClientIP(ConnectionName)
205 cmd = script_name & " " & script_args
206
207 ' connection goes offline
208 Else
209 ' Nothing to do in this case
210
211 End If
212
213 End Select
214
215 If cmd <> "" Then
216 'MsgBox cmd
217 On Error Resume Next
218 Shell cmd, vbHide
219 'Shell cmd, vbNormalFocus
220 'If Err.Number <> 0 Then
221 ' MsgBox "Error while calling cmd: " & cmd & vbCrLf & "Error-Number: " & Err.Number
222 'End If
223 On Error GoTo 0
224 End If
225
226 ConnectionOnline = isOnline
227
228 UpdateTrayIcon getTrayIconTipText(ConnectionName, ConnectionOnline)
229
230 End If
231 End Sub
232
233 Private Function getTrayIconTipText(conName As String, isOnline As Boolean) As String
234 Dim TipText As String
235 TipText = "VpnDial monitoring """ & conName & """: "
236 If isOnline Then
237 TipText = TipText & "online"
238 Else
239 TipText = TipText & "offline"
240 End If
241 getTrayIconTipText = TipText
242 End Function
243
244
245 Private Function doDial(conName As String)
246
247 Dim rasItem As RasEntryData
248 Dim success As Boolean
249
250 On Error Resume Next
251 Set rasItem = RasEntries(conName)
252 If Err.Number = 0 Then
253 success = RasConnect(rasItem.entryname, rasItem.PhonebookPath)
254 Else
255 MsgBox "Unknown RAS-Connection """ & conName & """."
256 End If
257 On Error GoTo 0
258
259 End Function

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed