Big update: MessageID replaced with Hash of MessageID
This commit is contained in:
parent
2b21650c53
commit
aa5a268e14
@ -59,6 +59,10 @@
|
||||
<Reference Include="DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.XtraPrinting.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\wisag_check_Att\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
|
||||
@ -2,13 +2,15 @@
|
||||
Imports System.IO
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports DigitalData.EMLProfiler
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Messaging
|
||||
|
||||
Public Class frmMain
|
||||
Private Logger As DigitalData.Modules.Logging.Logger
|
||||
Private Shared MyLogger As LogConfig
|
||||
Private _database As clsDatabase
|
||||
Private Shared LogConfig As LogConfig
|
||||
'Private _database As clsDatabase
|
||||
Private _database As MSSQLServer
|
||||
Private _Encryption As clsEncryption
|
||||
Private _windream As clsWindream_allgemein
|
||||
' Private _email As clsEmail
|
||||
@ -18,7 +20,8 @@ Public Class frmMain
|
||||
Private _SQLServerConString As String
|
||||
Private _Worklist As List(Of String)
|
||||
Private _limilab As DigitalData.Modules.Messaging.Limilab
|
||||
|
||||
Private _ConfigManager As ClassConfig
|
||||
Private _Config As ClassConfig.Config
|
||||
|
||||
Public Sub New()
|
||||
|
||||
@ -31,22 +34,22 @@ Public Class frmMain
|
||||
|
||||
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
Try
|
||||
MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"), Nothing, My.Application.Info.CompanyName, My.Application.Info.ProductName)
|
||||
_limilab = New Limilab(MyLogger)
|
||||
Logger = MyLogger.GetLogger()
|
||||
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"), Nothing, My.Application.Info.CompanyName, My.Application.Info.ProductName)
|
||||
_limilab = New Limilab(LogConfig)
|
||||
Logger = LogConfig.GetLogger()
|
||||
If My.Settings.DEBUG = True Then
|
||||
Logger.Info("!! DEBUG is ACTIVE !!")
|
||||
End If
|
||||
MyLogger.Debug = My.Settings.DEBUG
|
||||
LogConfig.Debug = My.Settings.DEBUG
|
||||
InitDatabase()
|
||||
ToolStripProgressBar1.Visible = False
|
||||
Logger.Debug($"AppConfig is located at: [{AppDomain.CurrentDomain.SetupInformation.ConfigurationFile}]")
|
||||
If My.Settings.USE_WM Then
|
||||
_windream = New clsWindream_allgemein(MyLogger)
|
||||
_windream = New clsWindream_allgemein(LogConfig)
|
||||
End If
|
||||
|
||||
'_email = New clsEmail(MyLogger)
|
||||
_emailIMAP = New clsEmailIMAP(MyLogger, _SQLServerConString)
|
||||
_emailIMAP = New clsEmailIMAP(LogConfig)
|
||||
Catch ex As Exception
|
||||
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in FormLoad")
|
||||
End Try
|
||||
@ -62,7 +65,7 @@ Public Class frmMain
|
||||
ObjektTypenEintragen()
|
||||
End If
|
||||
|
||||
_Encryption = New clsEncryption("!35452didalog=", MyLogger)
|
||||
_Encryption = New clsEncryption("!35452didalog=", LogConfig)
|
||||
End Sub
|
||||
Private Function Set_ConnectionStrings()
|
||||
Try
|
||||
@ -168,8 +171,15 @@ Public Class frmMain
|
||||
Logger.Debug($"SQL-Server ConnString is [{_SQLServerConString}]")
|
||||
|
||||
|
||||
_database = New clsDatabase(MyLogger, My.Settings.MyConnectionString)
|
||||
dbResult = _database.Init(My.Settings.MyConnectionString)
|
||||
_ConfigManager = New ClassConfig(LogConfig, _database)
|
||||
_Config = _ConfigManager.GetConfig()
|
||||
|
||||
If _Config Is Nothing Then
|
||||
MsgBox("Configuration could not be loaded. Please check the Logfile.", MsgBoxStyle.Critical, Text)
|
||||
End If
|
||||
|
||||
'_database = New clsDatabase(MyLogger, My.Settings.MyConnectionString)
|
||||
'dbResult = _database.Init(My.Settings.MyConnectionString)
|
||||
Else
|
||||
MsgBox("No Databaseconnection configured. (First Start or Appdata not accessible)" & vbNewLine & "Basic-Config will be loaded.", MsgBoxStyle.Information)
|
||||
|
||||
@ -178,7 +188,7 @@ Public Class frmMain
|
||||
tslblstatus.BackColor = Color.Red
|
||||
End If
|
||||
If dbResult = False Then
|
||||
MsgBox("Error in init database. (Connection failed) More information in the logfile.", MsgBoxStyle.Critical)
|
||||
MsgBox("Error in init database. (Connection failed) More information in the logfile.", MsgBoxStyle.Critical, Text)
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
@ -259,8 +269,13 @@ Public Class frmMain
|
||||
'Set the construction string
|
||||
MyConnectionString = con
|
||||
My.Settings.MyConnectionString = MyConnectionString
|
||||
|
||||
_database = New MSSQLServer(LogConfig, MyConnectionString)
|
||||
_ConfigManager = New ClassConfig(LogConfig, _database)
|
||||
|
||||
'csb.ConnectionString
|
||||
_database.Init(MyConnectionString)
|
||||
'_database.Init(MyConnectionString)
|
||||
|
||||
My.Settings.Save()
|
||||
|
||||
If chkbxUserAut.Checked = False Then
|
||||
@ -285,15 +300,15 @@ Public Class frmMain
|
||||
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
|
||||
If _RunwithLocalemail = False Then
|
||||
|
||||
MyLogger.Debug = True
|
||||
Dim _work As New clsWorker(My.Settings.EML_LIMITATION_SENDER, MyLogger, _SQLServerConString, GUIDTextBox.Text, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW,
|
||||
LogConfig.Debug = True
|
||||
Dim _work As New clsWorker(My.Settings.EML_LIMITATION_SENDER, LogConfig, _SQLServerConString, _Config.WindreamConnectionString, GUIDTextBox.Text, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW,
|
||||
My.Settings.USE_WM, ToolStripEmailAccountID.Text, "EmailProfilerTestClient")
|
||||
_work.Start_WorkingProfiles()
|
||||
|
||||
Else
|
||||
For Each ofile As String In _Worklist
|
||||
Logger.Info($"## Manual working on file {ofile} ... ")
|
||||
Dim _work As New clsWorker(My.Settings.EML_LIMITATION_SENDER, MyLogger, _SQLServerConString, GUIDTextBox.Text, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW, My.Settings.USE_WM, ToolStripEmailAccountID.Text, "EmailProfilerTestClient", ofile)
|
||||
Dim _work As New clsWorker(My.Settings.EML_LIMITATION_SENDER, LogConfig, _SQLServerConString, _Config.WindreamConnectionString, GUIDTextBox.Text, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW, My.Settings.USE_WM, ToolStripEmailAccountID.Text, "EmailProfilerTestClient", ofile)
|
||||
_work.Start_WorkingProfiles(True)
|
||||
Next
|
||||
|
||||
@ -311,7 +326,7 @@ Public Class frmMain
|
||||
fi.Delete()
|
||||
Next
|
||||
Catch ex As Exception
|
||||
If MyLogger.Debug = True Then
|
||||
If LogConfig.Debug = True Then
|
||||
Logger.Warn($"Could not delete the tempfile: {ex.Message}")
|
||||
End If
|
||||
End Try
|
||||
@ -391,7 +406,7 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub btnShowLogpath_Click(sender As Object, e As EventArgs) Handles btnShowLogpath.Click
|
||||
Process.Start(MyLogger.LogDirectory)
|
||||
Process.Start(LogConfig.LogDirectory)
|
||||
End Sub
|
||||
|
||||
Private Sub TBEMLP_POLL_PROFILESBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
|
||||
@ -590,7 +605,7 @@ Public Class frmMain
|
||||
Case 4
|
||||
Try
|
||||
Dim osql = "SELECT * FROM TBDD_FUNCTION_REGEX WHERE UPPER(FUNCTION_NAME) IN (UPPER('EMAIL_PROFILER - RemoveHTMLText'),UPPER('EMAIL_PROFILER - RemoveHTMLText1'))"
|
||||
Dim oDTFunctionRegex As DataTable = _database.Return_Datatable(osql)
|
||||
Dim oDTFunctionRegex As DataTable = _database.GetDatatable(osql)
|
||||
txtRegex1.Text = oDTFunctionRegex.Rows(0).Item("REGEX")
|
||||
txtRegex2.Text = oDTFunctionRegex.Rows(1).Item("REGEX")
|
||||
txthtmlEmail.BackColor = Color.Wheat
|
||||
@ -635,10 +650,10 @@ Public Class frmMain
|
||||
|
||||
Private Sub LOG_ERRORS_ONLYCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles LOG_ERRORS_ONLYCheckBox.CheckedChanged
|
||||
If _LoadInProgress = True Then Exit Sub
|
||||
MyLogger.Debug = LOG_ERRORS_ONLYCheckBox.Checked
|
||||
LogConfig.Debug = LOG_ERRORS_ONLYCheckBox.Checked
|
||||
My.Settings.Save()
|
||||
Dim upd = $"UPDATE TBEMLP_CONFIG SET CHANGED_WHO = '{Environment.UserName}',LOG_ERRORS_ONLY = '{LOG_ERRORS_ONLYCheckBox.Checked}' WHERE GUID = 1"
|
||||
_database.Execute_non_Query(upd)
|
||||
_database.ExecuteNonQuery(upd)
|
||||
Load_Config()
|
||||
|
||||
End Sub
|
||||
@ -672,7 +687,7 @@ Public Class frmMain
|
||||
Private Sub CHECK_INTERVALL_MINUTESNumericUpDown_ValueChanged(sender As Object, e As EventArgs) Handles CHECK_INTERVALL_MINUTESNumericUpDown.ValueChanged
|
||||
If _LoadInProgress = True Then Exit Sub
|
||||
Dim upd = $"UPDATE TBEMLP_CONFIG SET CHANGED_WHO = '{Environment.UserName}',CHECK_INTERVALL_MINUTES = {CHECK_INTERVALL_MINUTESNumericUpDown.Value} WHERE GUID = 1"
|
||||
_database.Execute_non_Query(upd)
|
||||
_database.ExecuteNonQuery(upd)
|
||||
Load_Config()
|
||||
End Sub
|
||||
'Private Function GetChildren(ByVal bodyParts As BodyPartCollection) As BodyPartCollection
|
||||
@ -739,7 +754,7 @@ Public Class frmMain
|
||||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btntestImap.Click
|
||||
My.Settings.Save()
|
||||
Dim oSQL = $"SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE GUID = {EMAILIDTextBox.Text}"
|
||||
Dim oDT As DataTable = _database.Return_Datatable(oSQL)
|
||||
Dim oDT As DataTable = _database.GetDatatable(oSQL)
|
||||
If Not IsNothing(oDT) Then
|
||||
|
||||
If oDT.Rows.Count = 1 Then
|
||||
@ -813,7 +828,7 @@ Public Class frmMain
|
||||
Private Sub btnsaveRegex_Click_1(sender As Object, e As EventArgs) Handles btnsaveRegex.Click
|
||||
tslblRefresh.BackColor = Color.Transparent
|
||||
Dim upd = $"UPDATE TBDD_FUNCTION_REGEX SET REGEX = '{txtRegex1.Text}' WHERE UPPER(FUNCTION_NAME) = UPPER('EMAIL_PROFILER - RemoveHTMLText')"
|
||||
If _database.Execute_non_Query(upd) = True Then
|
||||
If _database.ExecuteNonQuery(upd) = True Then
|
||||
tslblRefresh.Text = "Regex1 saved - " & Now.ToString
|
||||
tslblRefresh.BackColor = Color.Yellow
|
||||
Else
|
||||
@ -879,7 +894,7 @@ Public Class frmMain
|
||||
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
|
||||
tslblRefresh.BackColor = Color.Transparent
|
||||
Dim upd = $"UPDATE TBDD_FUNCTION_REGEX SET REGEX = '{txtRegex2.Text}' WHERE UPPER(FUNCTION_NAME) = UPPER('EMAIL_PROFILER - RemoveHTMLText1')"
|
||||
If _database.Execute_non_Query(upd) = True Then
|
||||
If _database.ExecuteNonQuery(upd) = True Then
|
||||
tslblRefresh.Text = "Regex2 saved - " & Now.ToString
|
||||
tslblRefresh.BackColor = Color.Yellow
|
||||
Else
|
||||
|
||||
72
App/DigitalData.EMLProfiler/ClassConfig.vb
Normal file
72
App/DigitalData.EMLProfiler/ClassConfig.vb
Normal file
@ -0,0 +1,72 @@
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Base
|
||||
|
||||
Public Class ClassConfig
|
||||
Public Class Config
|
||||
Public Property PathError As String
|
||||
Public Property PathAttachments As String
|
||||
Public Property BodyFont As String
|
||||
Public Property WindreamConnectionString As String
|
||||
Public Property TimerInterval As Integer
|
||||
Public Property WindreamDrive As String = "W"
|
||||
End Class
|
||||
|
||||
Private ReadOnly Logger As Logger
|
||||
Private ReadOnly Database As MSSQLServer
|
||||
|
||||
Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer)
|
||||
Logger = pLogConfig.GetLogger()
|
||||
Database = pDatabase
|
||||
End Sub
|
||||
|
||||
Private Function GetConfigTable() As DataTable
|
||||
Dim oSQL As String = "SELECT * FROM TBEMLP_CONFIG"
|
||||
Dim oTable As DataTable = Database.GetDatatable(oSQL)
|
||||
Return oTable
|
||||
End Function
|
||||
|
||||
Private Function GetBaseConfigTable() As DataTable
|
||||
Dim oSQL As String = "SELECT * FROM TBDD_BASECONFIG"
|
||||
Dim oTable As DataTable = Database.GetDatatable(oSQL)
|
||||
Return oTable
|
||||
End Function
|
||||
|
||||
Public Function GetConfig() As Config
|
||||
Dim oConfigTable = GetConfigTable()
|
||||
Dim oBaseTable = GetBaseConfigTable()
|
||||
|
||||
If oBaseTable Is Nothing Then
|
||||
Logger.Warn("Config from TBDD_BASECONFIG could not be loaded!")
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
If oBaseTable.Rows.Count = 0 Then
|
||||
Logger.Warn("Config from TBDD_BASECONFIG could not be loaded!")
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
If oConfigTable Is Nothing Then
|
||||
Logger.Warn("Config from TBEMLP_CONFIG could not be loaded!")
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
If oConfigTable.Rows.Count = 0 Then
|
||||
Logger.Warn("Config from TBEMLP_CONFIG is empty!")
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
Dim oRow As DataRow = oConfigTable.Rows.Item(0)
|
||||
|
||||
Dim oConfig As New Config With {
|
||||
.PathAttachments = oRow.ItemEx("PATH_EMAIL_TEMP", ""),
|
||||
.PathError = oRow.ItemEx("PATH_EMAIL_ERRORS", ""),
|
||||
.BodyFont = oRow.ItemEx("FONT_BODY", "Arial"),
|
||||
.TimerInterval = oRow.ItemEx("CHECK_INTERVALL_MINUTES", 5),
|
||||
.WindreamConnectionString = oRow.ItemEx("WM_CON_STRING", ""),
|
||||
.WindreamDrive = oRow.ItemEx("WM_DRIVE", "W")
|
||||
}
|
||||
|
||||
Return oConfig
|
||||
End Function
|
||||
End Class
|
||||
@ -6,18 +6,13 @@ Imports MailBox = Limilabs.Mail.Headers.MailBox
|
||||
Imports Limilabs.Client.IMAP
|
||||
|
||||
Public Class ClassCurrent
|
||||
Public Shared Property WM_CON_STRING As String
|
||||
Public Shared Property WM_DRIVE As String
|
||||
Public Shared Property TIMER_INTERVALL As Integer = 5
|
||||
|
||||
Public Shared Property CURRENT_EMAIL_GUID As Integer
|
||||
Public Shared Property CURRENT_PROFILE_GUID As Integer
|
||||
Public Shared Property DTCONFIG As DataTable
|
||||
Public Shared Property DT_ECM_BASE_CONFIG As DataTable
|
||||
Public Shared Property PATH_TEMP As String
|
||||
Public Shared Property PATH_ERROR As String
|
||||
|
||||
Public Shared Property MAIL_BODY_FONT As String = ""
|
||||
Public Shared Property MAIL_FROM As String = ""
|
||||
Public Shared Property MAIL_SERVER As String = ""
|
||||
Public Shared Property MAIL_USER As String = ""
|
||||
@ -30,20 +25,21 @@ Public Class ClassCurrent
|
||||
Public Shared Property DT_STEPS As DataTable
|
||||
Public Shared Property DT_INDEXING_STEPS As DataTable
|
||||
|
||||
Public Shared Property CURRENToWMSession As Object
|
||||
Public Shared Property CURRENToWMSession_Created As Date = Now
|
||||
Public Shared Property CURRENToWMConnect As Object
|
||||
Public Shared Property CURRENT_ATTMT_COUNT As Integer
|
||||
Public Shared Property SUBJECT_PRAFIX As String = "EmailProfiler"
|
||||
Public Shared Property CURRENT_DRIVE_CHECK As String = ""
|
||||
Public Shared Property CURRENT_DRIVE_ISFULL As Boolean = False
|
||||
|
||||
|
||||
' Public Shared Property oCURRENT_WORKMAIL_LIST As New ArrayList()
|
||||
Public Shared Property CURRENT_WORKMAIL_UID_LIST As New List(Of Long)
|
||||
|
||||
Public Shared Property CURRENT_MAIL_MESSAGE As IMail
|
||||
Public Shared Property CURRENT_TEMP_MAIL_PATH As String
|
||||
Public Shared Property CURRENT_MAIL_BODY_ALL As String
|
||||
Public Shared Property CURRENT_MAIL_BODY_ANSWER1 As String = ""
|
||||
Public Shared Property CURRENT_MAIL_BODY_Substr2 As String = ""
|
||||
Public Shared Property CURRENT_MAIL_SUBJECT As String = ""
|
||||
Public Shared Property CURRENT_MAIL_FROM As String = ""
|
||||
Public Shared Property CURRENT_MAIL_MESSAGE_ID As String = ""
|
||||
Public Shared Property CURRENT_MAIL_UID As Long
|
||||
Public Shared Property CURRENT_MAIL_PROCESS_NAME As String
|
||||
Public Shared Property CURRENT_ImapObject As Imap
|
||||
Public Shared Property CURRENT_MAIL_UID As Long
|
||||
|
||||
Public Shared Property DeleteMail As Boolean = False
|
||||
Public Shared Property CURRENT_POLL_TYPE As String
|
||||
|
||||
@ -106,6 +106,7 @@
|
||||
<Import Include="System.Threading.Tasks" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ClassConfig.vb" />
|
||||
<Compile Include="ClassCurrent.vb" />
|
||||
<Compile Include="clsDatabase.vb" />
|
||||
<Compile Include="clsEmail.IMAP.vb" />
|
||||
@ -116,7 +117,6 @@
|
||||
<Compile Include="clsWorkEmail.vb" />
|
||||
<Compile Include="clsWorker.vb" />
|
||||
<Compile Include="MailContainer.vb" />
|
||||
<Compile Include="ModuleCurrent.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
|
||||
@ -1,52 +1,64 @@
|
||||
Imports Limilabs.Mail
|
||||
Imports DigitalData.Modules.Language
|
||||
Imports DigitalData.Modules.Base
|
||||
|
||||
Public Class MailContainer
|
||||
Private ReadOnly Uid As String
|
||||
Private ReadOnly FilteredMessageId
|
||||
Private Const SUBJECT_MAX_LENGTH = 25
|
||||
|
||||
''' <summary>
|
||||
''' The Mail object created by Limilabs
|
||||
''' </summary>
|
||||
Public ReadOnly Property Mail As IMail
|
||||
|
||||
Public ReadOnly Property Subject As String
|
||||
Get
|
||||
Return Mail.Subject
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' The IMAP Id coming from the IMAP folder. Used to reference the mail.
|
||||
''' </summary>
|
||||
Public ReadOnly Property ImapId As Integer
|
||||
''' <summary>
|
||||
''' The original MessageID from the eml file
|
||||
''' </summary>
|
||||
Public ReadOnly Property MessageIdOriginal As String
|
||||
''' <summary>
|
||||
''' The new MessageID, which is generated by hashing the original MessageID
|
||||
''' </summary>
|
||||
Public ReadOnly Property MessageId As String
|
||||
Get
|
||||
Return Mail.MessageID
|
||||
End Get
|
||||
End Property
|
||||
''' <summary>
|
||||
''' The subject, truncated to SUBJECT_MAX_LENGTH characters
|
||||
''' </summary>
|
||||
Public ReadOnly Property Subject As String
|
||||
|
||||
Public ReadOnly Property MessageIdPathSafe As String
|
||||
Get
|
||||
Return FilteredMessageId
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Property BodyComplete As String
|
||||
Public Property BodySubstring1 As String
|
||||
Public Property BodySubstring2 As String
|
||||
Public ReadOnly Property SenderDomain As String
|
||||
Public ReadOnly Property SenderAddress As String
|
||||
|
||||
|
||||
|
||||
Public Sub New(pMail As IMail, pUid As String)
|
||||
Public Sub New(pMail As IMail, pImapId As Integer)
|
||||
Mail = pMail
|
||||
Uid = pUid
|
||||
FilteredMessageId = ProcessMessageId(pMail.MessageID)
|
||||
ImapId = pImapId
|
||||
|
||||
MessageIdOriginal = pMail.MessageID
|
||||
MessageId = StringEx.GetHash(pMail.MessageID)
|
||||
|
||||
Subject = ObjectEx.NotNull(pMail.Subject.Truncate(SUBJECT_MAX_LENGTH), String.Empty)
|
||||
|
||||
SenderAddress = GetSenderAddress(pMail)
|
||||
SenderDomain = GetSenderDomain(pMail)
|
||||
End Sub
|
||||
|
||||
Private Function ProcessMessageId(pOriginalMessageId As String) As String
|
||||
If pOriginalMessageId Is Nothing Then
|
||||
Return Guid.NewGuid.ToString
|
||||
End If
|
||||
|
||||
If TypeOf pOriginalMessageId Is String AndAlso pOriginalMessageId.Length = 0 Then
|
||||
Return Guid.NewGuid.ToString
|
||||
Private Function GetSenderAddress(pMail As IMail)
|
||||
Dim oMailBox = pMail.From.FirstOrDefault()
|
||||
If oMailBox Is Nothing Then
|
||||
Return "InvalidSenderAddress"
|
||||
Else
|
||||
Return oMailBox.Address
|
||||
End If
|
||||
End Function
|
||||
|
||||
Return Utils.RemoveInvalidCharacters(pOriginalMessageId)
|
||||
Private Function GetSenderDomain(pMail As IMail)
|
||||
Dim oMailBox = pMail.From.FirstOrDefault()
|
||||
If oMailBox Is Nothing Then
|
||||
Return "InvalidSenderAddress"
|
||||
Else
|
||||
Return oMailBox.DomainPart
|
||||
End If
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
Module ModuleCurrent
|
||||
Public CURRENToWMSession As Object
|
||||
Public CURRENToWMSession_Created As Date = Now
|
||||
Public CURRENToWMConnect As Object
|
||||
Public CURRENT_ATTMT_COUNT As Integer
|
||||
Public SUBJECT_PRAFIX As String = "EmailProfiler"
|
||||
Public CURRENT_DRIVE_CHECK As String = ""
|
||||
Public CURRENT_DRIVE_ISFULL As Boolean = False
|
||||
End Module
|
||||
@ -10,7 +10,7 @@ Public Class clsDatabase
|
||||
MyLogger = LogConf
|
||||
Init(ConStr)
|
||||
End Sub
|
||||
Public Function Init(ConString As String)
|
||||
Public Function Init(ConString As String) As Boolean
|
||||
Try
|
||||
|
||||
Dim SQLconnect As New SqlClient.SqlConnection
|
||||
@ -21,11 +21,11 @@ Public Class clsDatabase
|
||||
DTCONFIG = Return_Datatable("select * from TBEMLP_CONFIG")
|
||||
If Not IsNothing(DTCONFIG) Then
|
||||
If DTCONFIG.Rows.Count = 1 Then
|
||||
PATH_TEMP = DTCONFIG.Rows(0).Item("PATH_EMAIL_TEMP")
|
||||
PATH_ERROR = DTCONFIG.Rows(0).Item("PATH_EMAIL_ERRORS")
|
||||
MAIL_BODY_FONT = DTCONFIG.Rows(0).Item("FONT_BODY")
|
||||
WM_CON_STRING = DTCONFIG.Rows(0).Item("WM_CON_STRING")
|
||||
TIMER_INTERVALL = DTCONFIG.Rows(0).Item("CHECK_INTERVALL_MINUTES")
|
||||
'PATH_EXTRACT_ATTACHMENTS = DTCONFIG.Rows(0).Item("PATH_EMAIL_TEMP")
|
||||
'PATH_ERROR = DTCONFIG.Rows(0).Item("PATH_EMAIL_ERRORS")
|
||||
'MAIL_BODY_FONT = DTCONFIG.Rows(0).Item("FONT_BODY")
|
||||
'WM_CON_STRING = DTCONFIG.Rows(0).Item("WM_CON_STRING")
|
||||
'TIMER_INTERVALL = DTCONFIG.Rows(0).Item("CHECK_INTERVALL_MINUTES")
|
||||
End If
|
||||
End If
|
||||
DT_ECM_BASE_CONFIG = Return_Datatable("select * from TBDD_BASECONFIG")
|
||||
@ -132,25 +132,4 @@ Public Class clsDatabase
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
Public Function Execute_Scalar_CS(cmdscalar As String, constring As String)
|
||||
Dim result
|
||||
Try
|
||||
Dim SQLconnect As New SqlClient.SqlConnection
|
||||
Dim SQLcommand As SqlClient.SqlCommand
|
||||
SQLconnect.ConnectionString = constring
|
||||
SQLconnect.Open()
|
||||
SQLcommand = SQLconnect.CreateCommand
|
||||
'Update Last Created Record in Foo
|
||||
SQLcommand.CommandText = cmdscalar
|
||||
result = SQLcommand.ExecuteScalar()
|
||||
SQLcommand.Dispose()
|
||||
SQLconnect.Close()
|
||||
Return result
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
Logger.Warn("Unexpected Error in Execute_Scalar_CS: " & ex.Message)
|
||||
Logger.Warn("SQL: " & cmdscalar)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
@ -10,12 +10,10 @@ Imports DigitalData.Modules.Messaging
|
||||
Public Class clsEmailIMAP
|
||||
Private Shared Logger As Logger
|
||||
Private Shared LogConfig As LogConfig
|
||||
Private _DB_MSSQL As clsDatabase
|
||||
Private _limilab As Limilab
|
||||
Sub New(LogConf As LogConfig, ECMConnectionString As String)
|
||||
Sub New(LogConf As LogConfig)
|
||||
LogConfig = LogConf
|
||||
Logger = LogConf.GetLogger
|
||||
_DB_MSSQL = New clsDatabase(LogConf, ECMConnectionString)
|
||||
_limilab = New Limilab(LogConf)
|
||||
End Sub
|
||||
Public Function FetchIMAPMessagesLimilab(Server As String, Port As Integer, Username As String, Password As String, AuthType As String) As Boolean
|
||||
|
||||
@ -9,6 +9,7 @@ Imports WMOBRWSLib
|
||||
Imports WMOSRCHLib
|
||||
Imports System.IO
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.EMLProfiler.ClassCurrent
|
||||
|
||||
Public Class clsWindream_allgemein
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -4,37 +4,37 @@ Imports DigitalData.Modules.Messaging
|
||||
Imports Limilabs.Mail
|
||||
Imports Limilabs.Mail.MIME
|
||||
Imports Limilabs.Mail.Headers
|
||||
Imports DigitalData.Modules.Database
|
||||
|
||||
Public Class clsWorker
|
||||
Private Shared Logger As Logger
|
||||
Private MyLogConfig As LogConfig
|
||||
'Private _email As clsEmail
|
||||
Private _emailIMAP As clsEmailIMAP
|
||||
Private _Database As clsDatabase
|
||||
Private _USE_WM As Boolean = False
|
||||
Private _windream As clsWindream_allgemein
|
||||
Private _windream_index As clsWindream_Index
|
||||
Private _workmail As clsWorkEmail
|
||||
Private _wrapper As clsEncryption
|
||||
Private _POLL_PROFILEID As Integer = 0
|
||||
Private Eml_Limitation_Sender As String = ""
|
||||
Dim cs As String
|
||||
Sub New(EML_LIMITATION As String, LogConf As LogConfig, ConStr As String, POLL_PROFILEID As Integer, FB_DATASOURCE As String, FB_DATABASE As String, FB_USER As String, FB_PW As String, USE_WM As Boolean, EmailAccountID As Integer, EmlProfPraefix As String, Optional plocaleml As String = "")
|
||||
MyLogConfig = LogConf
|
||||
Logger = LogConf.GetLogger
|
||||
_emailIMAP = New clsEmailIMAP(LogConf, ConStr)
|
||||
_Database = New clsDatabase(LogConf, ConStr)
|
||||
cs = ConStr
|
||||
Private ReadOnly _emailIMAP As clsEmailIMAP
|
||||
'Private _Database As clsDatabase
|
||||
Private ReadOnly _Database As MSSQLServer
|
||||
Private ReadOnly _USE_WM As Boolean = False
|
||||
Private ReadOnly _windream As clsWindream_allgemein
|
||||
Private ReadOnly _windream_index As clsWindream_Index
|
||||
Private ReadOnly _workmail As clsWorkEmail
|
||||
Private ReadOnly _wrapper As clsEncryption
|
||||
Private ReadOnly _POLL_PROFILEID As Integer = 0
|
||||
Private ReadOnly Eml_Limitation_Sender As String = ""
|
||||
Sub New(EML_LIMITATION As String, pLogConfig As LogConfig, ConStr As String, WMConStr As String, POLL_PROFILEID As Integer, FB_DATASOURCE As String, FB_DATABASE As String, FB_USER As String, FB_PW As String, USE_WM As Boolean, EmailAccountID As Integer, EmlProfPraefix As String, Optional plocaleml As String = "")
|
||||
Logger = pLogConfig.GetLogger
|
||||
_emailIMAP = New clsEmailIMAP(pLogConfig)
|
||||
_Database = New MSSQLServer(pLogConfig, ConStr)
|
||||
|
||||
_USE_WM = USE_WM
|
||||
Eml_Limitation_Sender = EML_LIMITATION
|
||||
If _USE_WM Then
|
||||
_windream = New clsWindream_allgemein(LogConf)
|
||||
_windream_index = New clsWindream_Index(LogConf)
|
||||
_windream = New clsWindream_allgemein(pLogConfig)
|
||||
_windream_index = New clsWindream_Index(pLogConfig)
|
||||
End If
|
||||
|
||||
_workmail = New clsWorkEmail(LogConf, ConStr, FB_DATASOURCE, FB_DATABASE, FB_USER, FB_PW, USE_WM, EmailAccountID, EmlProfPraefix)
|
||||
_wrapper = New clsEncryption("!35452didalog=", LogConf)
|
||||
_workmail = New clsWorkEmail(pLogConfig, ConStr, WMConStr, FB_DATASOURCE, FB_DATABASE, FB_USER, FB_PW, USE_WM, EmailAccountID, EmlProfPraefix)
|
||||
_wrapper = New clsEncryption("!35452didalog=", pLogConfig)
|
||||
_POLL_PROFILEID = POLL_PROFILEID
|
||||
ClassCurrent.CURRENT_DEBUG_LOCAL_EMAIL = plocaleml
|
||||
CURRENT_DEBUG_LOCAL_EMAIL = plocaleml
|
||||
End Sub
|
||||
|
||||
Public Sub Start_WorkingProfiles(Optional LocalEmail As Boolean = False)
|
||||
@ -53,7 +53,7 @@ Public Class clsWorker
|
||||
Next
|
||||
TEMP_FILES.Clear()
|
||||
|
||||
If _Database.Init(cs) = True Then
|
||||
If _Database.DBInitialized = True Then
|
||||
Logger.Debug("now windream_init... ")
|
||||
If _USE_WM Then
|
||||
If _windream.Init = False Then
|
||||
@ -69,8 +69,8 @@ Public Class clsWorker
|
||||
Else
|
||||
osql &= " WHERE GUID = " & _POLL_PROFILEID
|
||||
End If
|
||||
Dim DT_TBDD_EMAIL As DataTable = _Database.Return_Datatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
|
||||
Dim DT_PROFILES = _Database.Return_Datatable(osql)
|
||||
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)
|
||||
@ -78,14 +78,14 @@ Public Class clsWorker
|
||||
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.Return_Datatable(sql)
|
||||
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.Return_Datatable(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))
|
||||
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
|
||||
@ -175,7 +175,7 @@ Public Class clsWorker
|
||||
|
||||
If Not IsNothing(oEmail) Then
|
||||
If LIMIT_EMAIL_FROM Then
|
||||
Dim oEmailFrom As String
|
||||
Dim oEmailFrom As String = ""
|
||||
For Each m As MailBox In oEmail.From
|
||||
oEmailFrom = m.Address
|
||||
Next
|
||||
@ -185,7 +185,7 @@ Public Class clsWorker
|
||||
End If
|
||||
End If
|
||||
If _workmail.WorkEmailMessage(oEmail, oUID) = True Then
|
||||
If ClassCurrent.CURRENT_DEBUG_LOCAL_EMAIL = "" Then
|
||||
If CURRENT_DEBUG_LOCAL_EMAIL = "" Then
|
||||
EMAIL_DELETE()
|
||||
End If
|
||||
End If
|
||||
@ -216,7 +216,7 @@ Public Class clsWorker
|
||||
Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!")
|
||||
End If
|
||||
|
||||
_Database.Execute_non_Query("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & oDR_Profile.Item("GUID").ToString)
|
||||
_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
|
||||
@ -245,7 +245,7 @@ Public Class clsWorker
|
||||
End If
|
||||
End If
|
||||
|
||||
_Database.Execute_non_Query("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1")
|
||||
_Database.ExecuteNonQuery("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
|
||||
@ -1,15 +1,20 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.IO
|
||||
Imports DigitalData.EMLProfiler
|
||||
Imports DigitalData.EMLProfiler.ClassCurrent
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
Public Class MyService
|
||||
#Region "+++++ variables +++++"
|
||||
Private _threadRunner As BackgroundWorker
|
||||
Private MyLogger As LogConfig
|
||||
Private LogConfig As LogConfig
|
||||
Private Logger As Logger
|
||||
Private _database As clsDatabase
|
||||
'Private _database As clsDatabase
|
||||
Private _workmail As clsWorkEmail
|
||||
|
||||
Private _ConfigManager As ClassConfig
|
||||
Private _Config As ClassConfig.Config
|
||||
|
||||
Private Database As MSSQLServer
|
||||
#End Region
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
@ -19,22 +24,9 @@ Public Class MyService
|
||||
' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge
|
||||
' ausführen, damit der Dienst gestartet werden kann.
|
||||
Try
|
||||
MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"), Nothing, "Digital Data", "DD EmailProfiler")
|
||||
Logger = MyLogger.GetLogger
|
||||
|
||||
Try
|
||||
Dim directory As New IO.DirectoryInfo(MyLogger.LogDirectory)
|
||||
|
||||
For Each file As IO.FileInfo In directory.GetFiles
|
||||
If (Now - file.CreationTime).Days > 29 Then
|
||||
file.Delete()
|
||||
Else
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
Dim oLogPath = Path.Combine(My.Application.Info.DirectoryPath, "Log")
|
||||
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oLogPath, Nothing, "Digital Data", "DD EmailProfiler", 30)
|
||||
Logger = LogConfig.GetLogger
|
||||
|
||||
Logger.Info("## Service started ## ")
|
||||
|
||||
@ -43,23 +35,29 @@ Public Class MyService
|
||||
Else
|
||||
If My.Settings.DEBUG = True Then
|
||||
Logger.Info("DEBUG ACTIVATED")
|
||||
MyLogger.Debug = True
|
||||
LogConfig.Debug = True
|
||||
Else
|
||||
MyLogger.Debug = False
|
||||
LogConfig.Debug = False
|
||||
End If
|
||||
|
||||
_database = New clsDatabase(MyLogger, My.Settings.MyConnectionString)
|
||||
Database = New MSSQLServer(LogConfig, My.Settings.MyConnectionString)
|
||||
_ConfigManager = New ClassConfig(LogConfig, Database)
|
||||
_Config = _ConfigManager.GetConfig()
|
||||
|
||||
'_database = New clsDatabase(MyLogger, My.Settings.MyConnectionString)
|
||||
Logger.Debug("_database and _email initialized")
|
||||
_workmail = New clsWorkEmail(MyLogger, My.Settings.MyConnectionString, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW,
|
||||
_workmail = New clsWorkEmail(LogConfig, My.Settings.MyConnectionString, _Config.WindreamConnectionString, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW,
|
||||
My.Settings.USE_WM, My.Settings.EmailAccountID, My.Settings.EmailProfilerPraefix)
|
||||
Logger.Debug("_workmail initialized")
|
||||
If _database.Init(My.Settings.MyConnectionString) = False Then
|
||||
|
||||
If Database.DBInitialized = False Then
|
||||
Logger.Warn("ATTENTION: No Connection was established '" & My.Settings.MyConnectionString & "'!")
|
||||
Else
|
||||
'### Thread für das nachträgliche Setzen von Rechten generieren
|
||||
_threadRunner = New BackgroundWorker()
|
||||
_threadRunner.WorkerReportsProgress = True
|
||||
_threadRunner.WorkerSupportsCancellation = True
|
||||
_threadRunner = New BackgroundWorker With {
|
||||
.WorkerReportsProgress = True,
|
||||
.WorkerSupportsCancellation = True
|
||||
}
|
||||
AddHandler _threadRunner.DoWork, AddressOf RUN_THREAD
|
||||
AddHandler _threadRunner.RunWorkerCompleted, AddressOf Thread1_Completed
|
||||
'### Den Timer generieren
|
||||
@ -67,7 +65,7 @@ Public Class MyService
|
||||
'Das Event hinterlegen welches bei "Tick" ausgelöst wird
|
||||
AddHandler Timer_Durchlauf.Elapsed, AddressOf Thread_Run
|
||||
' Set the Interval
|
||||
Timer_Durchlauf.Interval = (TIMER_INTERVALL * 60000)
|
||||
Timer_Durchlauf.Interval = (_Config.TimerInterval * 60000)
|
||||
Timer_Durchlauf.Enabled = True
|
||||
Logger.Debug("...Timer started.")
|
||||
' Und den Durchlauf das erste Mal starten
|
||||
@ -86,7 +84,7 @@ Public Class MyService
|
||||
Public Sub RUN_THREAD(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
|
||||
Try
|
||||
Dim notcompleted As Boolean = False
|
||||
Dim _work As New clsWorker(My.Settings.EML_LIMITATION_SENDER, MyLogger, My.Settings.MyConnectionString, 0, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW, My.Settings.USE_WM, My.Settings.EmailAccountID, My.Settings.EmailProfilerPraefix)
|
||||
Dim _work As New clsWorker(My.Settings.EML_LIMITATION_SENDER, LogConfig, My.Settings.MyConnectionString, _Config.WindreamConnectionString, 0, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW, My.Settings.USE_WM, My.Settings.EmailAccountID, My.Settings.EmailProfilerPraefix)
|
||||
_work.Start_WorkingProfiles()
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
|
||||
@ -48,6 +48,12 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Base">
|
||||
<HintPath>..\..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database">
|
||||
<HintPath>..\wisag_check_Att\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Language">
|
||||
<HintPath>..\..\..\DDModules\Language\bin\Debug\DigitalData.Modules.Language.dll</HintPath>
|
||||
</Reference>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user