diff --git a/App/EmailProfiler.Common/ClassCurrent.vb b/App/EmailProfiler.Common/ClassCurrent.vb index c055713..ae909a6 100644 --- a/App/EmailProfiler.Common/ClassCurrent.vb +++ b/App/EmailProfiler.Common/ClassCurrent.vb @@ -45,11 +45,11 @@ Public Class ClassCurrent Public Shared Property CURRENT_WM_DOC As WMObject Public Shared Property CURRENT_DOC_ID As Integer Public Shared Property CURRENT_DOC_PATH As String - Public Shared Property MessageError As Boolean = False + Public Shared Property MESSAGE_ERROR As Boolean = False Public Shared Property TEMP_FILES As List(Of String) = New List(Of String) - Public Shared Property CURRENT_DEBUG_LOCAL_EMAIL As String + End Class diff --git a/App/EmailProfiler.Common/EmailProfiler.Common.vbproj b/App/EmailProfiler.Common/EmailProfiler.Common.vbproj index c265dbc..5fbcd16 100644 --- a/App/EmailProfiler.Common/EmailProfiler.Common.vbproj +++ b/App/EmailProfiler.Common/EmailProfiler.Common.vbproj @@ -62,6 +62,9 @@ ..\..\..\DDModules\Messaging\bin\Debug\DigitalData.Modules.Messaging.dll + + ..\..\..\DDModules\Patterns\bin\Debug\DigitalData.Modules.Patterns.dll + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll False diff --git a/App/EmailProfiler.Common/EmailStrings.vb b/App/EmailProfiler.Common/EmailStrings.vb index 2f6f7d7..0de75e0 100644 --- a/App/EmailProfiler.Common/EmailStrings.vb +++ b/App/EmailProfiler.Common/EmailStrings.vb @@ -16,6 +16,8 @@ Public Const EMAIL_MISSINGPROPERTIES_1 = "

Die angehängte Datei entspricht nicht dem ZUGFeRD-Format: {0}

" Public Const EMAIL_MISSINGPROPERTIES_2 = "

Die folgenden Eigenschaften wurden als ERFORDERLICH eingestuft, wurden aber nicht gefunden:

" + + Public Const EMAIL_MD5_ERROR = "

Die von Ihnen gesendete Rechnung wurde bereits von unserem System verarbeitet.

" Public Const EMAIL_TOO_MUCH_FERDS = "

Ihre Email enthielt mehr als ein ZUGFeRD-Dokument.

" diff --git a/App/EmailProfiler.Common/clsWindream_Index.vb b/App/EmailProfiler.Common/clsWindream_Index.vb index 5c63e5d..843ce40 100644 --- a/App/EmailProfiler.Common/clsWindream_Index.vb +++ b/App/EmailProfiler.Common/clsWindream_Index.vb @@ -737,7 +737,7 @@ Public Class clsWindream_Index Return ValueArray Catch ex As Exception Logger.Error(ex) - ClassCurrent.MessageError = True + ClassCurrent.MESSAGE_ERROR = True 'clsLogger.AddError(ex.Message, "Return_VektorArray") Return Nothing End Try diff --git a/App/EmailProfiler.Common/clsWorkEmail.vb b/App/EmailProfiler.Common/clsWorkEmail.vb index bfe7118..26debed 100644 --- a/App/EmailProfiler.Common/clsWorkEmail.vb +++ b/App/EmailProfiler.Common/clsWorkEmail.vb @@ -10,6 +10,7 @@ Imports Limilabs.Mail Imports Limilabs.Mail.MIME Imports Limilabs.Mail.Headers Imports MailBox = Limilabs.Mail.Headers.MailBox +Imports DigitalData.Modules.Patterns Public Class clsWorkEmail Private Const SUBJECT_MAX_LENGTH = 25 @@ -25,13 +26,6 @@ Public Class clsWorkEmail Private CURRENT_MAIL_SUBJECT As String = "" Private CURRENT_MAIL_FROM As String = "" - - ''' - ''' Primary Mail Identifier. - ''' Is a hash of the MessageId, used to be the MessageId itself. - ''' - 'Private Property CURRENT_MAIL_MESSAGE_ID As String = "" - Private CurrentMailProcessName As String Private ReadOnly _Logger As Logger @@ -43,6 +37,7 @@ Public Class clsWorkEmail Private ReadOnly _windream As clsWindream_allgemein Private ReadOnly _windream_index As clsWindream_Index Private ReadOnly _windreamConnectionString As String + Private ReadOnly _Patterns As Patterns2 Private ReadOnly _EmailAccountID As Integer = 1 @@ -52,10 +47,10 @@ Public Class clsWorkEmail Try _Logger = LogConf.GetLogger _LogConfig = LogConf - '_DB_MSSQL = New clsDatabase(LogConf, ConStr) _DB_MSSQL = New MSSQLServer(LogConf, ConStr) _Logger.Debug("clsWorkmail _email initialized") _UseWindream = pUseWindream + _Patterns = New Patterns2(LogConf) If pUseWindream Then _windream = New clsWindream_allgemein(LogConf) @@ -69,7 +64,7 @@ Public Class clsWorkEmail _Logger.Error(ex) End Try End Sub - Public Function WorkEmailMessage(pMailMessage As IMail, poUID As Long) As Boolean + Public Function WorkEmailMessage(pMailMessage As IMail, poUID As Long, pValidationSQL As String) As Boolean Try For Each m As MailBox In pMailMessage.From CURRENT_MAIL_FROM = m.Address @@ -82,7 +77,6 @@ Public Class clsWorkEmail CURRENT_MAIL_BODY_ALL = "" CURRENT_MAIL_BODY_ANSWER1 = "" CURRENT_MAIL_BODY_Substr2 = "" - 'CURRENT_MAIL_MESSAGE = pMailMessage CURRENT_MAIL_SUBJECT = pMailMessage.Subject.ToUpper.EscapeForSQL() CURRENT_MAIL_UID = poUID @@ -120,8 +114,8 @@ Public Class clsWorkEmail _Logger.Info($"Working on email from : {CURRENT_MAIL_FROM}...") - Dim osql = $"Select COALESCE(MAX(GUID),0) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{CurrentMail.MessageId}'" - Dim oHistoryID = _DB_MSSQL.GetScalarValue(osql) + Dim oSql = $"Select COALESCE(MAX(GUID),0) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{CurrentMail.MessageId}'" + Dim oHistoryID = _DB_MSSQL.GetScalarValue(oSql) If oHistoryID > 0 Then _Logger.Info($"Messsage with subject [{CURRENT_MAIL_SUBJECT}] from [{CURRENT_MAIL_FROM}] has already been worked!") @@ -129,48 +123,80 @@ Public Class clsWorkEmail End If Dim oTempMailExists As Boolean = SAVE2TEMP(CurrentMail) + 'Checking wether Mail can be opened Dim oTempMailAccessible As Boolean = False - If oTempMailExists = True Then - Try - Dim oFS As FileStream = File.OpenRead(CurrentTempMailPath) - oTempMailAccessible = True - oFS.Close() - Catch ex As Exception - _Logger.Warn($"Could not read the Temp-Mail. Insufficient rights? Message: {ex.Message}") - End Try - If oTempMailAccessible = True Then - MessageError = False - If CURRENT_MAIL_SUBJECT.Contains("[PROCESSMANAGER]") Then - PROCESS_MANAGER_IN(CurrentMail) - ElseIf pMailMessage.Subject.Contains("[ADDI]") Then - Else - _Logger.Debug("CommonEmail-Process-Sniffer") - If COMMON_EMAIL_IN(CurrentMail) = True Then - InsertHistoryEntry(CurrentMail) - If CURRENT_ATTMT_COUNT = 0 Then - _Logger.Info("### Mail contained no Attachments!! ###") - Dim oBody = EmailStrings.EMAIL_NO_FERDS - If AddToEmailQueueMSSQL(CurrentMail.MessageId, oBody, "No Attachments", _EmailAccountID) = True Then - CURRENT_ImapObject.DeleteMessageByUID(poUID) - End If - End If - Return True - Else - Return False + If oTempMailExists = False Then + _Logger.Warn("Could not process email [{0}], file does not exist!", CurrentMail.MessageId) + Return False + End If + + Try + Dim oFS As FileStream = File.OpenRead(CurrentTempMailPath) + oTempMailAccessible = True + oFS.Close() + Catch ex As Exception + _Logger.Warn($"Could not read the Temp-Mail. Insufficient rights? Message: {ex.Message}") + End Try + + If oTempMailAccessible = False Then + _Logger.Warn("Could not process email [{0}], file does is not accessible!", CurrentMail.MessageId) + Return False + End If + + MESSAGE_ERROR = False + + If pValidationSQL <> "" Then + + Dim oReplaceValues = New Dictionary(Of String, String) From { + {"EMAIL", CurrentMail.SenderAddress}, + {"DOMAIN", CurrentMail.SenderDomain} + } + + Dim pValidationSQLWithPlaceholders = _Patterns.ReplaceCustomValues(pValidationSQL, oReplaceValues) + Dim oResult As String = ObjectEx.NotNull(_DB_MSSQL.GetScalarValue(pValidationSQLWithPlaceholders), "") + + If oResult <> "" Then + 'insert history und exit + InsertHistoryEntryWithStatus(pMailMessage, "REJECTED", oResult) + + AddToEmailQueueMSSQL(CurrentMail.MessageId, oResult, "Email validation failed", _EmailAccountID) + + ' Return early from processing eml + Return True + End If + + End If + + If CURRENT_MAIL_SUBJECT.Contains("[PROCESSMANAGER]") Then + Return PROCESS_MANAGER_IN(CurrentMail) + + Else + _Logger.Debug("CommonEmail-Process-Sniffer") + If COMMON_EMAIL_IN(CurrentMail) = True Then + InsertHistoryEntry(CurrentMail) + If CURRENT_ATTMT_COUNT = 0 Then + _Logger.Info("### Mail contained no Attachments!! ###") + Dim oBody = EmailStrings.EMAIL_NO_FERDS + If AddToEmailQueueMSSQL(CurrentMail.MessageId, oBody, "No Attachments", _EmailAccountID) = True Then + CURRENT_ImapObject.DeleteMessageByUID(poUID) End If End If - + Return True + Else + Return False End If + End If + Catch ex As Exception _Logger.Error(ex) Return False End Try End Function - Public Function AddToEmailQueueMSSQL(MessageId As String, BodyText As String, SourceProcedure As String, pEmailAccountId As Integer) As Boolean + Public Function AddToEmailQueueMSSQL(MessageId As String, BodyText As String, Comment As String, pEmailAccountId As Integer) As Boolean Try Dim oReference = MessageId @@ -222,7 +248,7 @@ Public Class clsWorkEmail ,'{oEmailTo}' ,'{oSubject}' ,'{oFinalBodyText}' - ,'{SourceProcedure}' + ,'{Comment}' ,'{oCreatedWho}')" Return _DB_MSSQL.ExecuteNonQuery(oInsert) Else @@ -478,37 +504,19 @@ Public Class clsWorkEmail End Try End Function - Private Function COPY2HDD(pCurrentMail As MailContainer, pShouldCopyToDisk As Boolean, pPathOriginal As String, pPathErrors As String, pUseMessageIdAsFilename As Boolean) As Boolean + Private Function COPY2HDD(pCurrentMail As MailContainer, pShouldCopyToDisk As Boolean, pDestination As String, pPathErrors As String, pUseMessageIdAsFilename As Boolean) As Boolean Try If pShouldCopyToDisk = True Then _Logger.Debug("COPY_2_HDD is ACTIVE!") 'PATH_ERROR = pPathErrors - If Directory.Exists(pPathOriginal) Then - Dim oTempFilename = pPathOriginal + If Directory.Exists(pDestination) Then + Dim oTempFilename = Path.Combine(pDestination, $"{pCurrentMail.MessageId}.eml") - 'If pUseMessageIdAsFilename = True Then - ' Dim oFileName = CURRENT_MAIL_MESSAGE_ID & ".eml" - ' oTempFilename = Path.Combine(oTempFilename, oFileName) - - ' 'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE_ID & ".eml" - 'Else - ' Dim oFileName = CURRENT_MAIL_MESSAGE.Subject.Truncate(SUBJECT_MAX_LENGTH).Replace(" ", "") & ".eml" - ' oTempFilename = Path.Combine(oTempFilename, oFileName) - - ' 'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml" - 'End If - oTempFilename = Path.Combine(oTempFilename, $"{pCurrentMail.MessageId}.eml") - - 'Dim cleanPath As String = String.Join("", oTempFilename.Split(Path.GetInvalidPathChars())) If File.Exists(oTempFilename) = False Then - Try - File.Delete(oTempFilename) - Catch ex As Exception - _Logger.Error(ex) - Return False - End Try pCurrentMail.Mail.Save(oTempFilename) + + Dim oFileInfo As New FileInfo(oTempFilename) Dim oFileLenth As Long = oFileInfo.Length If oFileLenth > 0 Then @@ -529,7 +537,7 @@ Public Class clsWorkEmail Return True End If Else - _Logger.Error("Destination directory [{0}] does not exist!", pPathOriginal) + _Logger.Error("Destination directory [{0}] does not exist!", pDestination) Return False End If Else @@ -595,7 +603,7 @@ Public Class clsWorkEmail If CURRENT_MAIL_BODY_ALL = String.Empty Then _Logger.Warn("Mailbody is empty. Email can not be processed! - Please check the html-structure") _Logger.Info("EXCEPTION - Mailbody is empty.Email can not be processed! - Please check the html-structure") - MessageError = True + MESSAGE_ERROR = True Return False Else _Logger.Debug($"Length of Body is [{CURRENT_MAIL_BODY_ALL.Length}] - Body Text is [{CURRENT_MAIL_BODY_ALL}]") @@ -638,7 +646,7 @@ Public Class clsWorkEmail Catch ex As Exception _Logger.Error(ex) 'clsLogger.Add("Unexpected Error in COPY2HDD: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True) - MessageError = True + MESSAGE_ERROR = True Return False End Try End Function @@ -714,12 +722,12 @@ Public Class clsWorkEmail Catch ex As Exception _Logger.Error(ex) End Try - MessageError = True + MESSAGE_ERROR = True End If Catch ex As Exception _Logger.Warn($"Error while saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFilePath}") - MessageError = True + MESSAGE_ERROR = True End Try Else @@ -729,7 +737,7 @@ Public Class clsWorkEmail Catch ex As Exception _Logger.Warn($"Error while creating and saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFilePath}") - MessageError = True + MESSAGE_ERROR = True End Try Next @@ -740,21 +748,29 @@ Public Class clsWorkEmail _Logger.Warn($"EXTRACT_ATTACHMENTSIf cause 1: CURRENT_TEMP_MAIL_PATH is NOTHING") End If CURRENT_ATTMT_COUNT = oAttachmentCount - If MessageError = True Then + If MESSAGE_ERROR = True Then Return False Else Return True End If Catch ex As Exception _Logger.Error(ex) - MessageError = True + MESSAGE_ERROR = True Return False End Try End Function Private Function InsertHistoryEntry(pCurrentMail As MailContainer) As Boolean - If MessageError = False Then - Dim ins = $"INSERT INTO TBEMLP_HISTORY ( + If MESSAGE_ERROR = False Then + Return InsertHistoryEntryWithStatus(pCurrentMail, String.Empty, String.Empty) + Else + _Logger.Info("! No INSERT_HISTORY as MessageError = True") + Return False + End If + End Function + + Private Function InsertHistoryEntryWithStatus(pCurrentMail As MailContainer, pStatus As String, pComment As String) As Boolean + Dim ins = $"INSERT INTO TBEMLP_HISTORY ( WORK_PROCESS, EMAIL_MSGID, EMAIL_SUBJECT, @@ -763,7 +779,9 @@ Public Class clsWorkEmail EMAIL_SUBSTRING1, EMAIL_SUBSTRING2, EMAIL_FROM, - PROFILE_ID + PROFILE_ID, + STATUS, + COMMENT ) VALUES ( '{CurrentMailProcessName}', '{pCurrentMail.MessageId}', @@ -773,13 +791,11 @@ Public Class clsWorkEmail '{CURRENT_MAIL_BODY_ANSWER1}', '{CURRENT_MAIL_BODY_Substr2}', '{pCurrentMail.SenderAddress}', - {CURRENT_PROFILE_GUID} + {CURRENT_PROFILE_GUID}, + '{pStatus}', + '{pComment.Substring(0, 500)}' )" - Return _DB_MSSQL.ExecuteNonQuery(ins) - Else - _Logger.Info("! No INSERT_HISTORY as MessageError = True") - Return False - End If + Return _DB_MSSQL.ExecuteNonQuery(ins) End Function Private Function InsertAttachmentHistoryEntry(pCurrentMail As MailContainer, pMessageId As String, pFileName As String) As Boolean @@ -788,8 +804,16 @@ Public Class clsWorkEmail Return False End If Try - If MessageError = False Then - Dim ins = $"INSERT INTO TBEMLP_HISTORY_ATTACHMENT (WORK_PROCESS,EMAIL_MSGID,EMAIL_FROM,EMAIL_SUBJECT,EMAIL_DATETIME,EMAIL_BODY,EMAIL_ATTMT) VALUES " & + If MESSAGE_ERROR = False Then + Dim ins = $"INSERT INTO TBEMLP_HISTORY_ATTACHMENT ( + WORK_PROCESS, + EMAIL_MSGID, + EMAIL_FROM, + EMAIL_SUBJECT, + EMAIL_DATETIME, + EMAIL_BODY, + EMAIL_ATTMT + ) VALUES " & $"('{CurrentMailProcessName}'," & $"'{pMessageId}'," & $"'{pCurrentMail.SenderAddress}'," & @@ -860,7 +884,7 @@ Public Class clsWorkEmail Return True Catch ex As Exception - MessageError = True + MESSAGE_ERROR = True _Logger.Error(ex) 'clsLogger.Add("Unexpected Error in WORK_POLL_STEPS: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True) Return False @@ -881,7 +905,7 @@ Public Class clsWorkEmail Return True Catch ex As Exception - MessageError = True + MESSAGE_ERROR = True _Logger.Error(ex) 'clsLogger.Add("Unexpected Error in WORK_INDEXING_STEPS: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True) Return False @@ -981,7 +1005,7 @@ Public Class clsWorkEmail Catch ex As Exception _Logger.Error(ex) 'clsLogger.Add("Unexpected Error in GET_DOC_INFO: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID) - MessageError = True + MESSAGE_ERROR = True Return False End Try End Function @@ -999,7 +1023,7 @@ Public Class clsWorkEmail Next Return result Catch ex As Exception - MessageError = True + MESSAGE_ERROR = True _Logger.Error(ex) Return Nothing End Try diff --git a/App/EmailProfiler.Common/clsWorker.vb b/App/EmailProfiler.Common/clsWorker.vb index 9ab7587..9ca23bf 100644 --- a/App/EmailProfiler.Common/clsWorker.vb +++ b/App/EmailProfiler.Common/clsWorker.vb @@ -1,11 +1,10 @@ Imports DigitalData.EMLProfiler.ClassCurrent Imports DigitalData.Modules.Logging -Imports DigitalData.Modules.Messaging -Imports Limilabs.Mail -Imports Limilabs.Mail.MIME -Imports Limilabs.Mail.Headers Imports DigitalData.Modules.Database +Imports DigitalData.Modules.Base Imports DigitalData.Modules.Messaging.Mail +Imports Limilabs.Mail +Imports Limilabs.Mail.Headers Public Class clsWorker Private ReadOnly Logger As Logger @@ -18,6 +17,9 @@ Public Class clsWorker Private ReadOnly Encryption As clsEncryption Private ReadOnly ProfileId As Integer = 0D Private ReadOnly EmailLimitationSender As String = "" + Private ReadOnly EmailLimitationEnabled As Boolean = False + + Private ReadOnly LocalEmlFile As String = "" Sub New(pLogConfig As LogConfig, pConnectionString As String, pWindreamConnectionString As String, pPollProfileId As Integer, pUseWindream As Boolean, pEmailAccountID As Integer, pEmailPrefix As String, pEmailLimitationSender As String, Optional pLocalEML As String = "") Logger = pLogConfig.GetLogger @@ -27,6 +29,10 @@ Public Class clsWorker UseWindream = pUseWindream EmailLimitationSender = pEmailLimitationSender + If EmailLimitationSender.Contains("@") Then + Logger.Info("Email Sender Limitation active for address: [{0}]", EmailLimitationSender) + EmailLimitationEnabled = True + End If If UseWindream Then ClassWindreamAllgemein = New clsWindream_allgemein(pLogConfig) @@ -38,7 +44,7 @@ Public Class clsWorker Encryption = New clsEncryption("!35452didalog=", pLogConfig) ProfileId = pPollProfileId - CURRENT_DEBUG_LOCAL_EMAIL = pLocalEML + LocalEmlFile = pLocalEML End Sub Private Sub DeleteTempFiles() @@ -57,184 +63,196 @@ Public Class clsWorker TEMP_FILES.Clear() End Sub + Private Function LoadEmailAccounts() As DataTable + Return Database.GetDatatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1") + End Function + + Private Function LoadPollingProfiles(pProfileId As Integer) As DataTable + Dim oSQL = "SELECT * FROM TBEMLP_POLL_PROFILES WHERE ACTIVE = 1" + + If ProfileId = 0 Then + oSQL &= " ORDER BY SEQUENCE" + Else + oSQL &= $" WHERE GUID = {pProfileId}" + End If + + Return Database.GetDatatable(oSQL) + End Function + Public Sub Start_WorkingProfiles(Optional LocalEmail As Boolean = False) Try DeleteTempFiles() - If Database.DBInitialized = True Then - Logger.Debug("now windream_init... ") - If UseWindream Then - If ClassWindreamAllgemein.Init = False Then - Logger.Info("windream could not be initialized!!") - Exit Sub - Else - Logger.Debug("windream_initialized!") - End If - End If - Dim osql As String = "SELECT * FROM TBEMLP_POLL_PROFILES" - If ProfileId = 0 Then - osql &= " WHERE ACTIVE = 1 order by SEQUENCE" - Else - osql &= " WHERE GUID = " & ProfileId - End If - Dim DT_TBDD_EMAIL As DataTable = Database.GetDatatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1") - Dim DT_PROFILES = Database.GetDatatable(osql) - If Not IsNothing(DT_PROFILES) Then - If DT_PROFILES.Rows.Count > 0 Then - Logger.Debug("count of active profiles: " & DT_PROFILES.Rows.Count.ToString) - For Each oDR_Profile As DataRow In DT_PROFILES.Rows - CURRENT_PROFILE_GUID = oDR_Profile.Item("GUID") - DT_POLL_PROCESS = Nothing - Dim sql = String.Format("SELECT * FROM TBEMLP_POLL_PROCESS WHERE PROFILE_ID = {0} AND ACTIVE = 1", CURRENT_PROFILE_GUID) - DT_POLL_PROCESS = Database.GetDatatable(sql) - If Not IsNothing(DT_POLL_PROCESS) Then - If DT_POLL_PROCESS.Rows.Count = 0 Then - Logger.Info("No processes configured for this Email-Profile - " & sql) - Continue For - Else - DT_STEPS = Nothing - DT_STEPS = Database.GetDatatable(String.Format("SELECT T.* FROM TBEMLP_POLL_STEPS T,TBEMLP_POLL_PROCESS T1 WHERE T.PROCESS_ID = T1.GUID AND T1.PROFILE_ID = {0} AND T1.ACTIVE = 1", CURRENT_PROFILE_GUID)) - - End If - Else - Logger.Warn("DT_POLL_PROCESS is nothing") - Continue For - End If - - CURRENT_EMAIL_GUID = 0 - - CURRENT_POLL_TYPE = oDR_Profile.Item("POLL_TYPE") - Logger.Debug(String.Format("Working on profile: ({0}-{1}-{2}) ", oDR_Profile.Item("GUID"), oDR_Profile.Item("PROFILE_NAME"), CURRENT_POLL_TYPE)) - CURRENT_EMAIL_GUID = oDR_Profile.Item("EMAIL_CONF_ID") - - Dim EMAIL_PROF_TABLE As DataTable = DT_TBDD_EMAIL - 'Presuming the DataTable has a column named Date. - Dim expression As String - expression = "GUID = " & CURRENT_EMAIL_GUID - Logger.Debug("Expression Filter email: " & expression) - Logger.Debug("DT_TBDD_EMAIL.rowCount: " & DT_TBDD_EMAIL.Rows.Count) - 'Filter the rows using Select() method of DataTable - Dim FilteredRows As List(Of DataRow) = EMAIL_PROF_TABLE.Select(expression).ToList() - If FilteredRows.Count = 1 Then - Dim oRow = FilteredRows(0) - Dim MAIL_FROM = oRow("EMAIL_FROM") - Dim MAIL_SERVER = oRow("EMAIL_SMTP") - Dim MAIL_USER = oRow("EMAIL_USER") - Dim MAIL_USER_PW = oRow("EMAIL_PW") - Dim MAIL_PORT = oRow("PORT_IN") - Dim MAIL_INBOX_NAME = "Inbox" - Dim MAIL_ARCHIVE_FOLDER = oRow("ARCHIVE_FOLDER") - Dim MAIL_AUTHTYPE = oRow("AUTH_TYPE") - Logger.Debug(String.Format("{0}-{1}", MAIL_FROM, MAIL_SERVER)) - - Dim PWPlain = Encryption.DecryptData(MAIL_USER_PW) - If Not IsNothing(PWPlain) Then - If PWPlain <> "" Then - MAIL_USER_PW = PWPlain - Else - Logger.Warn("PWPlain is string.empty - Could not decrypt passwort") - End If - Else - Logger.Warn("PWPlain is nothing - Could not decrypt passwort") - End If - - CURRENT_WORKMAIL_UID_LIST.Clear() - - If MAIL_SERVER <> "" Then - Dim oPollResult As Boolean = False - If LocalEmail = True Then - oPollResult = True - Else - Select Case CURRENT_POLL_TYPE - Case "IMAP" - ' We are using 'Archive Folder' as an additional field to save the Tenant-ID for O365-OAuth2 - oPollResult = FetchMessages(MAIL_SERVER, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTHTYPE, MAIL_ARCHIVE_FOLDER) - - Case Else - Logger.Error("Poll Type [{0}] is not supported!", CURRENT_POLL_TYPE) - oPollResult = False - End Select - End If - - If CURRENT_WORKMAIL_UID_LIST.Count() > 0 Or LocalEmail = True Then - If LocalEmail Then - Logger.Info("Working with local Mail") - Dim oEmail As IMail = New MailBuilder().CreateFromEmlFile(CURRENT_DEBUG_LOCAL_EMAIL) - ClassWorkMail.WorkEmailMessage(oEmail, 123456789) - 'CURRENT_MAIL_MESSAGE = Nothing - Else - Try - Logger.Info(String.Format("Pulled: [{0}] E-Mails", CURRENT_WORKMAIL_UID_LIST.Count())) - Dim LIMIT_EMAIL_FROM As Boolean = False - If EmailLimitationSender.Contains("@") Then - LIMIT_EMAIL_FROM = True - Logger.Info("####################################") - Logger.Info($"LIMIT_EMAIL_FROM is ACTIVE - EMAIL_FROM = [{EmailLimitationSender}]") - Logger.Info("####################################") - Logger.Debug("####################################") - Logger.Debug($"LIMIT_EMAIL_FROM is ACTIVE - EMAIL_FROM = [{EmailLimitationSender}]") - Logger.Debug("####################################") - End If - For Each oUID In CURRENT_WORKMAIL_UID_LIST - Dim oEmail As IMail = Fetcher.FetchMail(oUID) - - If Not IsNothing(oEmail) Then - If LIMIT_EMAIL_FROM Then - Dim oEmailFrom As String = "" - For Each m As MailBox In oEmail.From - oEmailFrom = m.Address - Next - If oEmailFrom <> EmailLimitationSender Then - Logger.Debug($"Skipping email {oEmailFrom} ...Subject [{oEmail.Subject}]") - Continue For - End If - End If - If ClassWorkMail.WorkEmailMessage(oEmail, oUID) = True Then - If CURRENT_DEBUG_LOCAL_EMAIL = "" Then - EMAIL_DELETE() - End If - End If - - Else - Logger.Info("### oEmail was nothing ###") - End If - - 'CURRENT_MAIL_MESSAGE = Nothing - Next - If CURRENT_POLL_TYPE = "IMAP" And CURRENT_WORKMAIL_UID_LIST.Count > 0 Then - If Not IsNothing(Fetcher.Client) Then - Fetcher.Client.Close() - End If - End If - - Catch ex As Exception - Logger.Error(ex) - Logger.Warn($"Unexpected Error working CURRENT_WORKMAIL_UID_LIST: {ex.Message} ") - End Try - - End If - Else - Logger.Debug(String.Format("No emails for profile!")) - End If - - Else - Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!") - End If - - Database.ExecuteNonQuery("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & oDR_Profile.Item("GUID").ToString) - Else - Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found! Check wether Email-Profile is active!") - End If - Next - DeleteTempFiles() - - Else - Logger.Info("No active profiles") - End If - End If - - Database.ExecuteNonQuery("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1") + If Database.DBInitialized = False Then + Logger.Warn("Database is not initialized. Exiting.") + Exit Sub End If + + Logger.Debug("now windream_init... ") + If UseWindream Then + If ClassWindreamAllgemein.Init = False Then + Logger.Info("windream could not be initialized!!") + Exit Sub + Else + Logger.Debug("windream_initialized!") + End If + End If + + Dim EmailAccountTable As DataTable = LoadEmailAccounts() + Dim PollingProfileTable = LoadPollingProfiles(ProfileId) + + If IsNothing(PollingProfileTable) Then + Logger.Warn("Error while fetching Polling Profiles. Exiting.") + Exit Sub + End If + + If PollingProfileTable.Rows.Count = 0 Then + Logger.Warn("No active Polling Profiles found. Exiting.") + Exit Sub + End If + + Logger.Debug("Count of active profiles: " & PollingProfileTable.Rows.Count.ToString) + + For Each oProfile As DataRow In PollingProfileTable.Rows + + Dim oValidationSql = oProfile.ItemEx("VALIDATION_SQL", "") + + CURRENT_PROFILE_GUID = oProfile.Item("GUID") + DT_POLL_PROCESS = Nothing + Dim sql = String.Format("SELECT * FROM TBEMLP_POLL_PROCESS WHERE PROFILE_ID = {0} AND ACTIVE = 1", CURRENT_PROFILE_GUID) + DT_POLL_PROCESS = Database.GetDatatable(sql) + If Not IsNothing(DT_POLL_PROCESS) Then + If DT_POLL_PROCESS.Rows.Count = 0 Then + Logger.Info("No processes configured for this Email-Profile - " & sql) + Continue For + Else + DT_STEPS = Nothing + DT_STEPS = Database.GetDatatable($"SELECT T.* FROM TBEMLP_POLL_STEPS T,TBEMLP_POLL_PROCESS T1 WHERE T.PROCESS_ID = T1.GUID AND T1.PROFILE_ID = {CURRENT_PROFILE_GUID} AND T1.ACTIVE = 1") + + End If + Else + Logger.Warn("DT_POLL_PROCESS is nothing") + Continue For + End If + + CURRENT_EMAIL_GUID = 0 + + CURRENT_POLL_TYPE = oProfile.Item("POLL_TYPE") + Logger.Debug(String.Format("Working on profile: ({0}-{1}-{2}) ", oProfile.Item("GUID"), oProfile.Item("PROFILE_NAME"), CURRENT_POLL_TYPE)) + CURRENT_EMAIL_GUID = oProfile.Item("EMAIL_CONF_ID") + + Dim FilteredRows As List(Of DataRow) = EmailAccountTable. + Select($"GUID = {CURRENT_EMAIL_GUID}"). + ToList() + Logger.Debug("FilteredRows: " & FilteredRows.Count) + + If FilteredRows.Count = 1 Then + Dim oRow = FilteredRows(0) + Dim oMailFrom = oRow("EMAIL_FROM") + Dim oMailServer = oRow("EMAIL_SMTP") + Dim oMailUser = oRow("EMAIL_USER") + Dim oMailPassword = oRow("EMAIL_PW") + Dim oMailPortIn = oRow("PORT_IN") + Dim oMailboxName = "Inbox" + Dim oMailArchiveFolder = oRow("ARCHIVE_FOLDER") + Dim oMailAuthType = oRow("AUTH_TYPE") + + Logger.Debug("Mail Server: {0}", oMailServer) + Logger.Debug("Mail From: {0}", oMailFrom) + + Dim PWPlain = Encryption.DecryptData(oMailPassword) + If Not IsNothing(PWPlain) Then + If PWPlain <> "" Then + oMailPassword = PWPlain + Else + Logger.Warn("PWPlain is string.empty - Could not decrypt passwort") + End If + Else + Logger.Warn("PWPlain is nothing - Could not decrypt passwort") + End If + + CURRENT_WORKMAIL_UID_LIST.Clear() + + If oMailServer <> "" Then + Dim oPollResult As Boolean = False + If LocalEmail = True Then + oPollResult = True + Else + Select Case CURRENT_POLL_TYPE + Case "IMAP" + ' We are using 'Archive Folder' as an additional field to save the Tenant-ID for O365-OAuth2 + oPollResult = FetchMessages(oMailServer, oMailPortIn, oMailUser, oMailPassword, oMailAuthType, oMailArchiveFolder) + + Case Else + Logger.Error("Poll Type [{0}] is not supported!", CURRENT_POLL_TYPE) + oPollResult = False + End Select + End If + + If CURRENT_WORKMAIL_UID_LIST.Count() > 0 Or LocalEmail = True Then + If LocalEmail Then + Logger.Info("Working with local Mail") + Dim oEmail As IMail = New MailBuilder().CreateFromEmlFile(LocalEmlFile) + ClassWorkMail.WorkEmailMessage(oEmail, 123456789, oValidationSql) + 'CURRENT_MAIL_MESSAGE = Nothing + Else + Try + Logger.Info(String.Format("Pulled: [{0}] E-Mails", CURRENT_WORKMAIL_UID_LIST.Count())) + + For Each oMailId In CURRENT_WORKMAIL_UID_LIST + Dim oEmail As IMail = Fetcher.FetchMail(oMailId) + + If Not IsNothing(oEmail) Then + If EmailLimitationEnabled Then + Dim oEmailFrom As String = "" + For Each m As MailBox In oEmail.From + oEmailFrom = m.Address + Next + If oEmailFrom <> EmailLimitationSender Then + Logger.Debug($"Skipping email {oEmailFrom} ...Subject [{oEmail.Subject}]") + Continue For + End If + End If + If ClassWorkMail.WorkEmailMessage(oEmail, oMailId, oValidationSql) = True Then + If LocalEmlFile = "" Then + DeleteEmailFile(oMailId) + End If + End If + + Else + Logger.Info("### oEmail was nothing ###") + End If + + 'CURRENT_MAIL_MESSAGE = Nothing + Next + + If CURRENT_POLL_TYPE = "IMAP" And CURRENT_WORKMAIL_UID_LIST.Count > 0 Then + Fetcher.Disconnect() + End If + + Catch ex As Exception + Logger.Error(ex) + Logger.Warn($"Unexpected Error working CURRENT_WORKMAIL_UID_LIST: {ex.Message} ") + End Try + + End If + Else + Logger.Debug(String.Format("No emails for profile!")) + End If + + Else + Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!") + End If + + Database.ExecuteNonQuery("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & oProfile.Item("GUID").ToString) + Else + Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found! Check wether Email-Profile is active!") + End If + Next + + DeleteTempFiles() + + Database.ExecuteNonQuery("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1") Catch ex As Exception Logger.Error(ex) End Try @@ -280,27 +298,26 @@ Public Class clsWorker CURRENT_WORKMAIL_UID_LIST = oMailIds - Fetcher.Disconnect() - Return True Catch ex As Exception Logger.Error(ex) Return False + End Try End Function - Private Sub EMAIL_DELETE() + Private Sub DeleteEmailFile(pMailId As Integer) Try - If DeleteMail = True And MessageError = False Then + If DeleteMail = True And MESSAGE_ERROR = False Then If IsNothing(Fetcher.Client) Then Logger.Warn("EMAIL_DELETE - CURRENT_ImapObject is nothing") End If - Fetcher.Client.DeleteMessageByUID(CURRENT_MAIL_UID) - Logger.Info("Email with Id [{0}] was deleted.", CURRENT_MAIL_UID) + Fetcher.Client.DeleteMessageByUID(pMailId) + Logger.Info("Email with Id [{0}] was deleted.", pMailId) Else - If MessageError = True Then - Logger.Warn("Did not delete Message with UID [{0}] as there was an MessageError!", CURRENT_MAIL_UID) + If MESSAGE_ERROR = True Then + Logger.Warn("Did not delete Message with UID [{0}] as there was an MessageError!", pMailId) End If End If Catch ex As Exception diff --git a/App/EmailProfiler.Form/App.config b/App/EmailProfiler.Form/App.config index 6c4ac76..fad3da9 100644 --- a/App/EmailProfiler.Form/App.config +++ b/App/EmailProfiler.Form/App.config @@ -10,7 +10,7 @@ @@ -27,7 +27,7 @@ - Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd + Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd diff --git a/App/EmailProfiler.Form/EmailProfiler.Form.vbproj b/App/EmailProfiler.Form/EmailProfiler.Form.vbproj index ce3d6de..7f3cfba 100644 --- a/App/EmailProfiler.Form/EmailProfiler.Form.vbproj +++ b/App/EmailProfiler.Form/EmailProfiler.Form.vbproj @@ -60,6 +60,10 @@ + + False + ..\..\..\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll + False ..\..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll @@ -140,6 +144,9 @@ True MyDataset.xsd + + MyDataset.xsd + diff --git a/App/EmailProfiler.Form/My Project/Settings.Designer.vb b/App/EmailProfiler.Form/My Project/Settings.Designer.vb index 8c0d39d..2e77097 100644 --- a/App/EmailProfiler.Form/My Project/Settings.Designer.vb +++ b/App/EmailProfiler.Form/My Project/Settings.Designer.vb @@ -56,8 +56,8 @@ Namespace My _ + Global.System.Configuration.DefaultSettingValueAttribute("Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security "& _ + "Info=True;User ID=sa;Password=dd")> _ Public Property MyConnectionString() As String Get Return CType(Me("MyConnectionString"),String) @@ -172,8 +172,8 @@ Namespace My _ + Global.System.Configuration.DefaultSettingValueAttribute("Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security "& _ + "Info=True;User ID=sa;Password=dd")> _ Public ReadOnly Property MyDatasetConnString() As String Get Return CType(Me("MyDatasetConnString"),String) diff --git a/App/EmailProfiler.Form/My Project/Settings.settings b/App/EmailProfiler.Form/My Project/Settings.settings index e99dce9..0523ae1 100644 --- a/App/EmailProfiler.Form/My Project/Settings.settings +++ b/App/EmailProfiler.Form/My Project/Settings.settings @@ -3,7 +3,7 @@ - Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd + Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd @@ -38,10 +38,10 @@ <?xml version="1.0" encoding="utf-16"?> <SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <ConnectionString>Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</ConnectionString> + <ConnectionString>Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd</ConnectionString> <ProviderName>System.Data.SqlClient</ProviderName> </SerializableConnectionString> - Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd + Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd \ No newline at end of file diff --git a/App/EmailProfiler.Form/My Project/licenses.licx b/App/EmailProfiler.Form/My Project/licenses.licx index 7f629a5..81285e2 100644 --- a/App/EmailProfiler.Form/My Project/licenses.licx +++ b/App/EmailProfiler.Form/My Project/licenses.licx @@ -1,2 +1,3 @@ -DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/App/EmailProfiler.Form/MyDataset.Designer.vb b/App/EmailProfiler.Form/MyDataset.Designer.vb index ae60be5..da4646d 100644 --- a/App/EmailProfiler.Form/MyDataset.Designer.vb +++ b/App/EmailProfiler.Form/MyDataset.Designer.vb @@ -532,6 +532,8 @@ Partial Public Class MyDataset Private columnCHANGED_WHEN As Global.System.Data.DataColumn + Private columnVALIDATION_SQL As Global.System.Data.DataColumn + _ Public Sub New() @@ -663,6 +665,14 @@ Partial Public Class MyDataset End Get End Property + _ + Public ReadOnly Property VALIDATION_SQLColumn() As Global.System.Data.DataColumn + Get + Return Me.columnVALIDATION_SQL + End Get + End Property + _ @@ -700,9 +710,9 @@ Partial Public Class MyDataset _ - Public Overloads Function AddTBEMLP_POLL_PROFILESRow(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Date, ByVal ACTIVE As Boolean, ByVal SEQUENCE As Integer, ByVal ADDED_WHO As String, ByVal ADDED_WHEN As Date, ByVal CHANGED_WHO As String, ByVal CHANGED_WHEN As Date) As TBEMLP_POLL_PROFILESRow + Public Overloads Function AddTBEMLP_POLL_PROFILESRow(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Date, ByVal ACTIVE As Boolean, ByVal SEQUENCE As Integer, ByVal ADDED_WHO As String, ByVal ADDED_WHEN As Date, ByVal CHANGED_WHO As String, ByVal CHANGED_WHEN As Date, ByVal VALIDATION_SQL As String) As TBEMLP_POLL_PROFILESRow Dim rowTBEMLP_POLL_PROFILESRow As TBEMLP_POLL_PROFILESRow = CType(Me.NewRow,TBEMLP_POLL_PROFILESRow) - Dim columnValuesArray() As Object = New Object() {Nothing, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN} + Dim columnValuesArray() As Object = New Object() {Nothing, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, VALIDATION_SQL} rowTBEMLP_POLL_PROFILESRow.ItemArray = columnValuesArray Me.Rows.Add(rowTBEMLP_POLL_PROFILESRow) Return rowTBEMLP_POLL_PROFILESRow @@ -743,6 +753,7 @@ Partial Public Class MyDataset Me.columnADDED_WHEN = MyBase.Columns("ADDED_WHEN") Me.columnCHANGED_WHO = MyBase.Columns("CHANGED_WHO") Me.columnCHANGED_WHEN = MyBase.Columns("CHANGED_WHEN") + Me.columnVALIDATION_SQL = MyBase.Columns("VALIDATION_SQL") End Sub _ + Public Property VALIDATION_SQL() As String + Get + Try + Return CType(Me(Me.tableTBEMLP_POLL_PROFILES.VALIDATION_SQLColumn),String) + Catch e As Global.System.InvalidCastException + Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte VALIDATION_SQL in Tabelle TBEMLP_POLL_PROFILES ist DBNull.", e) + End Try + End Get + Set + Me(Me.tableTBEMLP_POLL_PROFILES.VALIDATION_SQLColumn) = value + End Set + End Property + _ Public Function IsCOMMENTNull() As Boolean @@ -3885,6 +3913,18 @@ Partial Public Class MyDataset Me(Me.tableTBEMLP_POLL_PROFILES.CHANGED_WHENColumn) = Global.System.Convert.DBNull End Sub + _ + Public Function IsVALIDATION_SQLNull() As Boolean + Return Me.IsNull(Me.tableTBEMLP_POLL_PROFILES.VALIDATION_SQLColumn) + End Function + + _ + Public Sub SetVALIDATION_SQLNull() + Me(Me.tableTBEMLP_POLL_PROFILES.VALIDATION_SQLColumn) = Global.System.Convert.DBNull + End Sub + _ Public Function GetTBEMLP_POLL_PROCESSRows() As TBEMLP_POLL_PROCESSRow() @@ -6027,6 +6067,7 @@ Namespace MyDatasetTableAdapters tableMapping.ColumnMappings.Add("ADDED_WHEN", "ADDED_WHEN") tableMapping.ColumnMappings.Add("CHANGED_WHO", "CHANGED_WHO") tableMapping.ColumnMappings.Add("CHANGED_WHEN", "CHANGED_WHEN") + tableMapping.ColumnMappings.Add("VALIDATION_SQL", "VALIDATION_SQL") Me._adapter.TableMappings.Add(tableMapping) Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.DeleteCommand.Connection = Me.Connection @@ -6065,11 +6106,12 @@ Namespace MyDatasetTableAdapters Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.InsertCommand.Connection = Me.Connection Me._adapter.InsertCommand.CommandText = "INSERT INTO TBEMLP_POLL_PROFILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (PROFILE_NAME, POLL_TY"& _ - "PE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES "& _ - " (@PROFILE_NAME,@POLL_TYPE,@EMAIL_CONF_ID,@COMMENT,@LAST_TICK,@ACTIVE,@SEQUENC"& _ - "E,@ADDED_WHO); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, L"& _ - "AST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FRO"& _ - "M TBEMLP_POLL_PROFILES WHERE (GUID = SCOPE_IDENTITY())" + "PE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, VALIDATION_S"& _ + "QL)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES (@PROFILE_NAME,@POLL_TYPE,@EMAIL_CONF_ID,@COMMENT,@LAST_TICK,"& _ + "@ACTIVE,@SEQUENCE,@ADDED_WHO,@VALIDATION_SQL); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT GUID, PROFILE_NAME, POL"& _ + "L_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WH"& _ + "EN, CHANGED_WHO, CHANGED_WHEN FROM TBEMLP_POLL_PROFILES WHERE (GUID = SCOPE_IDEN"& _ + "TITY())" Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@PROFILE_NAME", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFILE_NAME", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@POLL_TYPE", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "POLL_TYPE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) @@ -6079,15 +6121,16 @@ Namespace MyDatasetTableAdapters Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@ACTIVE", Global.System.Data.SqlDbType.Bit, 1, Global.System.Data.ParameterDirection.Input, 0, 0, "ACTIVE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@SEQUENCE", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "SEQUENCE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@ADDED_WHO", Global.System.Data.SqlDbType.VarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "ADDED_WHO", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@VALIDATION_SQL", Global.System.Data.SqlDbType.[Variant], 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "VALIDATION_SQL", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand = New Global.System.Data.SqlClient.SqlCommand() Me._adapter.UpdateCommand.Connection = Me.Connection Me._adapter.UpdateCommand.CommandText = "UPDATE TBEMLP_POLL_PROFILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET PROFILE_NAME = @PROFILE_NAM"& _ "E, POLL_TYPE = @POLL_TYPE, EMAIL_CONF_ID = @EMAIL_CONF_ID, COMMENT = @COMMENT, L"& _ "AST_TICK = @LAST_TICK, ACTIVE = @ACTIVE, SEQUENCE = @SEQUENCE, "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _ - " CHANGED_WHO = @CHANGED_WHO"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (GUID = @Original_GUID); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SE"& _ - "LECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, S"& _ - "EQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM TBEMLP_POLL_PROFI"& _ - "LES WHERE (GUID = @GUID)" + " CHANGED_WHO = @CHANGED_WHO, VALIDATION_SQL = @VALIDATION_SQL"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _ + " (GUID = @Original_GUID); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CO"& _ + "NF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO,"& _ + " CHANGED_WHEN FROM TBEMLP_POLL_PROFILES WHERE (GUID = @GUID)" Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@PROFILE_NAME", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFILE_NAME", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@POLL_TYPE", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "POLL_TYPE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) @@ -6097,6 +6140,7 @@ Namespace MyDatasetTableAdapters Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@ACTIVE", Global.System.Data.SqlDbType.Bit, 1, Global.System.Data.ParameterDirection.Input, 0, 0, "ACTIVE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@SEQUENCE", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "SEQUENCE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@CHANGED_WHO", Global.System.Data.SqlDbType.VarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "CHANGED_WHO", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@VALIDATION_SQL", Global.System.Data.SqlDbType.NVarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "VALIDATION_SQL", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) End Sub @@ -6256,7 +6300,7 @@ Namespace MyDatasetTableAdapters Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0"), _ Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"), _ Global.System.ComponentModel.DataObjectMethodAttribute(Global.System.ComponentModel.DataObjectMethodType.Insert, true)> _ - Public Overloads Overridable Function Insert(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Global.System.Nullable(Of Date), ByVal ACTIVE As Boolean, ByVal SEQUENCE As Global.System.Nullable(Of Integer), ByVal ADDED_WHO As String) As Integer + Public Overloads Overridable Function Insert(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Global.System.Nullable(Of Date), ByVal ACTIVE As Boolean, ByVal SEQUENCE As Global.System.Nullable(Of Integer), ByVal ADDED_WHO As String, ByVal VALIDATION_SQL As Object) As Integer If (PROFILE_NAME Is Nothing) Then Throw New Global.System.ArgumentNullException("PROFILE_NAME") Else @@ -6289,6 +6333,11 @@ Namespace MyDatasetTableAdapters Else Me.Adapter.InsertCommand.Parameters(7).Value = CType(ADDED_WHO,String) End If + If (VALIDATION_SQL Is Nothing) Then + Throw New Global.System.ArgumentNullException("VALIDATION_SQL") + Else + Me.Adapter.InsertCommand.Parameters(8).Value = CType(VALIDATION_SQL,Object) + End If Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then @@ -6308,7 +6357,7 @@ Namespace MyDatasetTableAdapters Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0"), _ Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"), _ Global.System.ComponentModel.DataObjectMethodAttribute(Global.System.ComponentModel.DataObjectMethodType.Update, true)> _ - Public Overloads Overridable Function Update(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Global.System.Nullable(Of Date), ByVal ACTIVE As Boolean, ByVal SEQUENCE As Global.System.Nullable(Of Integer), ByVal CHANGED_WHO As String, ByVal Original_GUID As Integer, ByVal GUID As Integer) As Integer + Public Overloads Overridable Function Update(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Global.System.Nullable(Of Date), ByVal ACTIVE As Boolean, ByVal SEQUENCE As Global.System.Nullable(Of Integer), ByVal CHANGED_WHO As String, ByVal VALIDATION_SQL As String, ByVal Original_GUID As Integer, ByVal GUID As Integer) As Integer If (PROFILE_NAME Is Nothing) Then Throw New Global.System.ArgumentNullException("PROFILE_NAME") Else @@ -6341,8 +6390,13 @@ Namespace MyDatasetTableAdapters Else Me.Adapter.UpdateCommand.Parameters(7).Value = CType(CHANGED_WHO,String) End If - Me.Adapter.UpdateCommand.Parameters(8).Value = CType(Original_GUID,Integer) - Me.Adapter.UpdateCommand.Parameters(9).Value = CType(GUID,Integer) + If (VALIDATION_SQL Is Nothing) Then + Throw New Global.System.ArgumentNullException("VALIDATION_SQL") + Else + Me.Adapter.UpdateCommand.Parameters(8).Value = CType(VALIDATION_SQL,String) + End If + Me.Adapter.UpdateCommand.Parameters(9).Value = CType(Original_GUID,Integer) + Me.Adapter.UpdateCommand.Parameters(10).Value = CType(GUID,Integer) Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _ <> Global.System.Data.ConnectionState.Open) Then diff --git a/App/EmailProfiler.Form/MyDataset.vb b/App/EmailProfiler.Form/MyDataset.vb new file mode 100644 index 0000000..58e31fa --- /dev/null +++ b/App/EmailProfiler.Form/MyDataset.vb @@ -0,0 +1,4 @@ +Partial Class MyDataset + Partial Public Class TBEMLP_POLL_PROFILESDataTable + End Class +End Class diff --git a/App/EmailProfiler.Form/MyDataset.xsd b/App/EmailProfiler.Form/MyDataset.xsd index 19836ef..042b3dd 100644 --- a/App/EmailProfiler.Form/MyDataset.xsd +++ b/App/EmailProfiler.Form/MyDataset.xsd @@ -39,8 +39,8 @@ INSERT INTO TBEMLP_POLL_PROFILES - (PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO) -VALUES (@PROFILE_NAME,@POLL_TYPE,@EMAIL_CONF_ID,@COMMENT,@LAST_TICK,@ACTIVE,@SEQUENCE,@ADDED_WHO); + (PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, VALIDATION_SQL) +VALUES (@PROFILE_NAME,@POLL_TYPE,@EMAIL_CONF_ID,@COMMENT,@LAST_TICK,@ACTIVE,@SEQUENCE,@ADDED_WHO,@VALIDATION_SQL); SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM TBEMLP_POLL_PROFILES WHERE (GUID = SCOPE_IDENTITY()) @@ -51,6 +51,7 @@ SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, + @@ -65,8 +66,8 @@ FROM TBEMLP_POLL_PROFILES UPDATE TBEMLP_POLL_PROFILES SET PROFILE_NAME = @PROFILE_NAME, POLL_TYPE = @POLL_TYPE, EMAIL_CONF_ID = @EMAIL_CONF_ID, COMMENT = @COMMENT, LAST_TICK = @LAST_TICK, ACTIVE = @ACTIVE, SEQUENCE = @SEQUENCE, - CHANGED_WHO = @CHANGED_WHO -WHERE (GUID = @Original_GUID); + CHANGED_WHO = @CHANGED_WHO, VALIDATION_SQL = @VALIDATION_SQL +WHERE (GUID = @Original_GUID); SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM TBEMLP_POLL_PROFILES WHERE (GUID = @GUID) @@ -77,6 +78,7 @@ SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, + @@ -97,6 +99,7 @@ SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, + @@ -602,162 +605,163 @@ SELECT GUID, NAME, EMAIL_FROM, EMAIL_SMTP, EMAIL_USER, EMAIL_PW, PORT, ACTIVE, A - + - + - - + + - + - - + + - - - - + + + + - - + + - + + - + - - + + - + - - - - + + + + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + @@ -767,266 +771,266 @@ SELECT GUID, NAME, EMAIL_FROM, EMAIL_SMTP, EMAIL_USER, EMAIL_PW, PORT, ACTIVE, A - + - - - + + + - + - + - - - + + + - - + + - + - + - - - + + + - + - - - - + + + + - - + + - + - + - - + + - + - + - - + + - + - + - + - + - + - - + + - - - - + + + + - + - + - - + + - + - + - - + + - + - + - + - + - - - + + + - - + + - - - + + + - - + + @@ -1069,9 +1073,9 @@ SELECT GUID, NAME, EMAIL_FROM, EMAIL_SMTP, EMAIL_USER, EMAIL_PW, PORT, ACTIVE, A - - - + + + \ No newline at end of file diff --git a/App/EmailProfiler.Form/frmMain.Designer.vb b/App/EmailProfiler.Form/frmMain.Designer.vb index 36b7a3c..c11074f 100644 --- a/App/EmailProfiler.Form/frmMain.Designer.vb +++ b/App/EmailProfiler.Form/frmMain.Designer.vb @@ -77,6 +77,7 @@ Partial Class frmMain Dim CHANGED_WHENLabel5 As System.Windows.Forms.Label Dim PORT_INLabel As System.Windows.Forms.Label Dim AUTH_TYPELabel As System.Windows.Forms.Label + Dim Label11 As System.Windows.Forms.Label Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain)) Me.EMAIL_SMTPLabel = New System.Windows.Forms.Label() Me.EMAIL_USERLabel = New System.Windows.Forms.Label() @@ -88,6 +89,8 @@ Partial Class frmMain Me.ToolStripStatusLabel1 = New System.Windows.Forms.ToolStripStatusLabel() Me.TabControl1 = New System.Windows.Forms.TabControl() Me.tabProfile = New System.Windows.Forms.TabPage() + Me.txtSQLValidation = New DevExpress.XtraEditors.TextEdit() + Me.btnValidationSQL = New DevExpress.XtraEditors.SimpleButton() Me.GridControl4 = New DevExpress.XtraGrid.GridControl() Me.TBEMLP_POLL_PROFILESBindingSource = New System.Windows.Forms.BindingSource(Me.components) Me.MyDataset = New EmailProfiler.Form.MyDataset() @@ -380,9 +383,11 @@ Partial Class frmMain CHANGED_WHENLabel5 = New System.Windows.Forms.Label() PORT_INLabel = New System.Windows.Forms.Label() AUTH_TYPELabel = New System.Windows.Forms.Label() + Label11 = New System.Windows.Forms.Label() Me.StatusStrip1.SuspendLayout() Me.TabControl1.SuspendLayout() Me.tabProfile.SuspendLayout() + CType(Me.txtSQLValidation.Properties, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.GridControl4, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TBEMLP_POLL_PROFILESBindingSource, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.MyDataset, System.ComponentModel.ISupportInitialize).BeginInit() @@ -853,24 +858,6 @@ Partial Class frmMain EMAIL_FROMLabel.TabIndex = 38 EMAIL_FROMLabel.Text = "Email from:" ' - 'EMAIL_SMTPLabel - ' - Me.EMAIL_SMTPLabel.AutoSize = True - Me.EMAIL_SMTPLabel.Location = New System.Drawing.Point(698, 68) - Me.EMAIL_SMTPLabel.Name = "EMAIL_SMTPLabel" - Me.EMAIL_SMTPLabel.Size = New System.Drawing.Size(43, 13) - Me.EMAIL_SMTPLabel.TabIndex = 40 - Me.EMAIL_SMTPLabel.Text = "Server:" - ' - 'EMAIL_USERLabel - ' - Me.EMAIL_USERLabel.AutoSize = True - Me.EMAIL_USERLabel.Location = New System.Drawing.Point(370, 108) - Me.EMAIL_USERLabel.Name = "EMAIL_USERLabel" - Me.EMAIL_USERLabel.Size = New System.Drawing.Size(80, 13) - Me.EMAIL_USERLabel.TabIndex = 42 - Me.EMAIL_USERLabel.Text = "Benutzername:" - ' 'PORTLabel ' PORTLabel.AutoSize = True @@ -916,15 +903,6 @@ Partial Class frmMain CHANGED_WHENLabel5.TabIndex = 56 CHANGED_WHENLabel5.Text = "Changed when:" ' - 'EMAIL_PWLabel - ' - Me.EMAIL_PWLabel.AutoSize = True - Me.EMAIL_PWLabel.Location = New System.Drawing.Point(735, 108) - Me.EMAIL_PWLabel.Name = "EMAIL_PWLabel" - Me.EMAIL_PWLabel.Size = New System.Drawing.Size(88, 13) - Me.EMAIL_PWLabel.TabIndex = 64 - Me.EMAIL_PWLabel.Text = "Neues Passwort:" - ' 'PORT_INLabel ' PORT_INLabel.AutoSize = True @@ -934,15 +912,6 @@ Partial Class frmMain PORT_INLabel.TabIndex = 70 PORT_INLabel.Text = "Port in:" ' - 'ARCHIVE_FOLDERLabel - ' - Me.ARCHIVE_FOLDERLabel.AutoSize = True - Me.ARCHIVE_FOLDERLabel.Location = New System.Drawing.Point(828, 148) - Me.ARCHIVE_FOLDERLabel.Name = "ARCHIVE_FOLDERLabel" - Me.ARCHIVE_FOLDERLabel.Size = New System.Drawing.Size(84, 13) - Me.ARCHIVE_FOLDERLabel.TabIndex = 76 - Me.ARCHIVE_FOLDERLabel.Text = "Archive Ordner:" - ' 'AUTH_TYPELabel ' AUTH_TYPELabel.AutoSize = True @@ -952,6 +921,51 @@ Partial Class frmMain AUTH_TYPELabel.TabIndex = 78 AUTH_TYPELabel.Text = "Verbindungssicherheit:" ' + 'Label11 + ' + Label11.AutoSize = True + Label11.Location = New System.Drawing.Point(318, 108) + Label11.Name = "Label11" + Label11.Size = New System.Drawing.Size(90, 13) + Label11.TabIndex = 12 + Label11.Text = "Validierungs SQL:" + ' + 'EMAIL_SMTPLabel + ' + Me.EMAIL_SMTPLabel.AutoSize = True + Me.EMAIL_SMTPLabel.Location = New System.Drawing.Point(698, 68) + Me.EMAIL_SMTPLabel.Name = "EMAIL_SMTPLabel" + Me.EMAIL_SMTPLabel.Size = New System.Drawing.Size(43, 13) + Me.EMAIL_SMTPLabel.TabIndex = 40 + Me.EMAIL_SMTPLabel.Text = "Server:" + ' + 'EMAIL_USERLabel + ' + Me.EMAIL_USERLabel.AutoSize = True + Me.EMAIL_USERLabel.Location = New System.Drawing.Point(370, 108) + Me.EMAIL_USERLabel.Name = "EMAIL_USERLabel" + Me.EMAIL_USERLabel.Size = New System.Drawing.Size(80, 13) + Me.EMAIL_USERLabel.TabIndex = 42 + Me.EMAIL_USERLabel.Text = "Benutzername:" + ' + 'EMAIL_PWLabel + ' + Me.EMAIL_PWLabel.AutoSize = True + Me.EMAIL_PWLabel.Location = New System.Drawing.Point(735, 108) + Me.EMAIL_PWLabel.Name = "EMAIL_PWLabel" + Me.EMAIL_PWLabel.Size = New System.Drawing.Size(88, 13) + Me.EMAIL_PWLabel.TabIndex = 64 + Me.EMAIL_PWLabel.Text = "Neues Passwort:" + ' + 'ARCHIVE_FOLDERLabel + ' + Me.ARCHIVE_FOLDERLabel.AutoSize = True + Me.ARCHIVE_FOLDERLabel.Location = New System.Drawing.Point(828, 148) + Me.ARCHIVE_FOLDERLabel.Name = "ARCHIVE_FOLDERLabel" + Me.ARCHIVE_FOLDERLabel.Size = New System.Drawing.Size(84, 13) + Me.ARCHIVE_FOLDERLabel.TabIndex = 76 + Me.ARCHIVE_FOLDERLabel.Text = "Archive Ordner:" + ' 'StatusStrip1 ' Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tslblstatus, Me.tslblRefresh, Me.ToolStripStatusLabel1}) @@ -991,6 +1005,8 @@ Partial Class frmMain 'tabProfile ' Me.tabProfile.AutoScroll = True + Me.tabProfile.Controls.Add(Me.txtSQLValidation) + Me.tabProfile.Controls.Add(Me.btnValidationSQL) Me.tabProfile.Controls.Add(Me.GridControl4) Me.tabProfile.Controls.Add(Me.ComboBox1) Me.tabProfile.Controls.Add(Me.BindingNavigator1) @@ -1005,6 +1021,7 @@ Partial Class frmMain Me.tabProfile.Controls.Add(PROFILE_NAMELabel) Me.tabProfile.Controls.Add(CHANGED_WHENLabel) Me.tabProfile.Controls.Add(Me.PROFILE_NAMETextBox) + Me.tabProfile.Controls.Add(Label11) Me.tabProfile.Controls.Add(COMMENTLabel) Me.tabProfile.Controls.Add(Me.CHANGED_WHENTextBox) Me.tabProfile.Controls.Add(Me.COMMENTTextBox) @@ -1021,6 +1038,22 @@ Partial Class frmMain Me.tabProfile.Text = "Profilkonfiguration" Me.tabProfile.UseVisualStyleBackColor = True ' + 'txtSQLValidation + ' + Me.txtSQLValidation.DataBindings.Add(New System.Windows.Forms.Binding("EditValue", Me.TBEMLP_POLL_PROFILESBindingSource, "VALIDATION_SQL", True)) + Me.txtSQLValidation.Location = New System.Drawing.Point(321, 124) + Me.txtSQLValidation.Name = "txtSQLValidation" + Me.txtSQLValidation.Size = New System.Drawing.Size(328, 20) + Me.txtSQLValidation.TabIndex = 35 + ' + 'btnValidationSQL + ' + Me.btnValidationSQL.Location = New System.Drawing.Point(655, 122) + Me.btnValidationSQL.Name = "btnValidationSQL" + Me.btnValidationSQL.Size = New System.Drawing.Size(36, 23) + Me.btnValidationSQL.TabIndex = 34 + Me.btnValidationSQL.Text = "..." + ' 'GridControl4 ' Me.GridControl4.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ @@ -3341,6 +3374,7 @@ Partial Class frmMain Me.TabControl1.ResumeLayout(False) Me.tabProfile.ResumeLayout(False) Me.tabProfile.PerformLayout() + CType(Me.txtSQLValidation.Properties, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.GridControl4, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TBEMLP_POLL_PROFILESBindingSource, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.MyDataset, System.ComponentModel.ISupportInitialize).EndInit() @@ -3653,4 +3687,6 @@ Partial Class frmMain Friend WithEvents EMAIL_USERLabel As Label Friend WithEvents EMAIL_PWLabel As Label Friend WithEvents ARCHIVE_FOLDERLabel As Label + Friend WithEvents btnValidationSQL As DevExpress.XtraEditors.SimpleButton + Friend WithEvents txtSQLValidation As DevExpress.XtraEditors.TextEdit End Class diff --git a/App/EmailProfiler.Form/frmMain.resx b/App/EmailProfiler.Form/frmMain.resx index a492908..95dc884 100644 --- a/App/EmailProfiler.Form/frmMain.resx +++ b/App/EmailProfiler.Form/frmMain.resx @@ -279,101 +279,25 @@ False + + False + 1271, 17 - - 985, 56 - - - 1162, 173 - - - 623, 134 - - - 851, 173 - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC - pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ - Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ - /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA - zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ - IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E - rkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC - DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC - rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV - i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG - 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG - QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX - bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 - wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 - v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg - UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA - Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu - lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w - 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f - Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ - 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 - n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI - N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f - oAc0QjgAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// - h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B - twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA - kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG - WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 - 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - 290, 56 180, 56 - - 180, 56 - 623, 134 985, 56 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -438,89 +362,6 @@ 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - 1139, 56 - - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 - LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl - dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO4DAAAC77u/ - PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi - IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv - MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh - Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg - MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku - WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz - OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh - Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl - Pg0KICA8ZyBpZD0iUHJvcGVydGllcyI+DQogICAgPHBhdGggZD0iTTMwLDE4di00bC00LjQtMC43Yy0w - LjItMC44LTAuNS0xLjUtMC45LTIuMWwyLjYtMy42bC0yLjgtMi44bC0zLjYsMi42Yy0wLjctMC40LTEu - NC0wLjctMi4xLTAuOUwxOCwyaC00ICAgbC0wLjcsNC40Yy0wLjgsMC4yLTEuNSwwLjUtMi4xLDAuOUw3 - LjUsNC43TDQuNyw3LjVsMi42LDMuNmMtMC40LDAuNy0wLjcsMS40LTAuOSwyLjFMMiwxNHY0bDQuNCww - LjdjMC4yLDAuOCwwLjUsMS41LDAuOSwyLjEgICBsLTIuNiwzLjZsMi44LDIuOGwzLjYtMi42YzAuNyww - LjQsMS40LDAuNywyLjEsMC45TDE0LDMwaDRsMC43LTQuNGMwLjgtMC4yLDEuNS0wLjUsMi4xLTAuOWwz - LjYsMi42bDIuOC0yLjhsLTIuNi0zLjYgICBjMC40LTAuNywwLjctMS40LDAuOS0yLjFMMzAsMTh6IE0x - NiwyMGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNHM0LDEuOCw0LDRDMjAsMTguMiwxOC4y - LDIwLDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs= - - - - 1021, 95 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 - LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl - dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOYCAAAC77u/ - PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi - IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv - MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh - Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg - MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLlll - bGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD - MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh - Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMzU7fQoJLnN0M3tv - cGFjaXR5OjAuNjU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRnVubmVsIj4NCiAgICA8cmVjdCB4PSIxMiIg - eT0iMjIiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IkJsdWUiIC8+DQog - ICAgPHBvbHlnb24gcG9pbnRzPSIxMiwyMCA0LDEyIDI2LDEyIDE4LDIwICAiIGNsYXNzPSJZZWxsb3ci - IC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSI0LDEwIDAsMiAzMCwyIDI2LDEwICAiIGNsYXNzPSJSZWQi - IC8+DQogIDwvZz4NCjwvc3ZnPgs= - - - - 1175, 95 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 - LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl - dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGYEAAAC77u/ - PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi - IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv - MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh - Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg - MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z - ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD - MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh - Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk - aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp - c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41 - O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7 - ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp - c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJEb2N1bWVudF8xXyI+ - DQogICAgPHBhdGggZD0iTTE1LDIwbDktOWw1LDVsLTksOUwxNSwyMHogTTMxLjcsMTEuOWwtMy42LTMu - NmMtMC40LTAuNC0xLTAuNC0xLjQsMEwyNSwxMGw1LDVsMS43LTEuNyAgIEMzMi4xLDEyLjksMzIuMSwx - Mi4zLDMxLjcsMTEuOXogTTE0LDI2aDVsLTUtNVYyNnoiIGNsYXNzPSJCbHVlIiAvPg0KICAgIDxwYXRo - IGQ9Ik0yNCwyMy44VjI4aC00LjJIMTJINlY0aDE4djQuMmwyLTJWM2MwLTAuNS0wLjUtMS0xLTFINUM0 - LjQsMiw0LDIuNSw0LDN2MjZjMCwwLjUsMC41LDEsMSwxaDIwICAgYzAuNSwwLDEtMC41LDEtMXYtNy4y - TDI0LDIzLjh6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs= - - - - 17, 95 - 17, 95 @@ -591,9 +432,31 @@ 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - 537, 95 - + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO4DAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku + WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz + OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh + Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl + Pg0KICA8ZyBpZD0iUHJvcGVydGllcyI+DQogICAgPHBhdGggZD0iTTMwLDE4di00bC00LjQtMC43Yy0w + LjItMC44LTAuNS0xLjUtMC45LTIuMWwyLjYtMy42bC0yLjgtMi44bC0zLjYsMi42Yy0wLjctMC40LTEu + NC0wLjctMi4xLTAuOUwxOCwyaC00ICAgbC0wLjcsNC40Yy0wLjgsMC4yLTEuNSwwLjUtMi4xLDAuOUw3 + LjUsNC43TDQuNyw3LjVsMi42LDMuNmMtMC40LDAuNy0wLjcsMS40LTAuOSwyLjFMMiwxNHY0bDQuNCww + LjdjMC4yLDAuOCwwLjUsMS41LDAuOSwyLjEgICBsLTIuNiwzLjZsMi44LDIuOGwzLjYtMi42YzAuNyww + LjQsMS40LDAuNywyLjEsMC45TDE0LDMwaDRsMC43LTQuNGMwLjgtMC4yLDEuNS0wLjUsMi4xLTAuOWwz + LjYsMi42bDIuOC0yLjhsLTIuNi0zLjYgICBjMC40LTAuNywwLjctMS40LDAuOS0yLjFMMzAsMTh6IE0x + NiwyMGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNHM0LDEuOCw0LDRDMjAsMTguMiwxOC4y + LDIwLDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs= + + 537, 95 @@ -664,9 +527,26 @@ 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - 17, 134 - + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOYCAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLlll + bGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD + MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh + Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMzU7fQoJLnN0M3tv + cGFjaXR5OjAuNjU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRnVubmVsIj4NCiAgICA8cmVjdCB4PSIxMiIg + eT0iMjIiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IkJsdWUiIC8+DQog + ICAgPHBvbHlnb24gcG9pbnRzPSIxMiwyMCA0LDEyIDI2LDEyIDE4LDIwICAiIGNsYXNzPSJZZWxsb3ci + IC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSI0LDEwIDAsMiAzMCwyIDI2LDEwICAiIGNsYXNzPSJSZWQi + IC8+DQogIDwvZz4NCjwvc3ZnPgs= + + 17, 134 @@ -737,9 +617,102 @@ 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== - - 239, 173 + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGYEAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z + ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD + MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh + Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk + aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp + c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41 + O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7 + ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp + c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJEb2N1bWVudF8xXyI+ + DQogICAgPHBhdGggZD0iTTE1LDIwbDktOWw1LDVsLTksOUwxNSwyMHogTTMxLjcsMTEuOWwtMy42LTMu + NmMtMC40LTAuNC0xLTAuNC0xLjQsMEwyNSwxMGw1LDVsMS43LTEuNyAgIEMzMi4xLDEyLjksMzIuMSwx + Mi4zLDMxLjcsMTEuOXogTTE0LDI2aDVsLTUtNVYyNnoiIGNsYXNzPSJCbHVlIiAvPg0KICAgIDxwYXRo + IGQ9Ik0yNCwyMy44VjI4aC00LjJIMTJINlY0aDE4djQuMmwyLTJWM2MwLTAuNS0wLjUtMS0xLTFINUM0 + LjQsMiw0LDIuNSw0LDN2MjZjMCwwLjUsMC41LDEsMSwxaDIwICAgYzAuNSwwLDEtMC41LDEtMXYtNy4y + TDI0LDIzLjh6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs= + + + + 1162, 173 + + 851, 173 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + 239, 173 diff --git a/App/EmailProfiler.Form/frmMain.vb b/App/EmailProfiler.Form/frmMain.vb index f0b709c..ced5b77 100644 --- a/App/EmailProfiler.Form/frmMain.vb +++ b/App/EmailProfiler.Form/frmMain.vb @@ -7,6 +7,7 @@ Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Messaging Imports DigitalData.Modules.Config Imports DigitalData.Modules.Messaging.Mail +Imports DigitalData.GUIs.Common Public Class frmMain Private Logger As Logger @@ -931,4 +932,19 @@ Public Class frmMain Private Sub GridView6_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridView6.FocusedRowChanged SetEmailTextboxLabels() End Sub + + Private Sub btnValidationSQL_Click(sender As Object, e As EventArgs) Handles btnValidationSQL.Click + Dim oForm As New frmSQLEditor(LogConfig, _database) With { + .SQLConnection = 1, + .SQLCommand = txtSQLValidation.EditValue, + .PlaceholdersManual = New Dictionary(Of String, String) From { + {"EMAIL", "EMAIL"}, + {"DOMAIN", "DOMAIN"} + }, + .PlaceholdersManualPrefix = "CUST" + } + oForm.Show() + + txtSQLValidation.EditValue = oForm.SQLCommand + End Sub End Class