--- joko/ToolBox/Windows/VpnDial/src/Module_Main.bas 2005/09/28 20:36:46 1.1 +++ joko/ToolBox/Windows/VpnDial/src/Module_Main.bas 2005/10/07 20:59:27 1.5 @@ -16,21 +16,102 @@ ' http://www.dotnet247.com/247reference/msgs/18/93960.aspx Public RasEntries As New Collection +Public ConnectionName As String +Public ConnectionOnline As Boolean +Public ScriptName_Up As String, ScriptName_Down As String Sub Main() Dim cmdline As New CommandLine Dim conName As String + Dim rasItem As RasEntryData + Dim success As Boolean + + Dim script_name As String, script_args As String + Dim setup_user As String, setup_pass As String ReadRasEntries cmdline.parse - If cmdline.hasSwitch("gui") Then - Form_Main.Show - Else - conName = cmdline.getArgument(conName) - MsgBox conName + 'If cmdline.hasSwitch("gui") Then + ' Form_Main.Show + 'Else + + ' dial command + If cmdline.hasSwitch("dial") Then + + conName = cmdline.getArgument("dial") + On Error Resume Next + Set rasItem = RasEntries(conName) + If Err.Number = 0 Then + success = RasConnect(rasItem.entryname, rasItem.PhonebookPath) + Else + MsgBox "Unkown RAS-Connection """ & conName & """." + End If + On Error GoTo 0 + + ' hangup command + ElseIf cmdline.hasSwitch("hangup") Then + conName = cmdline.getArgument("hangup") + success = RasDisconnect(conName) + 'MsgBox success + + 'End If + + ' run script + ElseIf cmdline.hasSwitch("script") And success = True Then + script_name = cmdline.getArgument("script") + If script_name <> "" Then + script_args = Chr(34) & DetermineClientIP(conName) & Chr(34) & " " & Chr(34) & DetermineServerIP(conName) & Chr(34) + Shell App.Path & "\" & script_name & " " & script_args, vbHide + End If + 'End If + + ' setup + ElseIf cmdline.hasSwitch("setup") Then + conName = cmdline.getArgument("setup") + If conName <> "" Then + + Set rasItem = RasEntries(conName) + + If cmdline.hasSwitch("gui") Then + With Form_Credentials + .ras_connectionName = rasItem.entryname + .ras_phoneBook = rasItem.PhonebookPath + .Show + End With + + ElseIf cmdline.hasSwitch("user") And cmdline.hasSwitch("pass") Then + setup_user = cmdline.getArgument("user") + setup_pass = cmdline.getArgument("pass") + SetupRasEntry rasItem.entryname, rasItem.PhonebookPath, setup_user, setup_pass + End If + + End If + + ' monitor + ElseIf cmdline.hasSwitch("monitor") Then + conName = cmdline.getArgument("monitor") + If conName <> "" Then + + If cmdline.hasSwitch("up") Then + ScriptName_Up = cmdline.getArgument("up") + End If + + If cmdline.hasSwitch("down") Then + ScriptName_Down = cmdline.getArgument("down") + End If + + 'Set rasItem = RasEntries(conName) + 'RasRetrieveConnectionHandler conName + ConnectionName = conName + ConnectionOnline = RasIsOnline(conName) + MonitorRASStatusAsync + End If + End If + + 'End If End Sub @@ -57,3 +138,41 @@ Next i End Sub + +' callback from MonitorRASStatusAsync +Public Sub detectOnlineOfflineChange() + Dim newState As Boolean + Dim script_name As String, script_args As String + Dim cmd As String + + newState = RasIsOnline(ConnectionName) + + If ConnectionOnline <> newState Then + 'MsgBox newState + + ' 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 + + End If + + If script_name <> "" Then + script_args = Chr(34) & DetermineClientIP(ConnectionName) & Chr(34) & " " & Chr(34) & DetermineServerIP(ConnectionName) & Chr(34) + cmd = App.Path & "\" & script_name & " " & script_args + 'MsgBox cmd + On Error Resume Next + Shell cmd, vbHide + On Error GoTo 0 + End If + + ConnectionOnline = newState + End If +End Sub