407 lines
19 KiB
VB.net
407 lines
19 KiB
VB.net
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
|
|
''' <summary>
|
|
''' Schreibt die Profile in die Combobox in der Toolbar.
|
|
''' </summary>
|
|
''' <remarks></remarks>
|
|
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 |