Big update: MessageID replaced with Hash of MessageID

This commit is contained in:
Jonathan Jenne 2023-07-03 16:35:24 +02:00
parent 2b21650c53
commit aa5a268e14
14 changed files with 523 additions and 538 deletions

View File

@ -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>

View File

@ -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

View 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

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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>