Files
ToolCollection/ToolCollection/frmStart.vb
2025-09-22 09:44:10 +02:00

551 lines
22 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.Reflection
Imports System.Globalization
Imports DigitalData.Modules.Logging
Imports System.IO
Imports DigitalData.Modules.Database
Public Class frmStart
Private _MyLogger As LogConfig
Private Shared _Logger As DigitalData.Modules.Logging.Logger
Public _validModules()
Public _company As String
' Dim timediff As Integer = 0
Private licenseManager As ClassLicenseManager = Nothing
'Private Sub timUhrzeit_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timUhrzeit.Tick
' ' der Statusuhr die aktuelle Systemzeit zuweisen
' Me.Status_Clock.Text = CType(My.Computer.Clock.LocalTime, String)
' timediff += 1000
' If timediff >= 86400000 Then
' 'LogDateien-löschen
' Delete_LogFiles()
' End If
'End Sub
' CREATE INSTANCE
Private Shared _Instance As frmStart = Nothing
Public Shared Function Instance() As frmStart
If _Instance Is Nothing OrElse _Instance.IsDisposed Then
_Instance = New frmStart()
End If
Return _Instance
End Function
' DELETE LOGS
Private Sub Delete_LogFiles()
Try
Dim directory As New DirectoryInfo(My.Application.Info.DirectoryPath & "\Log")
_Logger.Debug($"Dateipfad geholt: {directory}")
Dim oIntervall As Integer = 30
Integer.TryParse(frmGrundeinstellungen.TextBox4.Text, oIntervall)
_Logger.Debug($"Löschalter aus der Config geholt: {oIntervall}")
For Each file As FileInfo In directory.GetFiles
_Logger.Debug($"Durchlaufe alle Dateien: {file.FullName}")
Try
Dim oAgeOfFile As Integer = (Now - file.CreationTime).Days
_Logger.Debug($"Alter der aktuellen Datei: {oAgeOfFile}")
If oAgeOfFile >= oIntervall Then
file.Delete()
_Logger.Debug($"Lösche Datei, die älter ist als Löschalter: {file.FullName}")
End If
Catch ex As Exception
_Logger.Warn($"Could not delete file {file.Name}: {ex.Message}")
End Try
Next
Catch ex As Exception
_Logger.Error(ex.Message)
End Try
End Sub
Public Sub SetupTimerDeleteLogfiles()
Try
Dim now As DateTime = DateTime.Now
Dim startTime As DateTime
' Zeit aus den gespeicherten Settings lesen
Dim timeString As String = My.Settings.vDeleteLogsTime
If String.IsNullOrWhiteSpace(timeString) Then
timeString = "02:00"
End If
Dim dt As DateTime
If DateTime.TryParse(timeString, dt) Then
'If timeString Then
My.Settings.vDeleteLogsTime = timeString
My.Settings.Save()
startTime = New DateTime(now.Year, now.Month, now.Day, dt.Hour, dt.Minute, 0)
If now > startTime Then startTime = startTime.AddDays(1)
Else
_Logger.Warn($"Ungültiges Zeitformat '{timeString}', Standard 02:00 wird verwendet.")
startTime = New DateTime(now.Year, now.Month, now.Day, 2, 0, 0)
If now > startTime Then startTime = startTime.AddDays(1)
End If
Dim interval As TimeSpan = startTime - now
Dim intervalMs As Double = interval.TotalMilliseconds
' Sicherheitscheck
If intervalMs < 1000 Then
intervalMs = 1000
End If
If intervalMs > Integer.MaxValue Then
intervalMs = Integer.MaxValue
End If
TimerDeleteLogfiles.Interval = CInt(intervalMs)
If My.Settings.vAutoDeleteLogs Then
TimerDeleteLogfiles.Start()
_Logger.Info($"TimerDeleteLogfiles startet in {interval.TotalMinutes:F1} Minuten (Zielzeit: {startTime:HH:mm}).")
Else
TimerDeleteLogfiles.Stop()
_Logger.Info("Automatische Log-Löschung deaktiviert, Timer gestoppt.")
End If
Catch ex As Exception
_Logger.Error("Fehler in SetupTimerDeleteLogfiles: " & ex.Message)
End Try
End Sub
Private Sub TimerDeleteLogfiles_Tick(sender As Object, e As EventArgs) Handles TimerDeleteLogfiles.Tick
Try
Delete_Logfiles()
' Nächstes Intervall wieder 24h
TimerDeleteLogfiles.Interval = 24 * 60 * 60 * 1000
Catch ex As Exception
_Logger.Error("Fehler beim automatischen Löschen: " & ex.Message)
End Try
End Sub
Private Sub FMStart_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Dim result As MsgBoxResult = MsgBox("Sind Sie sicher, dass sie " & Application.ProductName & " wirklich schließen wollen?" & vbNewLine & "Alle Vorgänge/Module werden gestoppt und nicht mehr ausgeführt!", MsgBoxStyle.YesNo, "Bestätigung erforderlich:")
If result = MsgBoxResult.No Then
e.Cancel = True
End If
End Sub
Private Sub FMStart_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
_Instance = Me
For Each arg As String In My.Application.CommandLineArgs
Select Case arg.ToLower()
Case "/startfim"
AUTOSTART_FIM = True 'Dateiimport
Case "/startfih"
AUTOSTART_FIH = True 'Nachindexierung
End Select
Next
Try
'Delete_LogFiles()
_MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"), Nothing, My.Application.Info.CompanyName,
My.Application.Info.ProductName)
_Logger = _MyLogger.GetLogger()
_MyLogger.Debug = Not My.Settings.vLogErrorsonly
CURR_Logger = _Logger
CURR_LogConfig = _MyLogger
SetupTimerDeleteLogfiles()
'Aktueller Benutzer
Me.tslblVersion.Text = Environment.UserName.ToString
Me.Text = Application.CompanyName & "-" & Application.ProductName
Me.tslblVersion.Text = "Version: " & My.Application.Info.Version.ToString
'Aktuelle Machine
Me.Status_Machine.Text = My.Computer.Name
'Zeitpunkt der automatischen Löschung von Logs
If My.Settings.vAutoDeleteLogs Then
Me.ToolStripStatusLabel_LogDeleteTime.Text = "Logs werden automatisch gelöscht um: " & My.Settings.vDeleteLogsTime.ToShortTimeString & " Uhr."
Else
Me.ToolStripStatusLabel_LogDeleteTime.Text = "Automatisches Löschen von Logs ist inaktiv."
End If
' timUhrzeit.Start()
TimerErrorLog.Start()
If My.Settings.WM_PERS_LOGIN <> String.Empty Then
Dim oSPLIT As String()
oSPLIT = My.Settings.WM_PERS_LOGIN.Split("#")
If oSPLIT.Length > 0 Then
If oSPLIT(0) <> "@Domain" Then
WMLOGIN_DOMAIN = oSPLIT(0)
_Logger.Info($"WMLOGIN_DOMAIN: {WMLOGIN_DOMAIN}")
WMLOGIN_USER = oSPLIT(1)
_Logger.Info($"WMLOGIN_USER: {WMLOGIN_USER}")
WMLOGIN_PW = oSPLIT(2)
Else
_Logger.Info($"No dedicated WMUser(1)")
End If
End If
End If
If Not My.Settings.licensekey = "" Then
' Lizenz-Manager initialisieren
Me.licenseManager = New ClassLicenseManager("#DigitalData9731258!#", My.Settings.licensekey)
' alle vorhandenen Module laden
Me.LoadAllModules()
End If
Catch ex As Exception
_Logger.Error(ex)
End Try
Try
If My.Settings.DDECMConString <> String.Empty Then
Dim oSPLIT As String()
oSPLIT = My.Settings.DDECMConString.Split(";")
Dim oServer As String
Dim oDB As String
Dim oUSer As String
Dim oPW As String
For Each oSplitPart As String In oSPLIT
If oSplitPart.Contains("Data Source") Then
oServer = oSplitPart.Replace("Data Source=", "")
ElseIf oSplitPart.Contains("Initial Catalog") Then
oDB = oSplitPart.Replace("Initial Catalog=", "")
ElseIf oSplitPart.Contains("User ID") Then
oUSer = oSplitPart.Replace("User ID=", "")
ElseIf oSplitPart.Contains("Password") Then
oPW = oSplitPart.Replace("Password=", "")
End If
Next
DB_ECM = New MSSQLServer(_MyLogger, oServer, oDB, oUSer, oPW)
If DB_ECM.DBInitialized Then
_Logger.Info("DB ECM SUCCESSFULLY INITIIALIZED")
Else
_Logger.Warn("ATTENTION: DB DD_ECM NOT INITIIALIZED")
End If
End If
Catch ex As Exception
_Logger.Error(ex)
End Try
End Sub
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub DateiimporterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Open_DI_Main()
End Sub
Private Sub btnDIMain_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDIMain.Click
Open_DI_Main()
End Sub
Sub Open_DI_Main()
Cursor = Cursors.WaitCursor
Dim frm As New frmDIHauptseite
frm = frmDIHauptseite.Instance
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Sub Open_DI_Profile()
Cursor = Cursors.WaitCursor
Dim frm As New frmDIProfilEigenschaften
frm = frmDIProfilEigenschaften.Instance
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Private Sub btnDIProfile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDIProfile.Click
Open_DI_Profile()
End Sub
Private Sub btnRegelverwaltung_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRegelverwaltung.Click
Open_DI_Regelverwaltung()
End Sub
Sub Open_DI_Regelverwaltung()
Cursor = Cursors.WaitCursor
Dim frm As New frmDIRegelverwaltung
frm = frmDIRegelverwaltung.Instance
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Private Sub LizenzverwaltungToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LizenzverwaltungToolStripMenuItem.Click
' Öffnet den Lizenz-Manager
frmLizenzmanager.ShowDialog()
End Sub
Public Sub ClearGroupBoxes()
Me.grbDI.Visible = False
Me.GBNachindexierung.Visible = False
Me.GroupBoxIntegration.Visible = False
Me.grbxMoRe.Visible = False
LICENSE_MoveRename = False
LICENSE_AD = False
End Sub
Public Sub LoadAllModules()
Me._validModules = Nothing
If Not My.Settings.licensekey = "" Then
If My.Settings.licensekey = "DD MaxLicense" Or My.Settings.licensekey.ToUpper = "DDALLIN" Or My.Settings.licensekey.ToUpper = "DD_ALL_IN" Or My.Settings.licensekey.ToUpper = "DD_ALLIN" Then
Me.grbDI.Visible = True
Me.GBNachindexierung.Visible = True
Me.GroupBoxIntegration.Visible = True
btnNachbearbeitungAD.Visible = True
LICENSE_AD = True
LICENSE_MoveRename = True
Else
'Me.licenseManager = New ClassLicenseManager = Nothing
Me.licenseManager = New ClassLicenseManager("#DigitalData9731258!#", My.Settings.licensekey)
Me.licenseManager.licenseString = Me.licenseManager.DecodeLicenseKey(My.Settings.licensekey)
Me.licenseManager.licenseStringArray = Me.licenseManager.SplitLicenseString(Me.licenseManager.licenseString)
Me.licenseManager.LoadLicenses()
If Me.licenseManager.Licenses.machine.ToLower <> "all" Then
If Me.licenseManager.Licenses.machine.ToLower <> My.Computer.Name.ToLower Then
MsgBox("Ihre Lizenz gilt nicht für diese Maschine. " & vbNewLine & "Gelesener Computer Name: '" & My.Computer.Name & "'" & vbNewLine & "License Computer Name: '" & Me.licenseManager.Licenses.machine & "'" & vbNewLine &
"Bitte setzen Sie sich mit Digital Data in Verbindung.", MsgBoxStyle.Exclamation, "Lizenz ungültig:")
Me.grbDI.Visible = False
Me.GBNachindexierung.Visible = False
Me.GroupBoxIntegration.Visible = False
Exit Sub
End If
End If
Dim i As Integer = 0
If Me.licenseManager.Licenses.Licenses IsNot Nothing Then
For Each license As ClassLicense In Me.licenseManager.Licenses.Licenses()
Dim expires As String = license.Expires.Date
If IsExpired(license.Expires.Date) = False Then
' MsgBox(license.Modulename & vbNewLine & expires)
Select Case license.Modulename
Case "Dateiimport"
Me.grbDI.Visible = True
Case "Nachindexierung"
Me.GBNachindexierung.Visible = True
Case "MerkatorIntegration"
Me.GroupBoxIntegration.Visible = True
Case "MoveandRename"
'Me.grbxMoRe.Visible = True
LICENSE_MoveRename = True
Case "NachbearbeitungAD"
btnNachbearbeitungAD.Visible = True
LICENSE_AD = True
End Select
i += 1
Else
MsgBox("Ihre Lizenz für das Modul '" & license.Modulename & "' ist am ' " & license.Expires.Date.ToShortDateString & "' abgelaufen" & vbNewLine & "Bitte setzen Sie sich mit Digital Data in Verbindung.", MsgBoxStyle.Exclamation, "Lizenz abgelaufen:")
Select Case license.Modulename
Case "Dateiimport"
Me.grbDI.Visible = False
Case "Nachindexierung"
Me.GBNachindexierung.Visible = False
Case "MerkatorIntegration"
Me.GroupBoxIntegration.Visible = False
Case "MoveandRename"
Me.GroupBoxIntegration.Visible = False
LICENSE_MoveRename = False
Case "NachbearbeitungAD"
btnNachbearbeitungAD.Visible = False
LICENSE_AD = False
End Select
i += 1
End If
'Date.TryParse(expires, license.Expires)
Next
End If
End If
End If
End Sub
Private Function IsExpired(ByVal _Date As Date)
If Date.Today > _Date Then
Return True
Else
Return False
End If
End Function
Private Sub FMStart_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
TimerNIRestart.Start()
'If My.Settings.DI_RUNNING Or AUTOSTART_FIM Then
If AUTOSTART_FIM Then
Open_DI_Main()
End If
'If NIDurchlaufRunning Or AUTOSTART_FIH Then
If AUTOSTART_FIH Then
Open_NI_Main()
End If
End Sub
Private Sub btnNIProfile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNIProfile.Click
Open_NI_Profile()
End Sub
Sub Open_NI_Profile()
Cursor = Cursors.WaitCursor
Dim frm As New frmNIProfileigenschaften
frm = frmNIProfileigenschaften.Instance
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Sub Open_NI_Main()
Cursor = Cursors.WaitCursor
Dim frm As New frmNIHauptseite
frm = frmNIHauptseite.Instance
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Private Sub btnNIMain_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNIMain.Click
Open_NI_Main()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Cursor = Cursors.WaitCursor
Dim frm As New frmNIVerknuepfungen
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Private Sub ÜberToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÜberToolStripMenuItem.Click
frmabout.ShowDialog()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'WMOLICLib.WMLicenser()
End Sub
Private Sub PasswortverwaltungToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PasswortverwaltungToolStripMenuItem.Click
frmPWChange.ShowDialog()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Cursor = Cursors.WaitCursor
Dim frm As New frmMIProfileigenschaften
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Private Sub ModuleToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ModuleToolStripMenuItem.Click
End Sub
Sub Open_MoRe_Profile()
Cursor = Cursors.WaitCursor
Dim frm As New frmMORE_Verwaltung
frm = frmMORE_Verwaltung
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Private Sub btnOpen_MoReProfile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen_MoReProfile.Click
Open_MoRe_Profile()
End Sub
Private Sub EinblendenAusblendenToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles EinblendenAusblendenToolStripMenuItem.Click
Ein_Aus()
End Sub
Sub Ein_Aus()
Me.ShowInTaskbar = True
Me.niToolcollection.Visible = False
Me.WindowState = FormWindowState.Normal
End Sub
Private Sub ContextMenuStrip1_Opening(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuStrip1.Opening
If Me.Visible = True Then
EinblendenAusblendenToolStripMenuItem.Text = "Tool Collection minimieren"
Else
EinblendenAusblendenToolStripMenuItem.Text = "Tool Collection maximieren/einblenden"
End If
End Sub
Private Sub ZeigeLogFileToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ZeigeLogFileToolStripMenuItem.Click
Cursor = Cursors.WaitCursor
Dim frm As New frmreadLog
frm = frmreadLog.Instance
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Private Sub GrundeinstellungenToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles GrundeinstellungenToolStripMenuItem.Click
Cursor = Cursors.WaitCursor
Dim frm As New frmGrundeinstellungen
frm = frmGrundeinstellungen.Instance
frm.ShowDialog()
Cursor = Cursors.Default
End Sub
Private Sub ÜbersichtToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ÜbersichtToolStripMenuItem.Click
Cursor = Cursors.WaitCursor
Dim frm As New frmUebersicht
frm = frmUebersicht.Instance
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Public Sub New()
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btnNachbearbeitungAD.Click
Cursor = Cursors.WaitCursor
Dim frm As New frmNB_AD
frm = frmNB_AD.Instance
frm.MdiParent = Me
frm.Show()
Cursor = Cursors.Default
End Sub
Private Sub frmStart_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
If Me.WindowState = FormWindowState.Minimized Then
Me.ShowInTaskbar = False
Me.WindowState = FormWindowState.Minimized
Me.niToolcollection.Visible = True
End If
End Sub
Private Sub niToolcollection_Click(sender As Object, e As EventArgs) Handles niToolcollection.Click
Ein_Aus()
End Sub
Private Sub ÖffneLogverzeichnisToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ÖffneLogverzeichnisToolStripMenuItem.Click
Process.Start(Application.StartupPath & "\Log")
End Sub
Private Sub TimerNIRestart_Tick(sender As Object, e As EventArgs) Handles TimerNIRestart.Tick
If NI_Restart = True Then
NI_Restart = False
Open_NI_Main()
End If
End Sub
Private Sub TimerErrorLog_Tick(sender As Object, e As EventArgs) Handles TimerErrorLog.Tick
If CURRENT_APPLICATION_LOG <> String.Empty Then
Dim frm As New frmApplicationLog
frm = frmApplicationLog.Instance
frm.Show()
End If
End Sub
End Class