15 |
' http://www.activevb.de/rubriken/apikatalog/deklarationen/rasenumentries.html |
' http://www.activevb.de/rubriken/apikatalog/deklarationen/rasenumentries.html |
16 |
' http://www.dotnet247.com/247reference/msgs/18/93960.aspx |
' http://www.dotnet247.com/247reference/msgs/18/93960.aspx |
17 |
|
|
18 |
|
' contains all ras entry objects |
19 |
Public RasEntries As New Collection |
Public RasEntries As New Collection |
20 |
|
|
21 |
|
' globals to store connection name and state |
22 |
Public ConnectionName As String |
Public ConnectionName As String |
23 |
Public ConnectionOnline As Boolean |
Public ConnectionOnline As Boolean |
24 |
Public ScriptName_Up As String, ScriptName_Down As String |
|
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() |
Sub Main() |
39 |
|
|
109 |
conName = cmdline.getArgument("monitor") |
conName = cmdline.getArgument("monitor") |
110 |
If conName <> "" Then |
If conName <> "" Then |
111 |
|
|
112 |
If cmdline.hasSwitch("up") Then |
' run script |
113 |
ScriptName_Up = cmdline.getArgument("up") |
If cmdline.hasSwitch("script") Then |
114 |
|
ActionType = RUN_SCRIPT |
115 |
|
ScriptName = cmdline.getArgument("script") |
116 |
End If |
End If |
117 |
|
|
118 |
If cmdline.hasSwitch("down") Then |
' add a route with target network via gateway |
119 |
ScriptName_Down = cmdline.getArgument("down") |
If cmdline.hasSwitch("net") Then |
120 |
|
ActionType = ADD_ROUTE |
121 |
|
RouteNet = cmdline.getArgument("net") |
122 |
|
If cmdline.hasSwitch("mask") Then |
123 |
|
RouteMask = cmdline.getArgument("mask") |
124 |
|
Else |
125 |
|
RouteMask = RouteMaskDefault |
126 |
|
End If |
127 |
End If |
End If |
128 |
|
|
129 |
'Set rasItem = RasEntries(conName) |
'Set rasItem = RasEntries(conName) |
165 |
|
|
166 |
' callback from MonitorRASStatusAsync |
' callback from MonitorRASStatusAsync |
167 |
Public Sub detectOnlineOfflineChange() |
Public Sub detectOnlineOfflineChange() |
168 |
Dim newState As Boolean |
Dim isOnline As Boolean |
169 |
Dim script_name As String, script_args As String |
Dim script_name As String, script_args As String |
170 |
Dim cmd As String |
Dim cmd As String |
171 |
|
|
172 |
newState = RasIsOnline(ConnectionName) |
isOnline = RasIsOnline(ConnectionName) |
173 |
|
|
174 |
If ConnectionOnline <> newState Then |
If ConnectionOnline <> isOnline Then |
175 |
'MsgBox newState |
'MsgBox isOnline |
|
|
|
|
' connection goes online |
|
|
If newState = True Then |
|
|
If ScriptName_Up <> "" Then |
|
|
script_name = ScriptName_Up |
|
|
End If |
|
|
|
|
|
' connection goes offline |
|
|
Else |
|
|
If ScriptName_Down <> "" Then |
|
|
script_name = ScriptName_Down |
|
|
End If |
|
176 |
|
|
177 |
End If |
Select Case ActionType |
178 |
|
|
179 |
|
Case RUN_SCRIPT: |
180 |
|
script_name = ScriptName |
181 |
|
If script_name <> "" Then |
182 |
|
script_args = Chr(34) & DetermineClientIP(ConnectionName) & Chr(34) & " " & Chr(34) & DetermineServerIP(ConnectionName) & Chr(34) |
183 |
|
cmd = App.Path & "\" & script_name & " " & script_args |
184 |
|
End If |
185 |
|
|
186 |
|
Case ADD_ROUTE: |
187 |
|
' connection goes online |
188 |
|
If isOnline = True Then |
189 |
|
script_name = "route" |
190 |
|
script_args = "add " & RouteNet & " mask " & RouteMask & " " & DetermineClientIP(ConnectionName) |
191 |
|
cmd = script_name & " " & script_args |
192 |
|
|
193 |
|
' connection goes offline |
194 |
|
Else |
195 |
|
' Nothing to do in this case |
196 |
|
|
197 |
|
End If |
198 |
|
|
199 |
|
End Select |
200 |
|
|
201 |
If script_name <> "" Then |
If cmd <> "" Then |
|
script_args = Chr(34) & DetermineClientIP(ConnectionName) & Chr(34) & " " & Chr(34) & DetermineServerIP(ConnectionName) & Chr(34) |
|
|
cmd = App.Path & "\" & script_name & " " & script_args |
|
202 |
'MsgBox cmd |
'MsgBox cmd |
203 |
On Error Resume Next |
On Error Resume Next |
204 |
Shell cmd, vbHide |
Shell cmd, vbHide |
205 |
On Error GoTo 0 |
On Error GoTo 0 |
206 |
End If |
End If |
207 |
|
|
208 |
ConnectionOnline = newState |
ConnectionOnline = isOnline |
209 |
End If |
End If |
210 |
End Sub |
End Sub |