diff --git a/DDMonorepo.sln b/DDMonorepo.sln index 21c291ff..82a562e3 100644 --- a/DDMonorepo.sln +++ b/DDMonorepo.sln @@ -138,6 +138,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Config.Test", "Config.Test\ EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DBCleaner", "DBCleaner\DBCleaner.vbproj", "{5A7913CE-7D3D-4E84-B23D-4747C178CD71}" EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Mailfunctions", "Mailfunctions\Mailfunctions.vbproj", "{C9827B8D-9EF9-411A-A6BF-4807794F8C8F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -368,6 +370,10 @@ Global {5A7913CE-7D3D-4E84-B23D-4747C178CD71}.Debug|Any CPU.Build.0 = Debug|Any CPU {5A7913CE-7D3D-4E84-B23D-4747C178CD71}.Release|Any CPU.ActiveCfg = Release|Any CPU {5A7913CE-7D3D-4E84-B23D-4747C178CD71}.Release|Any CPU.Build.0 = Release|Any CPU + {C9827B8D-9EF9-411A-A6BF-4807794F8C8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9827B8D-9EF9-411A-A6BF-4807794F8C8F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9827B8D-9EF9-411A-A6BF-4807794F8C8F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9827B8D-9EF9-411A-A6BF-4807794F8C8F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -429,6 +435,7 @@ Global {8A8F20FC-C46E-41AC-BEE7-218366CFFF99} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC} {B9A63193-1391-4E20-B578-0867F330396C} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC} {5A7913CE-7D3D-4E84-B23D-4747C178CD71} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A} + {C9827B8D-9EF9-411A-A6BF-4807794F8C8F} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286} diff --git a/Mailfunctions/Mail.vb b/Mailfunctions/Mail.vb new file mode 100644 index 00000000..a9d612fa --- /dev/null +++ b/Mailfunctions/Mail.vb @@ -0,0 +1,13 @@ +Imports DigitalData.Modules.Logging +Public Class Mail + Private LogConfig As LogConfig + Private Logger As DigitalData.Modules.Logging.Logger + Public Sub New(LogConfig As LogConfig) + LogConfig = LogConfig + Logger = LogConfig.GetLogger() + Logger.Info("MailingClass initialized") + End Sub + Public Function Connecttest() + + End Function +End Class diff --git a/Mailfunctions/Mailfunctions.vbproj b/Mailfunctions/Mailfunctions.vbproj new file mode 100644 index 00000000..6e56ce83 --- /dev/null +++ b/Mailfunctions/Mailfunctions.vbproj @@ -0,0 +1,120 @@ + + + + + Debug + AnyCPU + {C9827B8D-9EF9-411A-A6BF-4807794F8C8F} + Library + Mailfunctions + Mailfunctions + 512 + Windows + v4.7.2 + true + + + true + full + true + true + bin\Debug\ + Mailfunctions.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + pdbonly + false + true + true + bin\Release\ + Mailfunctions.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + ..\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll + + + P:\Visual Studio Projekte\Bibliotheken\Limilabs\Mail.dll\Mail.dll + + + + ..\packages\NLog.4.7.11\lib\net45\NLog.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + \ No newline at end of file diff --git a/Mailfunctions/My Project/Application.Designer.vb b/Mailfunctions/My Project/Application.Designer.vb new file mode 100644 index 00000000..88dd01c7 --- /dev/null +++ b/Mailfunctions/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/Mailfunctions/My Project/Application.myapp b/Mailfunctions/My Project/Application.myapp new file mode 100644 index 00000000..758895de --- /dev/null +++ b/Mailfunctions/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/Mailfunctions/My Project/AssemblyInfo.vb b/Mailfunctions/My Project/AssemblyInfo.vb new file mode 100644 index 00000000..0d865ee5 --- /dev/null +++ b/Mailfunctions/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Allgemeine Informationen über eine Assembly werden über die folgenden +' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +' die einer Assembly zugeordnet sind. + +' Werte der Assemblyattribute überprüfen + + + + + + + + + + +'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird. + + +' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +' +' Hauptversion +' Nebenversion +' Buildnummer +' Revision +' +' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +' indem Sie "*" wie unten gezeigt eingeben: +' + + + diff --git a/Mailfunctions/My Project/Resources.Designer.vb b/Mailfunctions/My Project/Resources.Designer.vb new file mode 100644 index 00000000..702d170b --- /dev/null +++ b/Mailfunctions/My Project/Resources.Designer.vb @@ -0,0 +1,62 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + ''' + ''' A strongly-typed resource class, for looking up localized strings, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Returns the cached ResourceManager instance used by this class. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Mailfunctions.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set(ByVal value As Global.System.Globalization.CultureInfo) + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/Mailfunctions/My Project/Resources.resx b/Mailfunctions/My Project/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/Mailfunctions/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Mailfunctions/My Project/Settings.Designer.vb b/Mailfunctions/My Project/Settings.Designer.vb new file mode 100644 index 00000000..fd3119d4 --- /dev/null +++ b/Mailfunctions/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.Mailfunctions.My.MySettings + Get + Return Global.Mailfunctions.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/Mailfunctions/My Project/Settings.settings b/Mailfunctions/My Project/Settings.settings new file mode 100644 index 00000000..85b890b3 --- /dev/null +++ b/Mailfunctions/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Mailfunctions/packages.config b/Mailfunctions/packages.config new file mode 100644 index 00000000..25ba1cdf --- /dev/null +++ b/Mailfunctions/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Modules.Messaging/Limilab.vb b/Modules.Messaging/Limilab.vb new file mode 100644 index 00000000..c9f9b310 --- /dev/null +++ b/Modules.Messaging/Limilab.vb @@ -0,0 +1,149 @@ +Imports DigitalData.Modules.Logging +Imports Limilabs.Mail +Imports Limilabs.Client.IMAP +Imports Limilabs.Client +Imports System.Net.Security +Imports System +Imports System.Security.Authentication + +Public Class Limilab + Private Initialized As Boolean = False + Private LogConfig As LogConfig + Private Logger As DigitalData.Modules.Logging.Logger + Private IMAPServer As String + Private IMAPPort As Integer + Private User As String + Private Password As String + Private AuthType As String + Private ImapObject As Imap + Public Sub New(LogConfig As LogConfig) + LogConfig = LogConfig + Logger = LogConfig.GetLogger() + Logger.Info("Limilab initialized") + End Sub + Public Sub InitIMAP(oImapServer As String, oPort As Integer, oUser As String, oPassword As String, oAuthType As String, Optional Folder As String = "Inbox") + IMAPServer = oImapServer + IMAPPort = oPort + User = oUser + Password = oPassword + AuthType = oAuthType + Initialized = True + End Sub + ''' + ''' Tests connection to a given IMAP Server by connecting and doing a simple message query. + ''' + ''' IP-Address or Domainname of Server + ''' IMAP-Port + ''' IMAP-Username + ''' IMAP-Password + ''' The folder to fetch messages from. Defaults to `Inbox` + ''' True if connection and query were successful. False otherwise. + Public Function IMAPTestLogin() As Boolean + Logger.Debug("Testing Login to Server {0}:{1} with user {2}", IMAPServer, IMAPPort, User) + If Initialized = False Then + Return False + End If + Try + Logger.Debug("Connecting...") + Dim oReturn As Boolean = ImapConnect() + If oReturn = True Then + ImapObject.Close() + End If + Return oReturn + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function + Private Function ImapConnect() As Boolean + Try + If Initialized = False Then + Return True + End If + Dim oReturnImap As New Imap() + + If AuthType.EndsWith("TLS") Then + oReturnImap.SSLConfiguration.EnabledSslProtocols = SslProtocols.Tls12 + ' we will use custom validation + AddHandler oReturnImap.ServerCertificateValidate, AddressOf Validate + Logger.Debug("Connecting to IMAP-Server without port...") + oReturnImap.Connect(IMAPServer) + + ElseIf AuthType = "SSL" Then + ' we will use custom validation + AddHandler oReturnImap.ServerCertificateValidate, AddressOf Validate + Logger.Debug($"Connecting to IMAP-Server with port {IMAPPort}...") + oReturnImap.ConnectSSL(IMAPServer, IMAPPort) + ElseIf AuthType = "Simple" Then + + End If + Logger.Debug(">> Connected to IMAP-Server!") + Dim oSupportsStartTLS As Boolean = oReturnImap.SupportedExtensions() _ + .Contains(ImapExtension.StartTLS) + If oSupportsStartTLS And AuthType.EndsWith("TLS") Then + Logger.Debug("Server supports StartTLS, so starting...") + oReturnImap.StartTLS() + End If + Logger.Debug("Login with User and password...") + oReturnImap.UseBestLogin(User, Password) + Logger.Debug(">> Logged on!") + ImapObject = oReturnImap + Return True + Catch ex As Exception + Logger.Error(ex) + If Not IsNothing(ex.InnerException) Then + Logger.Warn("Inner Exception ImapConnect: " + ex.InnerException.Message) + End If + + + Return False + End Try + End Function + Private Sub Validate( + ByVal sender As Object, + ByVal e As ServerCertificateValidateEventArgs) + + Const ignoredErrors As SslPolicyErrors = + SslPolicyErrors.RemoteCertificateChainErrors Or _ ' self-signed + SslPolicyErrors.RemoteCertificateNameMismatch ' name mismatch + + Dim nameOnCertificate As String = e.Certificate.Subject + + If (e.SslPolicyErrors And Not ignoredErrors) = SslPolicyErrors.None Then + e.IsValid = True + Return + End If + e.IsValid = False + End Sub + Public Function ImapGetMessageIDs() As List(Of Long) + Dim oListuids As New List(Of Long) + Try + ImapObject.SelectInbox() + + oListuids = ImapObject.Search(Flag.Unseen) + + Return oListuids + Catch ex As Exception + Logger.Error(ex) + Return oListuids + End Try + + End Function + + Public Function GetMessageUids(oImapServer As String, oPort As Integer, oUser As String, oPassword As String, oSSL As Boolean) + Try + + Catch ex As Exception + + End Try + End Function + Public Function DeleteMessageByUID(oUID As String) As Boolean + Try + ImapObject.DeleteMessageByUID(oUID) + Return True + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function +End Class diff --git a/Modules.Messaging/Messaging.vbproj b/Modules.Messaging/Messaging.vbproj index b7c5547f..ce04c28a 100644 --- a/Modules.Messaging/Messaging.vbproj +++ b/Modules.Messaging/Messaging.vbproj @@ -85,6 +85,7 @@ + True diff --git a/Modules.Messaging/My Project/AssemblyInfo.vb b/Modules.Messaging/My Project/AssemblyInfo.vb index b5d7ee94..ceedd89a 100644 --- a/Modules.Messaging/My Project/AssemblyInfo.vb +++ b/Modules.Messaging/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/Service.JobRunner/My Project/Settings.Designer.vb b/Service.JobRunner/My Project/Settings.Designer.vb index 4ed5c023..188bdcb7 100644 --- a/Service.JobRunner/My Project/Settings.Designer.vb +++ b/Service.JobRunner/My Project/Settings.Designer.vb @@ -15,7 +15,7 @@ Option Explicit On Namespace My _ Partial Friend NotInheritable Class MySettings Inherits Global.System.Configuration.ApplicationSettingsBase @@ -117,10 +117,19 @@ Namespace My End Get End Property + _ + Public ReadOnly Property GRAPHQL_CONFIG() As String + Get + Return CType(Me("GRAPHQL_CONFIG"),String) + End Get + End Property + _ + "AMACCOUNTNAME)),GroupFilter::(&(samaccountname=*))")> _ Public ReadOnly Property ADSYNC_CONFIG() As String Get Return CType(Me("ADSYNC_CONFIG"),String) @@ -129,21 +138,12 @@ Namespace My _ + Global.System.Configuration.DefaultSettingValueAttribute("False|10/0 * * * * ?|Foo::Bar")> _ Public ReadOnly Property TEST_CONFIG() As String Get Return CType(Me("TEST_CONFIG"),String) End Get End Property - - _ - Public ReadOnly Property GRAPHQL_CONFIG() As String - Get - Return CType(Me("GRAPHQL_CONFIG"),String) - End Get - End Property End Class End Namespace