Imports System.IO
Imports DigitalData.Modules.Logging
Public Class frmNB_AD
' entspricht dem, über die Toolbar-Combobox ausgewählten, Profil und enthält alle relevanten Informationen darüber
Private _selectedProfile As ClassNIProfil
Private Shared _Instance As frmNB_AD = Nothing
Public Shared _profilname As String
Public Shared _profilID As Integer
Public Shared _Objekttyp As String
Dim _windreamRechte As ClassWD_Rechte
Dim FormClose = False
Private Shared _Logger As DigitalData.Modules.Logging.Logger
Private Shared _MyLogger As LogConfig
Private _SQLLite As ClassSQLITE
Public Shared Function Instance() As frmNB_AD
If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then
_Instance = New frmNB_AD
End If
_Instance.BringToFront()
Return _Instance
End Function
Private Sub frmNB_AD_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
End Sub
Sub saveData()
'Me.TBNI_NACHBEARBEITUNG_ADBindingSource.EndEdit()
Dim filePath As String = Application.StartupPath & "\Nachbearbeitung.xml"
DSNachbearbeitung.WriteXml(filePath)
End Sub
Private Sub frmNB_AD_Load(sender As Object, e As EventArgs) Handles Me.Load
_MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
_Logger = _MyLogger.GetLogger()
_MyLogger.Debug = Not (My.Settings.vLogErrorsonly)
_SQLLite = New ClassSQLITE(_MyLogger)
_windreamRechte = New ClassWD_Rechte(_MyLogger, _SQLLite)
_windreamRechte.Init()
' alle Profile in die Toolbar-Combobox eintragen
Me.LoadProfilesInCombobox()
If Load_Data() = False Then
FormClose = True
End If
End Sub
Private Function Load_Data()
Try
If IO.File.Exists(Application.StartupPath & "\ToolCollection.sqlite") Then
My.Settings.SQLLITE_CONNECTION = Application.StartupPath & "\ToolCollection.sqlite"
My.Settings.Save()
If _SQLLite.DBInit(True) = False Then
MsgBox("es konnte keine Verbindung zur Datenbank hergestellt werden!" & vbNewLine & "Bitte vergewissern Sie sich das die DB zugreifbar ist!", MsgBoxStyle.Critical)
Me.Close()
End If
End If
'If IO.File.Exists(Application.StartupPath & "\Nachbearbeitung.xml") Then
' DSNachbearbeitung.Tables("TBNI_NACHBEARBEITUNG_AD").ReadXml(Application.StartupPath & "\Nachbearbeitung.xml")
'End If
Return True
Catch ex As Exception
MsgBox("Fehler bei Laden der Nachbearbeitungsregeln:" & vbNewLine & ex.Message & vbNewLine & vbNewLine & "Das Formular wird geschlossen!", MsgBoxStyle.Critical)
Return False
End Try
End Function
'''
''' Schreibt die Profile in die Combobox in der Toolbar.
'''
'''
Private Sub LoadProfilesInCombobox()
Try
Dim anz As Integer = 0
ClassNIProfile.Init()
Me.cmbProfilauswahl.DropDownItems.Clear()
If ClassNIProfile.Profile IsNot Nothing Then
For Each item As ClassNIProfil In ClassNIProfile.Profile
Me.cmbProfilauswahl.DropDownItems.Add(item.Profilname)
anz += 1
Next
' Me.tslblAnzahl.Text = "Anzahl Profile: " & anz
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der Profile in die Auswahlliste")
End Try
End Sub
Private Sub cmbProfilauswahl_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles cmbProfilauswahl.DropDownItemClicked
' wenn bereits ein Profil ausgewählt wurde
If Me._selectedProfile IsNot Nothing Then
' wenn es sich bei dem ausgewählten Elementum das gleiche handelt wie das Aktive, dann nichts tun
If e.ClickedItem.Text = Me._selectedProfile.Profilname Then
Exit Sub
End If
End If
Lade_Profil(e.ClickedItem.Text)
End Sub
Sub Lade_Profil(ByVal name As String)
' das ausgewählte Profil in _selectedProfile laden
Me._selectedProfile = ClassNIProfile.getProfilByName(name)
' wenn das selektierte Profil gefunden wurde
If Me._selectedProfile IsNot Nothing Then
Me.lblProfil.Text = "Gewähltes Profil: '" & Me._selectedProfile.Profilname & "'"
_profilname = _selectedProfile.Profilname
_Objekttyp = _selectedProfile.DokumenttypString
' Das Profil auf gespeichert setzen, da ja keine Änderungen am Profil selbst gemacht wurden. Das Profil
' hat jedoch zu diesem Zeitpunkt den Status HasChanges(), da der Inhalt der Steuerelemente verändert wurde.
Me._selectedProfile.setSaved()
Dim DT As DataTable = _SQLLite.Return_Datatable("select * from TBNI_NACHBEARBEITUNG_AD WHERE NI_PROFILNAME = '" & _profilname & "'", True)
If DT Is Nothing = False Then
gbxProfil.Visible = True
If DT.Rows.Count = 0 Then
'Alle Profil- und Regelcontrols ausblenden
btnAssistent.Visible = False
btnAddSaveProfil.Text = "Nachbearbeitungsprofil Active Directory anlegen"
btnAddSaveProfil.Image = My.Resources.add
Me.lblBeschreibung.Visible = False
Me.btnAssistent.Visible = False
Me.btndeleteRegel.Visible = False
Me.DataGridView.Visible = False
grbxTest.Visible = False
'Profilcontrols leeren
chkbx_ProfilAktiv.Enabled = False
txtID.Text = ""
chkbx_Loeschen.Checked = False
chkbx_ProfilAktiv.Checked = False
txtDomäne.Text = ""
txtUser.Text = ""
txtPW.Text = ""
txtServername.Text = ""
txtErstelltwer.Text = ""
txtErstelltwann.Text = ""
txtgeaendertwer.Text = ""
txtgeaendertwann.Text = ""
Else
'Daten laden
btnAssistent.Visible = True
btnAddSaveProfil.Text = "Nachbearbeitungsprofil Active Directory speichern"
btnAddSaveProfil.Image = My.Resources.save
Me.lblBeschreibung.Visible = True
Me.btnAssistent.Visible = True
chkbx_ProfilAktiv.Enabled = True
For Each row As DataRow In DT.Rows
txtID.Text = row.Item("GUID")
_profilID = row.Item("GUID")
chkbx_Loeschen.Checked = CBool(row.Item("DEL_ALL_RIGHTS"))
chkbx_ProfilAktiv.Checked = CBool(row.Item("Aktiv"))
txtDomäne.Text = row.Item("Domain")
txtUser.Text = row.Item("Username")
txtPW.Text = row.Item("Password")
txtServername.Text = row.Item("Servername")
txtErstelltwer.Text = row.Item("ERSTELLTWER")
txtErstelltwann.Text = row.Item("ERSTELLTWANN")
txtgeaendertwer.Text = row.Item("GEAENDERTWER").ToString
txtgeaendertwann.Text = row.Item("GEAENDERTWANN").ToString
Load_Regeln()
Next
End If
End If
Me.TBNI_NACHBEARBEITUNG_ADBindingSource.Filter = "Profilname = '" & Me._selectedProfile.Profilname & "'"
Else
'Me._selectedProfile.Dokumenttyp
End If
End Sub
Private Sub btnAssistent_Click(sender As Object, e As EventArgs) Handles btnAssistent.Click
If Me._selectedProfile IsNot Nothing Then
frmNB_AD_add.ShowDialog()
Load_Regeln()
End If
End Sub
Sub Load_Regeln()
Try
Dim DT As DataTable = _SQLLite.Return_Datatable("select GUID as ID,METHODE as Methode,Rechtename as Rechtename, " &
"CASE ACCESS_RIGHT WHEN 1 THEN 'READ' WHEN 2 THEN 'READ WRITE' WHEN 9 THEN 'READ/INDEX CHANGE' ELSE 'ADMIN' END Recht, ErstelltWer as [Erstellt wer] from TBNI_NB_STEP_AD WHERE PROFIL_ID = " & _profilID, True)
If DT.Rows.Count > 0 Then
btndeleteRegel.Visible = True
DataGridView.Visible = True
DataGridView.DataSource = DT
DataGridView.AutoResizeColumns()
grbxTest.Visible = True
'Überprüfen ob das Rechtemodul auf created Folder angewendet werden soll
Dim crFolder As Boolean = False
For Each Row As DataRow In DT.Rows
If Row.Item(1).ToString = "AddRightCreatedFolder" Then
If crFolder = False Then crFolder = True
End If
Next
If crFolder = True Then
Me.lbltestfolder.Visible = True
Me.txtTestfolder.Visible = True
Else
Me.lbltestfolder.Visible = False
Me.txtTestfolder.Visible = False
End If
Else
DataGridView.Visible = False
btndeleteRegel.Visible = False
grbxTest.Visible = False
End If
If DT.Rows.Count = 1 And chkbx_Loeschen.Checked Then
For Each row As DataRow In DT.Rows
If row.Item(3).ToString <> "ADMIN" Then
MsgBox("ACHTUNG:" & vbNewLine & "Diese Regel wird nicht funktionieren, da der erste Rechteträger - bei Löschen aller bestehenden Regeln - " &
"immer ein Rechteträger mit administrativen Rechten sein muss!", MsgBoxStyle.Critical)
End If
Next
End If
' Dim DataView1 As DataView = New DataView(DSNachbearbeitung.Tables("TBNI_NACHBEARBEITUNG_AD"))
' DataView1.RowFilter = "Profilname = '" & Me._selectedProfile.Profilname & "'"
' ListBox1.Items.Clear()
' For Each rowView As DataRowView In DataView1
' ListBox1.Items.Add(rowView(0) & " - " & rowView("Rechtename"))
' 'MsgBox(rowView(0))
' Next
Catch ex As Exception
MsgBox("Fehler beim Laden der Nachbearbeitungen zu Profil:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub btndelete_Click(sender As Object, e As EventArgs) Handles btndeleteProfil.Click
Dim result As MsgBoxResult = MsgBox("Wollen Sie das gewählte Profil und die dazu gehörigen Regeln wirklich löschen?", MsgBoxStyle.YesNo, "Bestätigung erforderlich:")
If result = MsgBoxResult.Yes Then
If _SQLLite.Execute_Command("Delete from TBNI_NB_STEP_AD WHERE PROFIL_ID = " & txtID.Text, True) = True Then
If _SQLLite.Execute_Command("Delete from TBNI_NACHBEARBEITUNG_AD WHERE GUID = " & txtID.Text, True) Then
Lade_Profil(_selectedProfile.Profilname)
End If
End If
End If
End Sub
' If TBNI_NACHBEARBEITUNG_ADDataGridView.SelectedRows.Count > 0 Then
'If TBNI_NACHBEARBEITUNG_ADDataGridView.SelectedRows.Count > 0 Then
'Dim i As Integer
' i = TBNI_NACHBEARBEITUNG_ADDataGridView.CurrentRow.Index
' If TBNI_NACHBEARBEITUNG_ADDataGridView.Item(0, i).Value Is Nothing = False Then
''MsgBox(TBNI_NACHBEARBEITUNG_ADDataGridView.Item(0, i).Value)
' For Each row As DataRow In DSNachbearbeitung.TBNI_NACHBEARBEITUNG_AD.Rows
' If row.Item("ID") = TBNI_NACHBEARBEITUNG_ADDataGridView.Item(0, i).Value Then
' row.Delete()
' Exit For
' End If
' Next
' End If
' TBNI_NACHBEARBEITUNG_ADBindingSource.EndEdit()
' saveData()
' DSNachbearbeitung.TBNI_NACHBEARBEITUNG_AD.Clear()
' Load_Data()
' End If
Private Sub SaveRegeln_Click(sender As Object, e As EventArgs)
TBNI_NACHBEARBEITUNG_ADBindingSource.EndEdit()
DSNachbearbeitung.TBNI_NACHBEARBEITUNG_AD.Clear()
Load_Data()
End Sub
Private Sub TBNI_NACHBEARBEITUNG_ADDataGridView_RowsRemoved(sender As Object, e As DataGridViewRowsRemovedEventArgs)
End Sub
Private Sub btnAddSaveProfil_Click(sender As Object, e As EventArgs) Handles btnAddSaveProfil.Click
If txtDomäne.Text <> "" And txtServername.Text <> "" Then
If btnAddSaveProfil.Text.EndsWith("anlegen") Then
Dim loeschen As Integer
If chkbx_Loeschen.Checked Then
loeschen = 1
Else
loeschen = 0
End If
If _SQLLite.Execute_Command("INSERT INTO TBNI_NACHBEARBEITUNG_AD (NI_PROFILNAME,DEL_ALL_RIGHTS,Domain,Servername,Username,Password,ERSTELLTWER) VALUES (" &
"'" & Me._selectedProfile.Profilname & "'," & loeschen & ",'" & txtDomäne.Text & "','" & txtServername.Text & "','" &
txtUser.Text & "','" & txtPW.Text & "','" & Environment.UserName & "')", True) = True Then
Lade_Profil(Me._selectedProfile.Profilname)
End If
Else
Dim Aktiv As Integer
If chkbx_ProfilAktiv.Checked Then
Aktiv = 1
Else
Aktiv = 0
End If
Dim loeschen As Integer
If chkbx_Loeschen.Checked Then
loeschen = 1
Else
loeschen = 0
End If
If _SQLLite.Execute_Command("UPDATE TBNI_NACHBEARBEITUNG_AD set Aktiv = " & Aktiv & ",DEL_ALL_RIGHTS = " & loeschen &
", Domain = '" & txtDomäne.Text & "', Servername = '" & txtServername.Text & "', Username = '" & txtUser.Text & "', " &
"Password = '" & txtPW.Text & "', GEAENDERTWER = '" & Environment.UserName & "' where GUID = " & txtID.Text, True) = True Then
Lade_Profil(Me._selectedProfile.Profilname)
MsgBox("Die Änderungen wurden erfolgreich gespeichert", MsgBoxStyle.Exclamation, "Erfolgsmeldung")
End If
End If
Else
MsgBox("Bitte geben Sie für alle Pflichtfelder einen Wert ein!", MsgBoxStyle.Exclamation)
End If
End Sub
Private Sub btndeleteRegel_Click(sender As Object, e As EventArgs) Handles btndeleteRegel.Click
If DataGridView.SelectedRows.Count > 0 Then
Dim i As Integer
i = DataGridView.CurrentRow.Index
If DataGridView.Item(0, i).Value Is Nothing = False Then
If _SQLLite.Execute_Command("DELETE FROM TBNI_NB_STEP_AD WHERE GUID = " & DataGridView.Item(0, i).Value, True) Then
Load_Regeln()
End If
End If
End If
End Sub
Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
If txtTestfile.Text <> "" Or txtTestfolder.Text <> "" Then
If DataGridView.SelectedRows.Count > 0 Then
Dim DT As DataTable = DataGridView.DataSource
'Überprüfen ob das Rechtemodul auf created Folder angewendet werden soll
Dim crFolder As Boolean = False
For Each Row As DataRow In DT.Rows
If Row.Item(1).ToString = "AddRightCreatedFolder" Then
If crFolder = False Then crFolder = True
End If
Next
If crFolder = True And txtTestfolder.Text = "" Then
MsgBox("Bitte geben Sie einen Beispielordner an!", MsgBoxStyle.Exclamation)
txtTestfolder.BackColor = Color.Red
txtTestfolder.Focus()
Exit Sub
Else
txtTestfolder.BackColor = Color.White
End If
Dim i As Integer
i = DataGridView.CurrentRow.Index
If DataGridView.Item(0, i).Value Is Nothing = False Then
Dim testfile As String
If crFolder = True Then
testfile = "W:ONLY_FOLDER"
Else
testfile = txtTestfile.Text
End If
If _windreamRechte.FileFolder_DeleteAndOrSetRight(testfile.Substring(2), _profilID, DataGridView.Item(0, i).Value, False, txtTestfolder.Text, True) = True Then
MsgBox("Das Recht wurde erfolgreich getestet und zugewiesen!", MsgBoxStyle.Information, "Erfolgsmeldung:")
End If
End If
Else
MsgBox("Bitte wählen Sie eine Regel aus der Ansicht per Klick auf die Zeile aus!", MsgBoxStyle.Exclamation)
End If
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If Not Me.txtTestfile.Text = "" Then
Me.OpenFileDialog1.FileName = Me.txtTestfile.Text
End If
If Me.OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.txtTestfile.Text = Me.OpenFileDialog1.FileName
End If
End Sub
Private Sub btnEnvironment_Click(sender As Object, e As EventArgs) Handles btnEnvironment.Click
Me.txtUser.Text = Environment.UserName
Me.txtDomäne.Text = System.Net.Dns.GetHostByName("localhost").HostName.Replace(System.Net.Dns.GetHostName & ".", "")
Me.txtServername.Text = _windreamRechte.oServername
Me.txtPW.Text = ""
End Sub
Private Sub DataGridView_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView.SelectionChanged
Dim i As Integer
i = DataGridView.CurrentRow.Index
If DataGridView.Item(0, i).Value Is Nothing = False Then
Me.btnTest.Text = "Teste Regel " & DataGridView.Item(0, i).Value.ToString
' MsgBox(DataGridView.Item(0, i).Value)
End If
End Sub
Private Sub frmNB_AD_Shown(sender As Object, e As EventArgs) Handles Me.Shown
If FormClose = True Then
Me.Close()
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnTest_Anmeldung.Click
If _windreamRechte.Check_Login_Session(Me.txtDomäne.Text, Me.txtServername.Text, Me.txtUser.Text, Me.txtPW.Text) = True Then
MsgBox("Die personifizierte Verbindung zu windream konnte erfolgreich aufgebaut werden!", MsgBoxStyle.Information)
Else
MsgBox("Eine personifizierte Verbindung zu windream konnte NICHT aufgebaut werden!" & vbNewLine & "Bitte prüfen Sie die Userangaben!", MsgBoxStyle.Critical)
End If
End Sub
Private Sub txtTestfolder_TextChanged(sender As Object, e As EventArgs)
txtTestfolder.BackColor = Color.White
End Sub
End Class