86 lines
3.0 KiB
VB.net
86 lines
3.0 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 = GetGroups()
|
|
Dim oAttributeMappings = GetAttributeMappings()
|
|
_Logger.Debug("Found {0} Groups", oGroups)
|
|
|
|
For Each oGroup In oGroups
|
|
_Logger.Debug("Syncing Group {0}", oGroup)
|
|
Dim oSyncedUsers = oSync.SyncUsersForGroup(oGroup, oAttributeMappings)
|
|
|
|
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
|
|
|
|
Private Function GetGroups() As List(Of String)
|
|
Try
|
|
Dim oGroups As New List(Of String)
|
|
Dim oDatatable = _MSSQL.GetDatatable("SELECT NAME FROM TBDD_GROUPS WHERE AD_SYNC = 1 AND ACTIVE = 1")
|
|
|
|
For Each oRow As DataRow In oDatatable.Rows
|
|
oGroups.Add(oRow.Item("NAME"))
|
|
Next
|
|
|
|
Return oGroups
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
Return New List(Of String)
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetAttributeMappings() As List(Of AttributeMapping)
|
|
Dim oDatatable = _MSSQL.GetDatatable("SELECT * FROM TBDD_EXTATTRIBUTES_MATCHING")
|
|
|
|
Dim oAttributeMappings = New List(Of AttributeMapping)
|
|
|
|
For Each oRow As DataRow In oDatatable.Rows
|
|
oAttributeMappings.Add(New AttributeMapping() With {
|
|
.AttributeName = oRow.Item("EXT_ATTRIBUTE"),
|
|
.FirebirdSyskey = oRow.Item("FB_SYS_KEY"),
|
|
.MSSQLColumn = oRow.Item("TBDD_USER_COLUMN")
|
|
})
|
|
Next
|
|
|
|
Return oAttributeMappings
|
|
End Function
|
|
|
|
Public Function ShouldStart(Arguments As ADSyncArgs) As Boolean Implements IJob(Of ADSyncArgs).ShouldStart
|
|
Return Arguments.Enabled
|
|
End Function
|
|
End Class
|