Modules/Jobs/EDMI/ADSync/ADSyncJob.vb
2019-04-30 16:54:04 +02:00

63 lines
2.2 KiB
VB.net

Imports System.Collections.Generic
Imports System.Data
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Interfaces
Imports DigitalData.Modules.Logging
Public Class ADSyncJob
Inherits JobBase
Implements IJob(Of ADSyncArgs)
Public Sub New(LogConfig As LogConfig, Firebird As Firebird, MSSQL As MSSQLServer)
MyBase.New(LogConfig, Firebird, MSSQL)
End Sub
Public Sub Start(Arguments As ADSyncArgs) Implements IJob(Of ADSyncArgs).Start
Dim oJobName As String = [GetType]().Name
Try
Dim oSync = New ActiveDirectoryInterface(_LogConfig, _Firebird, _MSSQL, Arguments.RootPath)
_Logger.Info("Running job {0}", oJobName)
If oSync.Authenticate() = False Then
_Logger.Warn("Job {0} could not be completed! Authentication failed!", oJobName)
Exit Sub
End If
'Dim oGroups As List(Of ADGroup) = oSync.ListGroups()
' 30.04.19: MSSQL als führendes System
Dim oGroups As New List(Of String)
Dim oDatatable = _MSSQL.GetDatatable("SELECT NAME FROM TBDD_GROUPS WHERE AD_SYNC = 1 AND ACTIVE = 1")
_Logger.Debug("Found {0} Groups", oDatatable.Rows.Count)
For Each oRow As DataRow In oDatatable.Rows
oGroups.Add(oRow.Item("NAME"))
Next
For Each oGroup In oGroups
_Logger.Debug("Syncing Group {0}", oGroup)
Dim oSyncedUsers = oSync.SyncUsersForGroup(oGroup)
If oSyncedUsers Is Nothing Then
_Logger.Warn("Group {0} could not be synced!", oGroup)
ElseIf oSyncedUsers.Count > 0 Then
_Logger.Info("Synced {0} users for group {1}", oSyncedUsers.Count, oGroup)
End If
Next
_Logger.Info("Job {0} completed!", oJobName)
Catch ex As Exception
_Logger.Warn("Job {0} failed!", oJobName)
_Logger.Error(ex)
End Try
End Sub
Public Function ShouldStart(Arguments As ADSyncArgs) As Boolean Implements IJob(Of ADSyncArgs).ShouldStart
Return Arguments.Enabled
End Function
End Class