135 lines
5.7 KiB
VB.net
135 lines
5.7 KiB
VB.net
Imports System.IO
|
|
Imports System.Xml.Serialization
|
|
Imports DigitalData.Modules.Config
|
|
Imports DigitalData.Modules.Logging
|
|
Imports DigitalData.Modules.Interfaces
|
|
Imports DigitalData.GUIs.MonoRepoUtils.Config
|
|
Imports System.Text
|
|
|
|
Public Class frmStart
|
|
Private Const ZUGFERD_SERVICE = "ZUGFERD_SERVICE"
|
|
|
|
Private Serializer As XmlSerializer
|
|
Private Configs As New List(Of String) From {
|
|
ZUGFERD_SERVICE
|
|
}
|
|
|
|
Private LogConfig As LogConfig
|
|
Private Config As ConfigManager(Of Config)
|
|
|
|
Private Sub frmStart_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
ComboBoxEdit1.Properties.Items.Clear()
|
|
ComboBoxEdit1.Properties.Items.AddRange(Configs)
|
|
|
|
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, Application.StartupPath, Nothing, "Digital Data", "Monorepo Utils")
|
|
Config = New ConfigManager(Of Config)(LogConfig, Application.CommonAppDataPath)
|
|
|
|
txxTemplate.Text = Config.Config.EmailTemplate.BaseHtml
|
|
txtBannerUrl.Text = Config.Config.EmailTemplate.BannerUrl
|
|
txtTrackingUrl.Text = Config.Config.EmailTemplate.TrackingLink
|
|
txtOutputPath.Text = Config.Config.EmailTemplate.OutputPath
|
|
txtADGroup.Text = Config.Config.EmailTemplate.ActiveDirectoryGroup
|
|
txtADRoot.Text = Config.Config.EmailTemplate.ActiveDirectoryRoot
|
|
End Sub
|
|
|
|
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
|
|
Dim oConfigName = ComboBoxEdit1.SelectedItem
|
|
|
|
Select Case oConfigName
|
|
Case ZUGFERD_SERVICE
|
|
MemoEdit1.Text = CreateConfigTemplate(Of DDZUGFeRDService.Config)()
|
|
|
|
Case Else
|
|
MsgBox($"Config {oConfigName} does not exist!", MsgBoxStyle.Exclamation, Text)
|
|
End Select
|
|
End Sub
|
|
|
|
Private Function CreateConfigTemplate(Of T)()
|
|
Serializer = New XmlSerializer(GetType(T))
|
|
Dim oConfig As T = Activator.CreateInstance(GetType(T))
|
|
Dim oBytes As Byte()
|
|
|
|
Using oStream = New MemoryStream()
|
|
Serializer.Serialize(oStream, oConfig)
|
|
oBytes = oStream.ToArray()
|
|
End Using
|
|
|
|
Return System.Text.Encoding.UTF8.GetString(oBytes)
|
|
End Function
|
|
|
|
Private Sub frmStart_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
|
SaveSettings()
|
|
End Sub
|
|
|
|
Private Sub SimpleButton2_Click(sender As Object, e As EventArgs) Handles SimpleButton2.Click
|
|
Dim ActiveDir = New ActiveDirectoryInterface(LogConfig, Config.Config.EmailTemplate.ActiveDirectoryRoot)
|
|
Dim oCustomAttributes As New List(Of AttributeMapping) From {
|
|
New AttributeMapping With {.AttributeName = "title", .FirebirdSyskey = "", .MSSQLColumn = ""}
|
|
}
|
|
Dim oUsers = ActiveDir.ListUsers(Config.Config.EmailTemplate.ActiveDirectoryGroup, oCustomAttributes)
|
|
MsgBox(oUsers.Count & " users found.", MsgBoxStyle.Information, "Yo")
|
|
|
|
Try
|
|
For Each oUser As ADUser In oUsers
|
|
Dim oHtml As String = GenerateSignatureFileFromTemplate(oUser, Config.Config.EmailTemplate)
|
|
Dim oOutputPath = Config.Config.EmailTemplate.OutputPath
|
|
Dim oFilePath As String = Path.Combine(oOutputPath, $"Signatur-{oUser.samAccountName}.html")
|
|
|
|
If Not Directory.Exists(oOutputPath) Then
|
|
Directory.CreateDirectory(oOutputPath)
|
|
End If
|
|
|
|
If File.Exists(oFilePath) Then
|
|
File.Copy(oFilePath, oFilePath & "." & Now.ToString("yyyy-MM-dd_HH-mm"), True)
|
|
End If
|
|
|
|
File.WriteAllText(oFilePath, oHtml)
|
|
Next
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Signature Generator")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Function GenerateSignatureFileFromTemplate(User As ADUser, EmailTemplateConfig As EmailTemplateConfig)
|
|
Dim oJobTitle = User.CustomAttributes.Where(Function(a) a.Name = "title").Single().Value
|
|
|
|
Return EmailTemplateConfig.BaseHtml.
|
|
Replace("__FULL_NAME__", $"{User.GivenName} {User.Surname}").
|
|
Replace("__JOB_TITLE__", oJobTitle).
|
|
Replace("__MAIL_ADDRESS__", User.Email).
|
|
Replace("__BANNER_URL__", EmailTemplateConfig.BannerUrl).
|
|
Replace("__TRACKER_URL__", EmailTemplateConfig.TrackingLink)
|
|
End Function
|
|
|
|
Private Sub SaveSettings()
|
|
Config.Config.EmailTemplate.BaseHtml = txxTemplate.Text
|
|
Config.Config.EmailTemplate.BannerUrl = txtBannerUrl.Text
|
|
Config.Config.EmailTemplate.TrackingLink = txtTrackingUrl.Text
|
|
Config.Config.EmailTemplate.OutputPath = txtOutputPath.Text
|
|
Config.Config.EmailTemplate.ActiveDirectoryGroup = txtADGroup.Text
|
|
Config.Config.EmailTemplate.ActiveDirectoryRoot = txtADRoot.Text
|
|
Config.Save()
|
|
End Sub
|
|
|
|
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
|
|
SaveSettings()
|
|
End Sub
|
|
|
|
Private Sub btnOpenDirectory_Click(sender As Object, e As EventArgs) Handles btnOpenDirectory.Click
|
|
Dim oResult = XtraFolderBrowserDialog1.ShowDialog()
|
|
|
|
If oResult = DialogResult.OK Then
|
|
Dim oPath = XtraFolderBrowserDialog1.SelectedPath
|
|
Dim oFiles = IO.Directory.GetFiles(oPath, "*.dll")
|
|
Dim oStringBuilder As New StringBuilder()
|
|
|
|
For Each oFile In oFiles
|
|
Dim oFileInfo = New FileInfo(oFile)
|
|
Dim oText = $"<File Id=""{oFileInfo.Name}"" Name=""{oFileInfo.Name}"" KeyPath=""no"" Checksum=""yes"" />"
|
|
oStringBuilder.Append($"{oText}{vbNewLine}")
|
|
Next
|
|
|
|
MemoEdit2.EditValue = oStringBuilder.ToString
|
|
End If
|
|
End Sub
|
|
End Class |