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