#NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=Data\domain1icon.ico #AutoIt3Wrapper_Outfile=exe\Connect.exe #AutoIt3Wrapper_UseX64=n #AutoIt3Wrapper_Res_Comment=Connect stellt eine VPN Verbindung zu domain1 her. #AutoIt3Wrapper_Res_Description=Connect #AutoIt3Wrapper_Res_Fileversion=1.1.0.0 #AutoIt3Wrapper_Res_LegalCopyright=Copyright © 2010 IT #AutoIt3Wrapper_Res_Language=1031 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;~ #AutoIt3Wrapper_Outfile_x64=domain1Connect.exe #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.1.8 Author: Boris Wagener Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include #include #include #include #include #include #include #include #include #include #include ;~ Opt("TrayMenuMode", 1) ;~ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ Variablendeklaration ;~ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Global $Mainform, $Childform, $fortschritt, $Pic1, $lbl_fortschritt, $lbl_info2,$Label2,$Label3,$State, $count, $Error, $aUser,$baseStr,$traypassword, $traygpupdate Global $Einwahluser, $Input_user, $User, $lbl_passwort, $btn_trennen, $Laufwerk, $btn_ticket, $Drive, $domain2_Alle, $QPP Global $Label1, $Group1, $chk_showpw, $lbl_ip, $FileName, $DownloadDir, $Warnung, $traymapping, $trayticket, $traytrennen, $msgtray, $trayausblenden, $trayeinblenden Global $UpdateMappingJaNein, $MappingUpdateWait, $ConnectUpdateWait, $Connectdomain2, $PingOnServer1, $VPNbesteht,$btn_mapping, $List, $string, $VPN_connection, $Testserver, $erg Global $G_CPP = IniRead(@ScriptDir & "\drives.ini","Drives", "G_CPP","") Global $H_CPP = IniRead(@ScriptDir & "\drives.ini","Drives", "H_CPP","") Global $O_Betriebsrat = IniRead(@ScriptDir & "\drives.ini","Drives", "O_Betriebsrat","") Global $L_Buchhaltung = IniRead(@ScriptDir & "\drives.ini","Drives", "L_Buchhaltung","") Global $M_Buchhaltung = IniRead(@ScriptDir & "\drives.ini","Drives", "M_Buchhaltung","") Global $R_domain2 = IniRead(@ScriptDir & "\drives.ini","Drives", "R_domain2","") Global $S_domain2 = IniRead(@ScriptDir & "\drives.ini","Drives", "S_domain2","") Global $T_domain2 = IniRead(@ScriptDir & "\drives.ini","Drives", "T_domain2","") Global $W_domain2 = IniRead(@ScriptDir & "\drives.ini","Drives", "W_domain2","") Global $U_domain2 = IniRead(@ScriptDir & "\drives.ini","Drives", "U_domain2","") Global $V_domain2 = IniRead(@ScriptDir & "\drives.ini","Drives", "V_domain2","") Global $S_domain1 = IniRead(@ScriptDir & "\drives.ini","Drives", "S_domain1","") Global $H_domain1 = IniRead(@ScriptDir & "\drives.ini","Drives", "H_domain1","") Global $X_domain1 = IniRead(@ScriptDir & "\drives.ini","Drives", "X_domain1","") Global $Q_MP = IniRead(@ScriptDir & "\drives.ini","Drives", "Q_MP","") Global $K_MP = IniRead(@ScriptDir & "\drives.ini","Drives", "K_MP","") Global $P_MP = IniRead(@ScriptDir & "\drives.ini","Drives", "P_MP","") Global $Y_MP = IniRead(@ScriptDir & "\drives.ini","Drives", "Y_MP","") Global $Z_MP = IniRead(@ScriptDir & "\drives.ini","Drives", "Z_MP","") Global $H_MP = IniRead(@ScriptDir & "\drives.ini","Drives", "H_MP","") Global $M_MC = IniRead(@ScriptDir & "\drives.ini","Drives", "M_MC","") ;~ Global $V_QPP = IniRead(@ScriptDir & "\drives.ini","Drives", "V_QPP","") ;~ Global $W_QPP = IniRead(@ScriptDir & "\drives.ini","Drives", "W_QPP","") $Testdomain = "www.google.de" $Testserver = "domain.local" $User = @UserName $LogonServer = @LogonServer ;~ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ alte Dateien und Verzeichnisse löschen ;~ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ HotKeySet("{ESC}", "_Terminate") If FileExists(@ScriptDir & "\ConnectUpdate.exe") Then FileDelete(@ScriptDir & "\ConnectUpdate.exe") _WriteLogData("ConnectUpdate.exe gelöscht") EndIf If FileExists(@ScriptDir & "\MappingUpdate.exe") Then FileDelete(@ScriptDir & "\MappingUpdate.exe") _WriteLogData("MappingUpdate.exe gelöscht") EndIf ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Header in die Log Dateio schreiben ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- _WriteLogData("######################################################################################################################") _WriteLogData("") _WriteLogData("") _WriteLogData("-----------------------------------------------neue Verbindung--------------------------------------------------------") _WriteLogData("") _WriteLogData("") _WriteLogData("----------------------------------------------------------------------------------------------------------------------") _WriteLogData("Programm : " & @ScriptName & ". Version=" & FileGetVersion(@ScriptName) & " mit Datum=" & FileGetTime(@ScriptName, 1, 1)) _WriteLogData("Benutzer : " & @UserName) _WriteLogData("LogonServer : " & @LogonServer) _WriteLogData("LogonDomain : " & @LogonDomain) _WriteLogData("LogonDNSDomain : " & @LogonDNSDomain) _WriteLogData("Desktopverzeichnis: " & @DesktopCommonDir) _WriteLogData("----------------------------------------------------------------------------------------------------------------------") ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Programmstart ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- _CreateGUI() _TrayMenue() AdlibRegister("_CheckDrives",30000) ; alle 30 Sekunden AdlibRegister("_VPNStatus",10000) ; alle 10 Sekunden While 1 ;trayIcon eingaben $msgtray = TrayGetMsg() Select ;~ Case $msgtray = 0 ;~ ContinueLoop Case $msgtray=$traymapping _MapDrives() Case $msgtray= $trayticket ShellExecute("http://it-support." & @LogonDNSDomain) Case $msgtray= $trayausblenden GUISetState(@SW_HIDE,$Childform) Case $msgtray= $trayeinblenden GUISetState(@SW_SHOW,$Childform) Case $msgtray= $traypassword $Testserver = @LogonDNSDomain $Connection = Ping($Testserver, 5000) If $Connection > 0 then _GetUserAD() Else TrayTip("Keine verbindung zum domain1 Netzwerk!", "Bitte stellen Sie eine verbinung zum domain1 Netzwerk her.",5) EndIf Case $msgtray= $traygpupdate Run("gpupdate", "", @SW_HIDE) If WinActive ("VPN Verbindungsstatus") Then $nMsg = GUIGetMsg() Switch $nMsg Case $btn_mapping _MapDriveChildForm() Case $btn_ticket ShellExecute("http://it-support." & @LogonDNSDomain) EndSwitch EndIf EndSelect WEnd ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Formular erstellen ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _CreateGUI() $aTaskbar = WinGetPos("[CLASS:Shell_TrayWnd]", "") $Childform = GUICreate("VPN Verbindungsstatus", 384, 70, 264, 164, BitOR($WS_POPUP,$WS_THICKFRAME), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE)) GUISetIcon("I:\domain5Connect V3\icon3.ico", -1) GUISetBkColor(0xFFFFFF) $lbl_info2 = GUICtrlCreateLabel("", 8, 5, 256, 56, BitOR($SS_CENTER,$SS_SUNKEN)) GUICtrlSetFont(-1, 9, 400, 0, "Arial") GUICtrlSetBkColor(-1, 0xD7E4F2) $lbl_ip = GUICtrlCreateLabel("", 8, 61, 256, 20, $SS_CENTER) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $btn_mapping = GUICtrlCreateButton("btn_mapping", 272, 15, 50, 50, $BS_ICON) GUICtrlSetImage(-1, @Scriptdir & "\Data\netzlaufwerk.ico", -1) GUICtrlSetTip(-1, "Netzlaufwerke neu verbinden") $btn_ticket = GUICtrlCreateButton("btn_ticket", 328, 15, 50, 50, $BS_ICON) GUICtrlSetImage(-1, @Scriptdir & "\Data\help.ico", -1) GUICtrlSetTip(-1, "Ticketsystem") ;~ GUICtrlSetData($lbl_ip, "IP Adresse: " & @IPAddress2) $aWin = WinGetPos($Childform) WinMove($Childform, "", @DesktopWidth - $aWin[2] , @DesktopHeight - $aWin[3] - $aTaskbar[3]) GUISetState(@SW_HIDE) EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Tray Menü ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _TrayMenue() Opt("TrayMenuMode", 3) ; Default tray menu items (Script Paused/Exit) will not be shown. TraySetIcon(@ScriptDir& "\Data\blue.ico") Local $settingsitem = TrayCreateMenu("Verbindunsstatusfenster") $trayeinblenden = TrayCreateItem("einblenden", $settingsitem) $trayausblenden = TrayCreateItem("ausblenden", $settingsitem) TrayCreateItem("") TrayCreateItem("") $traypassword = TrayCreateItem("Passwort Gültigkeit") TrayCreateItem("") TrayCreateItem("") $traymapping = TrayCreateItem("Laufwerke verbinden") TrayCreateItem("") $trayticket = TrayCreateItem("Ticketsystem") TrayCreateItem("") TrayCreateItem("") TrayCreateItem("") $traygpupdate = TrayCreateItem("gpupdate") ;~ $traytrennen = TrayCreateItem("Trennen") ;~ _WriteLogData("Tray Menü erstellt.") EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; VPN_Check ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _VPNCheck() $Testserver = @LogonDNSDomain $PingOnServer1 = Ping($Testserver, 1000) Return $PingOnServer1 $PingOnServer1="" $Testserver="" EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Internetverbindung prüfen ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; VPN Verbindungsstatus ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _VPNStatus() local $Testserver = @LogonDNSDomain $Connection = Ping($Testserver, 5000) If $Connection <= 0 Then GUICtrlSetBkColor($lbl_info2, @CRLF & 0x66FF00) GUICtrlSetData($lbl_info2, @CRLF & "Keine Verbindung zu domain1") TraySetIcon(@ScriptDir& "\Data\blue.ico") TraySetToolTip("Keine Verbidnung zu domain1." & @CRLF & "Bauen Sie die die Verbindung bitte mit dem Palo Alto Client her.") EndIf If $Connection > 0 Then If $Connection > 350 Then GUICtrlSetData($lbl_info2, @CRLF & "Achtung!" & @CRLF & "Sehr langsame Verbindung!" ) GUICtrlSetBkColor($lbl_info2, @CRLF & 0xFF0000) TraySetIcon(@ScriptDir& "\Data\red.ico") TraySetToolTip("Achtung!" & @CRLF & "Sehr langsame Verbindung!" & @CRLF & "Arbeit nur unter Schwierigkeiten möglich!") _WriteLogData("UMTS Geschwindingkeitswarnung. Antwortzeit: " & $Connection) ElseIf $Connection > 200 Then GUICtrlSetBkColor($lbl_info2, @CRLF & 0xFFFF00) GUICtrlSetData($lbl_info2, @CRLF & "Verbindungsgeschwindigkeit:" & @CRLF & "gut") TraySetIcon(@ScriptDir& "\Data\yellow.ico") TraySetToolTip("VPN Verbindung zu domain1 hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "gut") ElseIf $Connection < 200 Then GUICtrlSetBkColor($lbl_info2, @CRLF & 0x66FF00) GUICtrlSetData($lbl_info2, @CRLF & "Verbindungsgeschwindigkeit:" & @CRLF & "Sehr gut") TraySetIcon(@ScriptDir& "\Data\green.ico") TraySetToolTip("VPN Verbindung zu domain1 hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "Sehr gut") EndIf EndIf $Connection="" $netlogon="" $Testserver="" EndFunc ;==>_VPNStatus ;;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ; Laufwerke Verbinden aus Childform(Funktionsaufruf) ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _MapDriveChildForm() If WinActive ("VPN Verbindungsstatus") Then GUICtrlSetData($lbl_info2, @CRLF & "Netzlaufwerke werden verbunden.") GUICtrlSetBkColor($lbl_info2,0xD7E4F2) GUICtrlSetState($btn_mapping,$GUI_DISABLE) _WriteLogData("Starte Maping aus ChildForm/Tray") _MapDrives() GUICtrlSetState($btn_mapping,$GUI_ENABLE) GUICtrlSetData($lbl_info2, @CRLF &"Netzlaufwerke wurden neu verbunden." ) Sleep(1500) _WriteLogData("Ende Mapping aus Childform/Tray") EndIf EndFunc ;==>_MapDrive ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; AD benutzerdaten abfragen ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _GetUserAD() ;~ Benutzeraten aus Abfragen, wichtig für "Passwort läuft ab" Anzeigen Global $UserAccountControl, $samAccountName,$FirstName, $LastName, $title, $PasswordLastChanged, $IsAccountLocked, $DaysLeft,$msg,$icon ,$AnzeigeDatPwdExpires, $Counter Local $Found = 0 $AnmeldeUser = @UserName $LogonServer = @LogonDomain $serverName = $LogonServer $baseStr = "DC="& @LogonDomain&",DC=local" $filterStr = "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=" & @UserName & "))" $ado = ObjCreate("ADODB.Connection") ; erstellt eine Instanz des Objektes ADODB.Connection $ado.Provider = "ADSDSOObject" $ado.Open ("ADS-Search" ) $adoCmd = ObjCreate("ADODB.Command") $adoCmd.ActiveConnection = $ado $adoCmd.Properties("Page Size") = 1000 $adoCmd.Properties("Cache Results") = 1 $adoCmd.CommandText = ";" & $filterStr & ";ADsPath;subtree" _WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & StringReplace($LogonServer,"\","")) _WriteLogData("Benutzereinträge für " & @UserName & " werden gesucht, auf Server " & $LogonServer) _WriteLogData("Funktionsaufruf lautet : " & $adoCmd & " ") $objectList = $adoCmd.Execute GUICtrlSetData($lbl_info2, @CRLF & "Ein Moment bitte," & @CRLF &"Ihre Benutzereinträge werden gesucht.") $Counter = 1 While Not $objectList.EOF() $user = ObjGet($objectList.Fields("ADsPath").value) $samAccountName = $User.samAccountName If stringlower($samAccountName) = StringLower($AnmeldeUser) Then $UserAccountControl = $user.UserAccountControl $FirstName = $User.FirstName $LastName = $User.LastName $title = $User.title $PasswordLastChanged = $User.PasswordLastChanged ;pwdLastSet $IsAccountLocked = $User.IsAccountLocked _WriteLogData("Benutzereintrag für " & $FirstName & " " & $LastName & " wurde gefunden. Accountcontrol = " & $UserAccountControl) $DaysLeft = _DatumBerechnen($PasswordLastChanged) If $DaysLeft <= 10 Then Switch $DaysLeft Case 1 GUICtrlSetBkColor($lbl_info2, 0xf20000) MsgBox (16, "Achtung","Ihr Passwort läuft heute ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort umgehend!") Case 2 GUICtrlSetBkColor($lbl_info2, 0xFF9900) MsgBox (48, "Achtung","Ihr Passwort läuft morgen ab" & @CRLF & @CRLF & "Bitte ändern Sie das Passwort!") Case Else GUICtrlSetBkColor($lbl_info2, 0xFFFF00) MsgBox(64,"Achtung","Ihr Passwort läuft in " & $DaysLeft & " Tagen, am " & $AnzeigeDatPwdExpires & ", ab." & @CRLF & @CRLF & "Bitte ändern Sie das Passwort bei der nächsten Gelegenheit!") EndSwitch GUICtrlSetBkColor($lbl_info2, 0xD7E4F2) EndIf EndIf $objectList.MoveNext() $Counter += 1 Wend If $DaysLeft > 10 Then If WinActive ("VPN Verbindungsstatus") Then GUICtrlSetBkColor($lbl_info2, 0xDAF2D7) GUICtrlSetData($lbl_info2, @CRLF & "Information!"& @CRLF & "Ihr Passwort ist noch " & $DaysLeft &" Tage gültig, " & @CRLF & "es läuft am " & $AnzeigeDatPwdExpires & " ab." & @CRLF & "Es ist nicht erforderlich das Passwort zu ändern.") Sleep(5000) Else TrayTip("Information!", "Ihr Passwort ist noch " & $DaysLeft &" Tage gültig, es läuft am " & $AnzeigeDatPwdExpires & " ab. Es ist nicht erforderlich das Passwort zu ändern.",5) EndIf EndIf GUICtrlSetData($lbl_info2, @CRLF &"Suche nach Benutzerdaten abgeschlossen.") Sleep(500) GUICtrlSetBkColor($lbl_info2, 0xD7E4F2) GUICtrlSetData($lbl_info2, @CRLF &"Verbindung der Netzlaufwerke wird vorbereitet.") Sleep(500) $UserAccountControl="" $samAccountName="" $FirstName="" $LastName="" $title="" $PasswordLastChanged="" $IsAccountLocked="" $DaysLeft="" $msg="" $icon="" $AnzeigeDatPwdExpires="" $Counter="" EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Kennwort "Lebensdauer" berechnen ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _DatumBerechnen($ChangedDate) ;~ wird von _GetUserAD gebraucht local $AnzeigeDatPwdChanged, $Day2Change, $Date2Change local $HeuteJMT = _NowCalcDate() local $DatChangedJMT = StringMid( $ChangedDate, 1, 4) & "/" & StringMid( $ChangedDate, 5, 2) & "/" & StringMid( $ChangedDate, 7, 2) $Date2Change = _DateAdd('d',90,$DatChangedJMT) $Day2Change = _DateDiff( 'd',_NowCalc(),$Date2Change) $AnzeigeDatPwdExpires = StringMid( $Date2Change, 9, 2) & "." & StringMid( $Date2Change, 6, 2) & "." & StringMid( $Date2Change, 1, 4) Return $Day2Change _WriteLogData("Passwort Ablufdatum emittelt") $AnzeigeDatPwdChanged="" $Day2Change="" $Date2Change="" $HeuteJMT="" $ChangedDate="" $DatChangedJMT="" EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; Laufwerke Verbinden (Funktionsaufruf) ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _MapDrive() $Testserver = @LogonDNSDomain $Ping = Ping($Testserver,1000) If $Ping > 0 Then _WriteLogData("Starte Mapping") _MapDrives() _WriteLogData("Mapping ende") EndIf EndFunc ;==>_MapDrive ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; laufwerke verbinden ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _MapDrives() _AD_Open() $aUser = _AD_GetUserGroups(@UserName) If WinActive ("VPN Verbindungsstatus") Then Else TrayTip("Ihre Netzlaufwerke werden verbunden", "Bitte gedulden Sie sich einen Moment.",1) GUICtrlSetData($lbl_info2, @CRLF &"Ihre Netzlaufwerke werden verbunden," & @CRLF & "Bitte gedulden Sie sich einen Moment.") Sleep(250) EndIf ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ domain1 ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If @LogonDNSDomain = "domain.local" Then _ArraySearch($aUser, "GRP_Abteilung_IT" , 0, 0, 0, 1) If Not @error Then $Laufwerk ="H:" $Drive = $H_domain1 & @UserName _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "S:" $Drive = $S_domain1 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk ="X:" $Drive = $X_domain1 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf EndIf If @LogonDNSDomain = "domain5.local" Then _ArraySearch($aUser, "Mitarbeiter_CPP" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "G:" $Drive = $G_CPP _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk ="H:" $Drive = $H_CPP & @UserName _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf _ArraySearch($aUser, "GRP_IT-Abteilung" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "S:" $Drive = $S_domain1 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk ="X:" $Drive = $X_domain1 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf _ArraySearch($aUser, "CN=G-Betriebsrat" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "O:" $Drive = $O_Betriebsrat _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf _ArraySearch($aUser, "CN=G-Buchhaltung" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "L:" $Drive = $L_Buchhaltung _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "M:" $Drive = $M_Buchhaltung _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf EndIf If @LogonDNSDomain = "domain2.local" Then $_domain2_Alle= _ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1) $QPP= _ArraySearch($aUser, "CN=AbteilungQPP" , 0, 0, 0, 1) If $domain2_Alle <> @error Then If $QPP <> @error Then $Laufwerk = "V:" $Drive = $V_domain2 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "W:" $Drive = $W_domain2 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" else $Laufwerk = "R:" $Drive = $R_domain2 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "S:" $Drive = $S_domain2 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "T:" $Drive = $T_domain2 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "U:" $Drive = $U_domain2 _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf EndIf EndIf If @LogonDNSDomain = "domain3.local" Then _ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "H:" $Drive = $H_MP _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "Q:" $Drive = $Q_MP _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "P:" $Drive = $P_MP _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "Y:" $Drive = $Y_MP _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "Z:" $Drive = $Z_MP _Laufwerk_verbinden($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf EndIf _AD_Close() EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _CheckDrives() $Testserver = @LogonDNSDomain $Ping = Ping($Testserver,1000) If $Ping > 0 Then _AD_Open() $aUser = _AD_GetUserGroups(@UserName) If @LogonDNSDomain = "domain.local" Then _ArraySearch($aUser, "GRP_Abteilung_IT" , 0, 0, 0, 1) If Not @error Then $Laufwerk ="H:" $Drive = $H_domain1 & @UserName _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "S:" $Drive = $S_domain1 $Status=DriveStatus($Laufwerk) _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk ="X:" $Drive = $X_domain1 $Status=DriveStatus($Laufwerk) _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf EndIf If @LogonDNSDomain = "domain5.local" Then _ArraySearch($aUser, "Mitarbeiter_CPP" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "G:" $Drive = $G_CPP _DriveCheckState($Laufwerk, $Drive) $Laufwerk ="H:" $Drive = $H_CPP _DriveCheckState($Laufwerk, $Drive) EndIf _ArraySearch($aUser, "GRP_IT-Abteilung" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "S:" $Drive = $S_domain1 _DriveCheckState($Laufwerk, $Drive) $Laufwerk ="X:" $Drive = $X_domain1 _DriveCheckState($Laufwerk, $Drive) EndIf _ArraySearch($aUser, "CN=G-Betriebsrat" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "O:" $Drive = $O_Betriebsrat _DriveCheckState($Laufwerk, $Drive) EndIf _ArraySearch($aUser, "CN=G-Buchhaltung" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "L:" $Drive = $L_Buchhaltung _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "M:" $Drive = $M_Buchhaltung _DriveCheckState($Laufwerk, $Drive) EndIf EndIf If @LogonDNSDomain = "domain2.local" Then _ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1) $_domain2_Alle= _ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1) $QPP= _ArraySearch($aUser, "CN=AbteilungQPP" , 0, 0, 0, 1) If $domain2_Alle >=0 Then If $QPP >=0 Then $Laufwerk = "V:" $Drive = $V_domain2 _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "W:" $Drive = $W_domain2 _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" else $Laufwerk = "R:" $Drive = $R_domain2 _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "S:" $Drive = $S_domain2 _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "T:" $Drive = $T_domain2 _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "U:" $Drive = $U_domain2 _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf EndIf EndIf If @LogonDNSDomain = "domain3.local" Then _ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "H:" $Drive = $H_MP _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "Q:" $Drive = $Q_MP _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "P:" $Drive = $P_MP _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "Y:" $Drive = $Y_MP _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" $Laufwerk = "Z:" $Drive = $Z_MP _DriveCheckState($Laufwerk, $Drive) $Laufwerk = "" $Drive = "" EndIf EndIf _AD_Close() ElseIf $Ping = 0 Then Sleep(1000) $Ping2 = Ping($Testserver,5000) If $Ping2 = 0 Then _unmappDrives() EndIf EndIf EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _Laufwerk_verbinden($Laufwerk, $Drive) $count =0 Do DriveMapDel($Laufwerk) _WriteLogData("Laufwerk " & $Laufwerk & " getrennt.") DriveMapAdd($Laufwerk, $Drive) If WinActive ("VPN Verbindungsstatus") Then GUICtrlSetData($lbl_info2, @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & "Laufwerk " & $Laufwerk & " wird verbunden.") Else TrayTip("Netzlaufwerke werden verbunden" , "Laufwerk " & $Laufwerk & " wird verbunden.",1) Sleep(250) _WriteLogData("Laufwerk " & $Laufwerk &" wird verbunden.") EndIf Sleep(1000) If @error Then $Error = @error EndIf $State = DriveStatus($Laufwerk) If $State = "INVALID" Then $count +=1 _ErrorLog($Error, $Laufwerk) _WriteLogData("Laufwerk " & $Laufwerk & " nicht verbunden. Fehlversuch:" & $count) Else ExitLoop EndIf Until $count >= 3 If $count >=3 Then _ErrorLog($Error, $Laufwerk) MsgBox(48,"Netzlaufwerkverbindung fehlgeschlagen", "Laufwerk: " & $Laufwerk & " konnte nicht verbunden werden." & @CR & _ "Bitte wenden Sie sich an den IT Support.") EndIf If WinActive ("VPN Verbindungsstatus") Then GUICtrlSetData($lbl_info2, @CRLF &@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF & "Laufwerk " & $Laufwerk & " erfolgreich verbunden.") Sleep(250) _WriteLogData("Laufwerk " & $Laufwerk & " verbunden.") Else TrayTip("Netzlaufwerke werden verbunden", "Laufwerk " & $Laufwerk & " verbunden.",1) Sleep(250) _WriteLogData("Laufwerk " & $Laufwerk & " aus Childform verbunden.") EndIf $Error = "" $Laufwerk = "" $aUser= "" $State = "" $Drive = "" Sleep(500) EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _DriveCheckState($Laufwerk, $Drive) $Status=DriveStatus($Laufwerk) If $Status = "INVALID" Then _WriteLogData("Laufwerk " & $Laufwerk &" wurde getrennt, wird neu verbunden.") $count =0 Do DriveMapAdd($Laufwerk, $Drive) Sleep(1000) If @error Then $Error = @error MsgBox(0,"",$Error) $count +=1 _WriteLogData("Laufwerk " & $Laufwerk &" nicht neu verbunden. Fehlversuch:" & $count) Else ExitLoop EndIf Until $count >= 3 If $count >=3 Then $Error = @error _ErrorLog($Error, $Laufwerk) Else $Error = "" If WinActive ("VPN Verbindungsstatus") Then GUICtrlSetData($lbl_info2, @CRLF &@CRLF & @CRLF & "Netzlaufwerke werden verbunden," & @CRLF & @CRLF &"Laufwerk " & $Laufwerk & " erfolgreich verbunden.") Sleep(250) _WriteLogData("Laufwerk " & $Laufwerk &" verbunden.") Else ;~ TrayTip("Netzlaufwerke werden verbunden","Laufwerk " & $Laufwerk & " erfolgreich verbunden.",1) ;das lassen wir beim Status check sonst kommen popups EndIf EndIf EndIf $Status = "" $Laufwerk = "" $count= 0 $Drive="" EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _unmappDrives() _AD_Open() $aUser = _AD_GetUserGroups(@UserName) ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ domain1 ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If @LogonDNSDomain = "domain.local" Then ;~ _ArraySearch($aUser, "GRP_Abteilung_IT" , 0, 0, 0, 1) If Not @error Then $Laufwerk ="H:" $Drive = $H_domain1 & @UserName _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "S:" $Drive = $S_domain1 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk ="X:" $Drive = $X_domain1 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" EndIf EndIf If @LogonDNSDomain = "domain5.local" Then ;~ _ArraySearch($aUser, "Mitarbeiter_CPP" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "G:" $Drive = $G_CPP _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk ="H:" $Drive = $H_CPP & @UserName _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" ;~ _ArraySearch($aUser, "GRP_IT-Abteilung" , 0, 0, 0, 1) $Laufwerk = "S:" $Drive = $S_domain1 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk ="X:" $Drive = $X_domain1 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" ;~ _ArraySearch($aUser, "CN=G-Betriebsrat" , 0, 0, 0, 1) $Laufwerk = "O:" $Drive = $O_Betriebsrat _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" ;~ _ArraySearch($aUser, "CN=G-Buchhaltung" , 0, 0, 0, 1) $Laufwerk = "L:" $Drive = $L_Buchhaltung _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "M:" $Drive = $M_Buchhaltung _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" EndIf EndIf If @LogonDNSDomain = "domain2.local" Then $_domain2_Alle= _ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1) $QPP= _ArraySearch($aUser, "CN=AbteilungQPP" , 0, 0, 0, 1) If $domain2_Alle <> @error Then If $QPP <> @error Then $Laufwerk = "V:" $Drive = $V_domain2 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "W:" $Drive = $W_domain2 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" else $Laufwerk = "R:" $Drive = $R_domain2 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "S:" $Drive = $S_domain2 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "T:" $Drive = $T_domain2 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "U:" $Drive = $U_domain2 _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" EndIf EndIf EndIf If @LogonDNSDomain = "domain3.local" Then _ArraySearch($aUser, "CN=Alle" , 0, 0, 0, 1) If Not @error Then $Laufwerk = "H:" $Drive = $H_MP _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "Q:" $Drive = $Q_MP _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "P:" $Drive = $P_MP _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "Y:" $Drive = $Y_MP _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" $Laufwerk = "Z:" $Drive = $Z_MP _Laufwerk_trennen($Laufwerk) $Laufwerk = "" $Drive = "" EndIf EndIf _AD_Close EndFunc ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Func _Laufwerk_trennen($Laufwerk) $Status=DriveStatus($Laufwerk) If $Status <> "INVALID" Then ;~ MsgBox(0,"",$Status) If WinActive ("VPN Verbindungsstatus") Then GUICtrlSetData($lbl_info2, @CRLF &"Verbindung beendet" & @CRLF & "Ihre Netzlaufwerke werden getrennt") Sleep(250) Else TrayTip("Verbindung beendet","Ihre Netzlaufwerke werden getrennt",1) EndIf DriveMapDel($Laufwerk) _WriteLogData("Laufwerk " & $Laufwerk & " getrennt.") EndIf Sleep(500) $Error = "" $Laufwerk = "" $aUser= "" $State = "" $Drive = "" Sleep(500) EndFunc ;~ ################################################################################################################################################################################################################# ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ################################################################################################################################################################################################################# Func _ErrorLog($iError, $iLaufwerk) If $iError = 1 Then _WriteLogData("Netzlaufwerk "& $iLaufwerk &" nicht verbunden - Undefinierter / anderer Fehler. @extended enthält den Rückgabewert der Windows API.") ElseIf $iError = 2 Then _WriteLogData("Netzlaufwerk "& $iLaufwerk &" nicht verbunden - Der Zugriff auf die Remote-Freigabe wurde verweigert") ElseIf $iError = 3 Then _WriteLogData("Netzlaufwerk "& $iLaufwerk &" nicht verbunden - Das Gerät ist bereits zugewiesen") ElseIf $iError = 4 Then _WriteLogData("Netzlaufwerk "& $iLaufwerk &" nicht verbunden - Ungültiger Gerätename") ElseIf $iError = 5 Then _WriteLogData("Netzlaufwerk "& $iLaufwerk &" nicht verbunden - Ungültige Remote-Freigabe") ElseIf $iError = 6 Then _WriteLogData("Netzlaufwerk "& $iLaufwerk &" nicht verbunden - Ungültiges Passwort") EndIf EndFunc ;~ ################################################################################################################################################################################################################# ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;~ #################################################################################################################################################################################################################