325 lines
13 KiB
VB.net
325 lines
13 KiB
VB.net
Imports System.Reflection
|
|
|
|
Public Class cHost
|
|
Property FQDN As String = ""
|
|
Property QINFO As String = ""
|
|
Property IPAdresse As String = ""
|
|
Property NETNAME As String = ""
|
|
Property Seriennummer As String = ""
|
|
Property MAC As String = ""
|
|
Property Benutzer As String = ""
|
|
Property Passwort As String = ""
|
|
Property LINK As String = ""
|
|
Property INFO As String = ""
|
|
Property TYPE As String = ""
|
|
Property HOST As Object = Nothing
|
|
Property NWSTANDORT As String = ""
|
|
Property Modell As String = ""
|
|
Property Linked As Object = Nothing
|
|
Property LinkedWith As String = ""
|
|
Property AddIP As String = ""
|
|
Property Standort As String = ""
|
|
Property DHCP As String = ""
|
|
Property Netzwerk As String = ""
|
|
Property Firewall As Boolean = False
|
|
Property TeamviewerID As String = ""
|
|
Property TeamviewerKennwort As String = ""
|
|
Property SSHPort As Decimal = 22
|
|
|
|
|
|
|
|
|
|
|
|
Function getparameterlistMaster() As List(Of SQLVariable)
|
|
Dim list As New List(Of SQLVariable)
|
|
list.Add(New SQLVariable("FQDN", FQDN))
|
|
list.Add(New SQLVariable("QINFO", QINFO))
|
|
list.Add(New SQLVariable("IPAdresse", IPAdresse))
|
|
list.Add(New SQLVariable("NETNAME", NETNAME))
|
|
list.Add(New SQLVariable("Seriennummer", Seriennummer))
|
|
list.Add(New SQLVariable("MAC", MAC))
|
|
list.Add(New SQLVariable("Benutzer", Benutzer))
|
|
list.Add(New SQLVariable("Passwort", Passwort))
|
|
list.Add(New SQLVariable("Link", LINK))
|
|
list.Add(New SQLVariable("INFO", INFO))
|
|
list.Add(New SQLVariable("TYPE", TYPE))
|
|
list.Add(New SQLVariable("HOST", HOST))
|
|
list.Add(New SQLVariable("NWSTANDORT", NWSTANDORT))
|
|
list.Add(New SQLVariable("Modell", Modell))
|
|
list.Add(New SQLVariable("Linked", Linked))
|
|
list.Add(New SQLVariable("LinkedWith", LinkedWith))
|
|
list.Add(New SQLVariable("AddIP", AddIP))
|
|
list.Add(New SQLVariable("Standort", Standort))
|
|
list.Add(New SQLVariable("DHCP", DHCP))
|
|
list.Add(New SQLVariable("Netzwerk", Netzwerk))
|
|
list.Add(New SQLVariable("Firewall", Firewall))
|
|
list.Add(New SQLVariable("TeamviewerID", TeamviewerID))
|
|
list.Add(New SQLVariable("TeamviewerKennwort", TeamviewerKennwort))
|
|
list.Add(New SQLVariable("SSHPort", SSHPort))
|
|
Return list
|
|
|
|
End Function
|
|
|
|
Function getparameterlistSlave() As List(Of SQLVariable)
|
|
Dim list As New List(Of SQLVariable)
|
|
list.Add(New SQLVariable("FQDN", FQDN))
|
|
list.Add(New SQLVariable("QINFO", QINFO))
|
|
list.Add(New SQLVariable("IPAdresse", IPAdresse))
|
|
'list.Add(New SQLVariable("NETNAME", NETNAME))
|
|
list.Add(New SQLVariable("Seriennummer", Seriennummer))
|
|
list.Add(New SQLVariable("MAC", MAC))
|
|
list.Add(New SQLVariable("Benutzer", Benutzer))
|
|
list.Add(New SQLVariable("Passwort", Passwort))
|
|
list.Add(New SQLVariable("Link", LINK))
|
|
list.Add(New SQLVariable("INFO", INFO))
|
|
list.Add(New SQLVariable("TYPE", TYPE))
|
|
'list.Add(New SQLVariable("HOST", HOST))
|
|
'list.Add(New SQLVariable("NWSTANDORT", NWSTANDORT))
|
|
list.Add(New SQLVariable("Modell", Modell))
|
|
'list.Add(New SQLVariable("Linked", Linked))
|
|
list.Add(New SQLVariable("LinkedWith", LinkedWith))
|
|
list.Add(New SQLVariable("AddIP", AddIP))
|
|
list.Add(New SQLVariable("Standort", Standort))
|
|
list.Add(New SQLVariable("DHCP", DHCP))
|
|
'list.Add(New SQLVariable("Netzwerk", Netzwerk))
|
|
list.Add(New SQLVariable("Firewall", Firewall))
|
|
list.Add(New SQLVariable("TeamviewerID", TeamviewerID))
|
|
list.Add(New SQLVariable("TeamviewerKennwort", TeamviewerKennwort))
|
|
list.Add(New SQLVariable("SSHPort", SSHPort))
|
|
Return list
|
|
|
|
End Function
|
|
|
|
Function clear()
|
|
Me.FQDN = ""
|
|
Me.QINFO = ""
|
|
Me.IPAdresse = ""
|
|
Me.NETNAME = ""
|
|
Me.Seriennummer = ""
|
|
Me.MAC = ""
|
|
Me.Benutzer = ""
|
|
Me.Passwort = ""
|
|
Me.LINK = ""
|
|
Me.INFO = ""
|
|
Me.TYPE = ""
|
|
Me.HOST = Nothing
|
|
Me.NWSTANDORT = ""
|
|
Me.Modell = ""
|
|
Me.Linked = Nothing
|
|
Me.LinkedWith = ""
|
|
Me.AddIP = ""
|
|
Me.Standort = ""
|
|
Me.DHCP = ""
|
|
Me.Netzwerk = ""
|
|
Me.Firewall = False
|
|
Me.TeamviewerID = ""
|
|
Me.TeamviewerKennwort = ""
|
|
Me.SSHPort = 22
|
|
End Function
|
|
|
|
Public Shared Function getHostsEntrys(ByRef ds As DataSet, ByVal HostIP As String)
|
|
Dim selector As String = "Select
|
|
[fwr_ID]
|
|
,[fwr_in]
|
|
,[fwr_out]
|
|
,[fwr_portsin]
|
|
,[fwr_portsout]
|
|
,[fwr_dienste]
|
|
,[fwr_FQDN]
|
|
,[fwr_info]
|
|
, case when [fwr_direct] is null then '0'
|
|
else [fwr_direct] end as [fwr_direct]
|
|
From [Doku].[dbo].[TbL_FirewallRules] where [fwr_hostip] = '" & HostIP & "'
|
|
ORDER BY [fwr_in]"
|
|
|
|
cSQL.SQL2DS(selector, ds)
|
|
|
|
End Function
|
|
|
|
Public Function gethost(ip As String)
|
|
Dim ds As New DataSet
|
|
Dim test As String = ""
|
|
cSQL.SQL2DS("select * from TbL_Netzwerkclients where IPAdresse = '" & ip & "'", ds)
|
|
For Each c As DataColumn In ds.Tables(0).Columns
|
|
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(c.ColumnName)
|
|
If propInfo IsNot Nothing Then
|
|
If Not IsDBNull(c.Table.Rows(0).Item(c)) Then
|
|
propInfo.SetValue(Me, c.Table.Rows(0).Item(c))
|
|
End If
|
|
End If
|
|
Next
|
|
' MsgBox("hier")
|
|
End Function
|
|
|
|
Public Function getUpdateCmd(ByRef update As String, ByRef where As String, Optional ByRef slaveupdate As String = "", Optional ByRef slavewhere As String = "", Optional ByVal Linked As Boolean = False, Optional ByVal newhost As cHost = Nothing)
|
|
If newhost Is Nothing Then
|
|
slavewhere = ""
|
|
Dim list As List(Of SQLVariable) = getparameterlistMaster()
|
|
Dim slavelist As List(Of SQLVariable) = getparameterlistSlave()
|
|
|
|
For Each i In list ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''dieser Host
|
|
If Not i.SQLText = "IPAdresse" Then
|
|
update &= "[" & i.SQLText & "]='" & i.SQLValue & "',"
|
|
Else
|
|
where &= "IPAdresse = '" & i.SQLValue & "'"
|
|
End If
|
|
Next
|
|
update = update.Substring(0, update.Length - 1) 'wg. ','
|
|
|
|
For Each i In slavelist ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''alle Hosts, bei denen dieser Host als LinkedWith eingetragen ist
|
|
If Not i.SQLText = "IPAdresse" And Not i.SQLText = "LinkedWith" And Not i.SQLText = "NETNAME" And Not i.SQLText = "NWSTANDORT" And Not i.SQLText = "Netzwerk" Then
|
|
slaveupdate &= "[" & i.SQLText & "]='" & i.SQLValue & "',"
|
|
ElseIf i.SQLText = "IPAdresse" Then
|
|
slavewhere &= "(Linked = 'True' AND (LinkedWith = '" & i.SQLValue & "'"
|
|
End If
|
|
Next
|
|
slaveupdate = slaveupdate.Substring(0, slaveupdate.Length - 1)
|
|
|
|
If Linked = True Then '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
|
|
For Each i In slavelist '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Masterhost
|
|
If i.SQLText = "LinkedWith" Then
|
|
slavewhere &= "OR LinkedWith = '" & i.SQLValue & "') OR IPAdresse = '" & i.SQLValue & "')"
|
|
End If
|
|
Next
|
|
ElseIf Linked = False Then
|
|
slavewhere &= "))"
|
|
End If
|
|
|
|
Else
|
|
|
|
Dim list As List(Of SQLVariable) = newhost.getparameterlistMaster()
|
|
|
|
For Each i In list ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''dieser Host
|
|
If Not i.SQLText = "IPAdresse" Then
|
|
update &= "[" & i.SQLText & "]='" & i.SQLValue & "',"
|
|
Else
|
|
where &= "IPAdresse = '" & i.SQLValue & "'"
|
|
End If
|
|
Next
|
|
update = update.Substring(0, update.Length - 1) 'wg. ','
|
|
|
|
End If
|
|
|
|
|
|
End Function
|
|
|
|
Public Function updateHostEntry(ByRef entry As cHost)
|
|
Dim update, where, slaveupdate, slavewhere As String
|
|
getUpdateCmd(update, where, slaveupdate, slavewhere, Me.Linked)
|
|
cSQL.UpdateSQL("TbL_Netzwerkclients", update, where)
|
|
cSQL.UpdateSQL("TbL_Netzwerkclients", slaveupdate, slavewhere)
|
|
'MsgBox(update & where)
|
|
|
|
End Function
|
|
|
|
Function checkIfIPExist(ByVal ip As String)
|
|
Dim ds As New DataSet
|
|
cSQL.SQL2DS("SELECT * FROM TbL_Netzwerkclients WHERE IPADRESSE = '" & ip & "'", ds)
|
|
If ds.Tables(0).Rows.Count > 0 Then
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
End Function
|
|
|
|
Public Function DeleteHost(Optional ByVal supress As Boolean = False)
|
|
If supress = False Then
|
|
If MessageBox.Show("Eintrag " & Me.FQDN & " wirklich löschen?", "Hosteintrag löschen", MessageBoxButtons.OKCancel) = DialogResult.OK Then
|
|
Dim ds As New DataSet
|
|
Dim Slaves As String = ""
|
|
cSQL.SQL2DS("SELECT * FROM TbL_Netzwerkclients WHERE LinkedWith ='" & Me.IPAdresse & "'", ds)
|
|
|
|
If ds.Tables(0).Rows.Count > 0 Then
|
|
For Each r As DataRow In ds.Tables(0).Rows
|
|
Slaves &= r.Item("IPAdresse").ToString & vbCrLf
|
|
Next
|
|
|
|
If MessageBox.Show("
|
|
Achtung! " & vbCrLf & "Der Eintrag " & Me.FQDN & " ist ein MasterEintrag für die IP Adressen " & vbCrLf & Slaves & "
|
|
Diese Einträge werden ebenfalls gelöscht. Fortfahren?", "Hosteintrag löschen", MessageBoxButtons.OKCancel) = DialogResult.OK Then
|
|
cSQL.DeleteSQL("TbL_Netzwerkclients", "LinkedWith = '" & Me.IPAdresse & "'")
|
|
ElseIf DialogResult.Cancel Then
|
|
Exit Function
|
|
End If
|
|
End If
|
|
cSQL.DeleteSQL("TbL_Netzwerkclients", "IPAdresse = '" & Me.IPAdresse & "'")
|
|
Class1.RefillNW(Me.Netzwerk)
|
|
ElseIf DialogResult.Cancel Then
|
|
Exit Function
|
|
End If
|
|
Else
|
|
cSQL.DeleteSQL("TbL_Netzwerkclients", "IPAdresse = '" & Me.IPAdresse & "'")
|
|
Class1.RefillNW(Me.Netzwerk)
|
|
End If
|
|
|
|
End Function
|
|
|
|
Public Function MoveHost(newip As String)
|
|
If checkIfIPExist(newip) = False Then MsgBox("Die Adresse kann nicht verwendet werden. Bitte überprüfen.") : Return Me : Exit Function
|
|
|
|
Dim oldip As String = Me.IPAdresse
|
|
Dim newhost As New cHost
|
|
newhost.gethost(newip)
|
|
|
|
'Get Slaves of LinkedMaster
|
|
Dim ds As New DataSet
|
|
cSQL.SQL2DS("SELECT * FROM TbL_Netzwerkclients WHERE LinkedWith = '" & Me.IPAdresse & "'", ds)
|
|
|
|
'Ziel prüfen und gegebenenfalls anzeigen
|
|
If (
|
|
newhost.FQDN = "" And
|
|
newhost.Modell = "" And
|
|
newhost.TYPE = "") Then
|
|
Else
|
|
If MsgBox("Ziel ist bereits belegt. Anzeigen?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
|
Me.gethost(newip)
|
|
Else
|
|
Me.gethost(oldip)
|
|
End If
|
|
Exit Function
|
|
End If
|
|
|
|
'If Host = LinkedMaster then Update Slaves
|
|
If ds.Tables(0).Rows.Count > 0 Then
|
|
cSQL.UpdateSQL("TbL_Netzwerkclients", "LinkedWith = '" & newip & "'", "LinkedWith = '" & oldip & "'")
|
|
End If
|
|
|
|
newhost.FQDN = Me.FQDN
|
|
newhost.QINFO = Me.QINFO
|
|
newhost.Seriennummer = Me.Seriennummer
|
|
newhost.MAC = Me.MAC
|
|
newhost.Benutzer = Me.Benutzer
|
|
newhost.Passwort = Me.Passwort
|
|
newhost.LINK = Me.LINK
|
|
newhost.INFO = Me.INFO
|
|
newhost.TYPE = Me.TYPE
|
|
newhost.Modell = Me.Modell
|
|
newhost.Linked = Me.Linked
|
|
newhost.LinkedWith = Me.LinkedWith
|
|
newhost.AddIP = Me.AddIP
|
|
newhost.Standort = Me.Standort
|
|
newhost.DHCP = Me.DHCP
|
|
newhost.Firewall = Me.Firewall
|
|
newhost.SSHPort = Me.SSHPort
|
|
|
|
Dim update, where As String
|
|
getUpdateCmd(update, where, "", "", newhost.Linked, newhost)
|
|
cSQL.UpdateSQL("TbL_Netzwerkclients", update, where)
|
|
|
|
cFolder.FolderMove(Me.NWSTANDORT & "_" & Me.NETNAME, Me.HOST, newhost.NWSTANDORT & "_" & newhost.NETNAME, newhost.HOST)
|
|
|
|
Me.DeleteHost(True)
|
|
Return newhost
|
|
|
|
End Function
|
|
|
|
Public Shared Function getSlaves(ByVal ip As String, ByRef ds As DataSet)
|
|
|
|
cSQL.SQL2DS("SELECT IPAdresse , (NWSTANDORT + ' ' + NETNAME) as Netzwerk FROM TbL_Netzwerkclients WHERE LinkedWith = '" & ip & "'", ds)
|
|
|
|
End Function
|
|
|
|
|
|
End Class
|