291 lines
15 KiB
VB.net
291 lines
15 KiB
VB.net
Imports System.ComponentModel
|
|
Imports DLLLicenseManager
|
|
|
|
Public Class ClassInit
|
|
Public _lizenzManager As ClassLicenseManager
|
|
Public Sub New()
|
|
End Sub
|
|
|
|
Public Sub InitLogger()
|
|
ClassLogger.Init("", Environment.UserName)
|
|
ClassLogger.Add(">> Programmstart: " & Now, False)
|
|
ClassLogger.Add(">> Username: " & Environment.UserName, False)
|
|
'Throw New Exception("Dummy Fehler!")
|
|
End Sub
|
|
|
|
Public Function InitDatabase()
|
|
Dim dbResult As Boolean
|
|
LoadMyConfig()
|
|
If LoadFileExclusion() = False Then
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
MsgBox("Die Ausschlusskriterien für Dateien in Folderwatch konnten nicht angelegt werden!", MsgBoxStyle.Information)
|
|
Else
|
|
MsgBox("File-Exclusions in Folderwatch could not be created!", MsgBoxStyle.Information)
|
|
End If
|
|
|
|
End If
|
|
|
|
If MyConnectionString <> String.Empty Then
|
|
dbResult = ClassDatabase.Init()
|
|
Else
|
|
MsgBox("No Databaseconnection configured. (First Start or Appdata not accessible)" & vbNewLine & "Basic-Config will be loaded.", MsgBoxStyle.Information)
|
|
ERROR_STATE = "NO DB-CONNECTION"
|
|
frmConfig_Basic.ShowDialog()
|
|
dbResult = ClassDatabase.Init()
|
|
End If
|
|
|
|
If dbResult = False Then
|
|
ERROR_STATE = "FAILED DBCONNECTION"
|
|
' Fehler wird in frmSplash abgehandelt
|
|
'MsgBox("Error in init database. (Connection failed) More information in the logfile.", MsgBoxStyle.Critical)
|
|
Return False
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
<STAThread()> _
|
|
Public Sub InitBasics()
|
|
Dim configResult As Boolean
|
|
configResult = Load_BasicConfig()
|
|
|
|
If configResult = False Then
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
Throw New Exception("Unerwarteter Fehler beim Initialisieren der Basis-Einstellungen. Weitere Informationen finden Sie in der Logdatei.")
|
|
Else
|
|
Throw New Exception("Unexpected error while initializing basic-settings. More info in the log.")
|
|
End If
|
|
End If
|
|
End Sub
|
|
Public Sub Init_Folderwatch()
|
|
Try
|
|
Dim sql As String = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'DEFAULT' AND USER_ID = " & CURRENT_USER_ID
|
|
Dim folderwatchPath = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True)
|
|
|
|
folderwatchPath = IIf(IsDBNull(folderwatchPath), "", folderwatchPath)
|
|
|
|
If folderwatchPath = String.Empty Then
|
|
ClassLogger.Add("Init_Folderwatch: folderwatchPath is empty", True)
|
|
FW_started = False
|
|
SaveConfigValue("FW_started", "False")
|
|
Exit Sub
|
|
End If
|
|
|
|
If Not IO.Directory.Exists(folderwatchPath) Then
|
|
ClassLogger.Add("Init_Folderwatch: folderwatchPath does not exists or is invalid path", True)
|
|
FW_started = False
|
|
SaveConfigValue("FW_started", "False")
|
|
Exit Sub
|
|
End If
|
|
|
|
CURRENT_FOLDERWATCH = folderwatchPath
|
|
|
|
FW_started = True
|
|
FW_ISSTARTED = True
|
|
ClassFolderWatcher.StartStop_FolderWatch()
|
|
Catch ex As Exception
|
|
MsgBox($"Init_Folderwatch: Unexpected error while starting FolderWatch: {ex.Message}", MsgBoxStyle.Critical)
|
|
ClassLogger.Add($"Init_Folderwatch: Unexpected error: {ex.Message}", True)
|
|
START_INCOMPLETE = True
|
|
End Try
|
|
|
|
Try
|
|
Dim sql As String = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & CURRENT_USER_ID
|
|
Dim folderwatchScanPath = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True)
|
|
|
|
folderwatchScanPath = IIf(IsDBNull(folderwatchScanPath), "", folderwatchScanPath)
|
|
|
|
If folderwatchScanPath = String.Empty Then
|
|
ClassLogger.Add("Init_Folderwatch: folderwatchScanPath is empty", True)
|
|
FWSCAN_started = False
|
|
SaveConfigValue("FW_started", "False")
|
|
Exit Sub
|
|
End If
|
|
|
|
If Not IO.Directory.Exists(folderwatchScanPath) Then
|
|
ClassLogger.Add("Init_Folderwatch: folderwatchScanPath does not exists or is invalid path", True)
|
|
FWSCAN_started = False
|
|
SaveConfigValue("FW_started", "False")
|
|
Exit Sub
|
|
End If
|
|
|
|
CURRENT_SCAN_FOLDERWATCH = folderwatchScanPath
|
|
|
|
FWSCAN_started = True
|
|
FW_ISSTARTED = True
|
|
ClassFolderWatcher.StartStop_FolderWatchSCAN()
|
|
Catch ex As Exception
|
|
MsgBox($"Init_Folderwatch: Unexpected error while starting FolderWatchScan: {ex.Message}", MsgBoxStyle.Critical)
|
|
ClassLogger.Add($"Init_Folderwatch: Unexpected error: {ex.Message}", True)
|
|
START_INCOMPLETE = True
|
|
End Try
|
|
|
|
|
|
|
|
'Try
|
|
' 'Die FolderWatch starten
|
|
'Dim sql1 = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'DEFAULT' AND USER_ID = " & CURRENT_USER_ID
|
|
' Dim folderwatch = ClassDatabase.Execute_Scalar(sql1, MyConnectionString, True)
|
|
' sql1 = "SELECT FOLDER_PATH FROM TBGI_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & CURRENT_USER_ID
|
|
' Dim folderwatch_SCAN = ClassDatabase.Execute_Scalar(sql1, MyConnectionString, True)
|
|
' If Not folderwatch Is Nothing Then
|
|
' CURRENT_FOLDERWATCH = folderwatch
|
|
' If FW_started = True Then
|
|
' If CURRENT_FOLDERWATCH = "" Then
|
|
' FW_started = False
|
|
' SaveConfigValue("FW_started", "False")
|
|
' Else
|
|
' FW_ISSTARTED = True
|
|
' ClassFolderWatcher.StartStop_FolderWatch()
|
|
' End If
|
|
|
|
' End If
|
|
' Else
|
|
' ClassLogger.Add("Init_Folderwatch: folderwatch path is nothing!", True)
|
|
' End If
|
|
' If Not folderwatch_SCAN Is Nothing Then
|
|
' CURRENT_SCAN_FOLDERWATCH = folderwatch_SCAN
|
|
' If FWSCAN_started = True Then
|
|
' FW_ISSTARTED = True
|
|
' ClassFolderWatcher.StartStop_FolderWatchSCAN()
|
|
' End If
|
|
' Else
|
|
' ClassLogger.Add("Init_Folderwatch: folderwatch_SCAN path is nothing!", True)
|
|
' End If
|
|
'Catch ex As Exception
|
|
' ClassLogger.Add("Unexpected Error in Init_Folderwatch: " & ex.Message, True)
|
|
' START_INCOMPLETE = True
|
|
'End Try
|
|
End Sub
|
|
Public Sub InitUserLogin()
|
|
Try
|
|
Dim sql = "SELECT MAX(GUID) FROM TBDD_USER WHERE (LOWER(USERNAME) = LOWER('@user'))"
|
|
sql = sql.Replace("@user", Environment.UserName)
|
|
ClassLogger.Add(">> Username: " & Environment.UserName, False)
|
|
|
|
CURRENT_USER_ID = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True)
|
|
Try
|
|
Dim USERID = CInt(CURRENT_USER_ID)
|
|
Catch ex As Exception
|
|
ClassLogger.Add("User '" & Environment.UserName & "' not configured in Useradministration! (DBNull)", True)
|
|
'MsgBox("Achtung: Sie sind nicht in der Userverwaltung hinterlegt." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
|
|
'Me.Close()
|
|
START_INCOMPLETE = True
|
|
Throw New Exception("You are not configured in the Useradministration." & vbNewLine & "Please contact the system administrator!")
|
|
Exit Sub
|
|
End Try
|
|
|
|
sql = "SELECT SHORTNAME FROM TBDD_USER WHERE GUID = " & CURRENT_USER_ID
|
|
CURRENT_USER_SHORT = ClassDatabase.Execute_Scalar(sql, MyConnectionString)
|
|
If IsNothing(CURRENT_USER_SHORT) Or IsDBNull(CURRENT_USER_SHORT) Then
|
|
CURRENT_USER_SHORT = ""
|
|
End If
|
|
Check_User_Exists_in_GIGroups()
|
|
|
|
If USER_IN_MODULE = False Then
|
|
ClassLogger.Add(" - User: " & Environment.UserName & " nicht für Modul freigegben!", False)
|
|
START_INCOMPLETE = True
|
|
'MsgBox("Achtung: Sie sind nicht für die Nutzung dieses Moduls freigeschaltet." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
|
|
Throw New Exception("Your user is not allowed to use this module." & vbNewLine & "Please contact the system administrator!")
|
|
'Me.Close()
|
|
Else
|
|
'Am System anmelden
|
|
ClassLicence.Refresh_Licence()
|
|
|
|
|
|
|
|
Dim sql1 = "SELECT COUNT(T.GUID) FROM TBDD_DOKUMENTART T, TBDD_DOKUMENTART_MODULE T1 WHERE T.AKTIV = 1 AND T.GUID = T1.DOKART_ID AND T1.MODULE_ID = 1"
|
|
DOCTYPE_COUNT_ACTUAL = ClassDatabase.Execute_Scalar(sql1, MyConnectionString, True)
|
|
If DOCTYPE_COUNT_ACTUAL > LICENSE_DOCTYPE_COUNT Then
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
MsgBox("Ihre Anzahl von konfigurierbaren Dokumentarten ist limitiert auf: '" & LICENSE_DOCTYPE_COUNT.ToString & "'." & vbNewLine & "Bitte kontaktieren Sie Digital Data für weitere Details.", MsgBoxStyle.Information)
|
|
Else
|
|
MsgBox("Your amount of configurable documenttypes is limited to " & LICENSE_DOCTYPE_COUNT.ToString & " doctypes. You can not add more doctypes!" & vbNewLine & "Please contact Digital Data for further licensedetails", MsgBoxStyle.Information)
|
|
End If
|
|
End If
|
|
Try
|
|
USER_LANGUAGE = ClassDatabase.Execute_Scalar("SELECT LANGUAGE FROM TBDD_USER WHERE GUID = " & CURRENT_USER_ID, MyConnectionString, True)
|
|
Catch ex As Exception
|
|
ClassLogger.Add("LANGUAGE COULD NOT BE READ - " & ex.Message, True)
|
|
USER_LANGUAGE = "de-DE"
|
|
End Try
|
|
|
|
|
|
sql = "UPDATE TBDD_USER SET LOGGED_IN = @LogInOut, LOGGED_WHERE = '@ANGEMELDETWO' WHERE (LOWER(USERNAME) = LOWER('@user'))"
|
|
sql = sql.Replace("@LogInOut", 1)
|
|
sql = sql.Replace("@ANGEMELDETWO", Environment.MachineName)
|
|
sql = sql.Replace("@user", Environment.UserName)
|
|
ClassDatabase.Execute_non_Query(sql)
|
|
sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & CURRENT_USER_ID & " AND UPPER(MODULE) = UPPER('Global-Indexer')"
|
|
ClassDatabase.Execute_non_Query(sql, True)
|
|
|
|
sql = $"INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID, MODULE, CLIENT_ID, CONNECTION_STRING) VALUES ({CURRENT_USER_ID}, '{"Global-Indexer"}', 1, '')"
|
|
'sql = "INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,MODULE) VALUES (" & CURRENT_USER_ID & ",'Global-Indexer')"
|
|
ClassDatabase.Execute_non_Query(sql)
|
|
|
|
sql = "SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE Upper(MODULE) = UPPER('Global-Indexer')"
|
|
Dim anzahl = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Anzahl Angemeldete User: " & anzahl.ToString, False)
|
|
UserLoggedin = CInt(anzahl)
|
|
If LICENSE_COUNT < UserLoggedin And LICENSE_EXPIRED = False Then
|
|
MsgBox("Die Anzahl der aktuell angemeldeten User (" & UserLoggedin.ToString & ") überschreitet die Anzahl der aktuellen Lizenzen!" & vbNewLine & "Anzahl der Lizenzen: " & LICENSE_COUNT.ToString & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
|
|
ClassLogger.Add(" >> Die Anzahl der aktuell angemeldeten User (" & UserLoggedin.ToString & ") überschreitet die Anzahl der Lizenzen (" & LICENSE_COUNT & ") für Global Indexer!", False)
|
|
If CURRENT_USER_IS_ADMIN = False Then
|
|
'Anmeldung wieder herausnehmen
|
|
sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & CURRENT_USER_IS_ADMIN & " AND MODULE= 'Global-Indexer'"
|
|
ClassDatabase.Execute_non_Query(sql, True)
|
|
ClassLogger.Add(" - Wieder abgemeldet", False)
|
|
START_INCOMPLETE = True
|
|
End If
|
|
End If
|
|
'Alles OK bis hierhin...nun die FolderwatchKonfig laden
|
|
Init_Folderwatch()
|
|
'LabelLoggedIn.Caption = "Anzahl Angemeldete User: " & anzahl.ToString
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in InitUserLogin: " & ex.Message, True)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical)
|
|
START_INCOMPLETE = True
|
|
End Try
|
|
|
|
End Sub
|
|
Private Function Check_User_Exists_in_GIGroups()
|
|
Try
|
|
Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'GLOBIX_USER'", CURRENT_USER_ID)
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(sel)
|
|
If Not IsNothing(DT) Then
|
|
If DT.Rows.Count = 1 Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> User is in PM_USER-Group....", False)
|
|
USER_IN_MODULE = True
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> User is NOT in PM_USER-Group...." & sel, False)
|
|
sel = String.Format("select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = {0} AND T.MODULE_ID = 2", CURRENT_USER_ID)
|
|
DT = ClassDatabase.Return_Datatable(sel)
|
|
If Not IsNothing(DT) Then
|
|
If DT.Rows.Count = 1 Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Singe User-relation defined for user....", False)
|
|
USER_IN_MODULE = True
|
|
CURRENT_USER_IS_ADMIN = DT.Rows(0).Item("IS_ADMIN")
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'GLOBIX_ADMINS'", CURRENT_USER_ID)
|
|
DT = ClassDatabase.Return_Datatable(sel)
|
|
|
|
If Not IsNothing(DT) Then
|
|
If DT.Rows.Count = 1 Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> User is in PM_ADMINS-Group....", False)
|
|
CURRENT_USER_IS_ADMIN = True
|
|
USER_IN_MODULE = True
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> User is NOT in PM_ADMINS-Group...." & sel, False)
|
|
End If
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Check_User_Exists_in_PMGroups:")
|
|
End Try
|
|
End Function
|
|
End Class
|