Sign in to follow this  
Followers 0
rector

ListView Problem

3 posts in this topic

Hi,

I have wrote a programm to create a ipsec policy for decide hosts. The programm has two listboxes. A inputbox add the host to the first listbox, the second listbox listed the active hosts.

My problems are:

Listbox 1:

At the moment I can add a hostname serveral times but my goal is that a host can add only one time.

Listbox 2:

The entries in the listbox should be sort everythime when a host will be add to the box and/or a new ipsec policy was created.

MyCode:

#include <GUIConstants.au3>

#include <GuiListView.au3>

Global $Statuslabel = "Bereit"

Global $Version = ""

Global $File_1 = @ScriptDir & "\bin\clientsrv.txt"

Global $File_2 = @ScriptDir & "\bin\info.log"

Global $File_3 = @ScriptDir & "\bin\start.cmd"

Global $File_4 = @ScriptDir & "\bin\info.ini"

Global $Port_1 = "Portno"

Global $Port_2 = "Portno2"

$Form1 = GUICreate($Version, 760, 520, 192, 125)

$Tab1 = GUICtrlCreateTab(16, 10, 730, 470)

GUICtrlCreateTabItem("Server-Verwaltung")

$clientaddbutton = GUICtrlCreateButton("Client(s) hinzufügen >>>", 305, 140, 150, 20)

$clientrmvbutton = GUICtrlCreateButton("Client entfernen", 470, 385, 240, 20)

$Client = GUICtrlCreateInput ( "Hostname FQDN", 48 , 80, 150, 20)

$addbutton = GUICtrlCreateButton ( "Hinzufügen", 215, 80, 85, 20)

$rmvbutton = GUICtrlCreateButton ( "Entfernen" ,48, 385, 240, 20)

$ListView1 = GUICtrlCreateListView("Servername |IP-Adresse ", 48, 140, 240, 230)

$ListView2 = GUICtrlCreateListView("Servername |IP-Adresse ", 470, 140, 240, 230)

$Label_1 = GUICtrlCreateLabel ( "", 305, 180, 150, 200)

$Group_1 = GuiCtrlCreateGroup ( " Vorbereitungsliste ", 38, 115, 260, 355)

$Group_2 = GuiCtrlCreateGroup ( "", 38, 410, 260, 60)

$Group_3 = GuiCtrlCreateGroup ( " Serverliste ", 460, 115, 260, 355)

$Group_4 = GuiCtrlCreateGroup ( "", 460, 410, 260, 60)

$clientcreatebutton = GUICtrlCreateButton("Aktivierung", 470, 430, 240, 20)

$Status = GUICtrlCreateLabel ( $Statuslabel , 48, 425, 240, 35, BitOR($SS_SUNKEN, $SS_CENTER, $BS_CENTER))

$Datei_menu = GUICtrlCreateMenu ( "&Daten")

$Datei_item_end = GUICtrlCreateMenuitem ( "B&eenden" , $Datei_menu)

$viewmenu = GUICtrlCreateMenu("A&nsicht",-1,1)

$viewstatusitem = GUICtrlCreateMenuitem ("Statusfeld",$viewmenu)

GUICtrlSetState(-1,$GUI_CHECKED)

$Info_menu = GUICtrlCreateMenu ( "?" )

$Info_item_info = GUICtrlCreateMenuitem ( "Info", $Info_menu)

; Clients einlesen

$filesrv = FileOpen($File_1, 0)

If $filesrv = -1 Then

$Status = GUICtrlCreateLabel ( "Serverliste nicht gefunden.", 48, 425, 240, 35, BitOR($SS_SUNKEN, $SS_CENTER))

;Exit

EndIf

; Read in lines of text until the EOF is reached

While 1

$linesrv = FileReadLine($filesrv)

If @error = -1 Then ExitLoop

$linesrv = StringSplit ($linesrv, ";")

GUICtrlCreateListViewItem (StringUpper($linesrv[1]) & "|" & $linesrv[2], $ListView2)

Wend

FileClose($filesrv)

GUISetState(@SW_SHOW)

While 1

$msg = GUIGetMsg()

If $msg = $GUI_EVENT_CLOSE or $msg = $Datei_item_end Then ExitLoop

If $msg = $viewstatusitem Then

If BitAnd(GUICtrlRead($viewstatusitem),$GUI_CHECKED) = $GUI_CHECKED Then

GUICtrlSetState($viewstatusitem,$GUI_UNCHECKED)

GUICtrlSetState($Status,$GUI_HIDE)

Else

GUICtrlSetState($viewstatusitem,$GUI_CHECKED)

GUICtrlSetState($Status,$GUI_SHOW)

EndIf

EndIf

Select

Case $msg = $Info_item_info

MsgBox (64, $Version, "" & @CRLF & " " _

& @CRLF & @CRLF & " ")

case $msg = $addbutton

GUICtrlSetState ($addbutton, $GUI_Disable)

GUICtrlSetState ($rmvbutton, $GUI_Disable)

GUICtrlSetState ($clientaddbutton, $GUI_Disable)

GUICtrlSetState ($clientrmvbutton, $GUI_Disable)

$host = GUICtrlRead ($Client)

; nslookup check

RunWait(@COMSPEC & " /c " & @WindowsDir & "\system32\nslookup.exe " & $host & " > " & CHR(34) & $File_2 & CHR(34), "",@SW_HIDE)

$filenslookup = FileOpen ($File_2, 0)

If $filenslookup = -1 Then

GUICtrlSetData ($Status, "NSLOOKUP nicht ausführbar.")

Exit

EndIf

$line = FileReadLine($filenslookup, 4)

$line_1 = FileReadLine($filenslookup, 5)

If @error = -1 Then

GUICtrlSetData ($Status, "Hostname nicht im DNS vorhanden.")

Else

$line = StringReplace ( $line, "Name: ", "")

$line_1 = StringReplace ( $line_1, "Address: ", "")

GUICtrlCreateListViewItem (StringUpper($line) & "|" & $line_1, $ListView1)

GUICtrlSetData ($Status, "Server erfolgreich hinzugefügt.")

EndIf

FileClose($filenslookup)

FileDelete($File_2)

GUICtrlSetState ($addbutton, $GUI_Enable)

GUICtrlSetState ($rmvbutton, $GUI_Enable)

GUICtrlSetState ($clientaddbutton, $GUI_Enable)

GUICtrlSetState ($clientrmvbutton, $GUI_Enable)

case $msg = $rmvbutton

GUICtrlSetState ($addbutton, $GUI_Disable)

GUICtrlSetState ($rmvbutton, $GUI_Disable)

GUICtrlSetState ($clientaddbutton, $GUI_Disable)

GUICtrlSetState ($clientrmvbutton, $GUI_Disable)

$host = GUICtrlRead(GUICtrlRead($ListView1))

$host_1 = GUICtrlRead($ListView1)

If $host_1 = 0 Then

GUICtrlSetData ($Status, "Keinen Datensatz ausgewählt.")

Else

GUICtrlDelete($host_1)

GUICtrlSetData ($Status, "Datensatz erfolgreich gelöscht.")

EndIf

GUICtrlSetState ($addbutton, $GUI_Enable)

GUICtrlSetState ($rmvbutton, $GUI_Enable)

GUICtrlSetState ($clientaddbutton, $GUI_Enable)

GUICtrlSetState ($clientrmvbutton, $GUI_Enable)

case $msg = $clientaddbutton

GUICtrlSetState ($addbutton, $GUI_Disable)

GUICtrlSetState ($rmvbutton, $GUI_Disable)

GUICtrlSetState ($clientaddbutton, $GUI_Disable)

GUICtrlSetState ($clientrmvbutton, $GUI_Disable)

For $x = 0 To _GUICtrlListViewGetItemCount($ListView1) - 1

$ret = _GUICtrlListViewGetItemText($ListView1, $x)

GUICtrlCreateListViewItem($ret, $ListView2)

Next

_GUICtrlListViewDeleteAllItems($ListView1)

GUICtrlSetState ($addbutton, $GUI_Enable)

GUICtrlSetState ($rmvbutton, $GUI_Enable)

GUICtrlSetState ($clientaddbutton, $GUI_Enable)

GUICtrlSetState ($clientrmvbutton, $GUI_Enable)

case $msg = $clientrmvbutton

GUICtrlSetState ($addbutton, $GUI_Disable)

GUICtrlSetState ($rmvbutton, $GUI_Disable)

GUICtrlSetState ($clientaddbutton, $GUI_Disable)

GUICtrlSetState ($clientrmvbutton, $GUI_Disable)

$host = GUICtrlRead(GUICtrlRead($ListView2))

$host_1 = GUICtrlRead($ListView2)

If $host_1 = 0 Then

GUICtrlSetData ($Status, "Keinen Datensatz ausgewählt.")

Else

GUICtrlDelete($host_1)

GUICtrlSetData ($Status, "Datensatz erfolgreich gelöscht.")

EndIf

GUICtrlSetState ($addbutton, $GUI_Enable)

GUICtrlSetState ($rmvbutton, $GUI_Enable)

GUICtrlSetState ($clientaddbutton, $GUI_Enable)

GUICtrlSetState ($clientrmvbutton, $GUI_Enable)

case $msg = $clientcreatebutton

$IPSecfile = FileOpen ($File_3, 2)

For $i = 2 To 36

$var = FileReadLine ($File_4, $i)

FileWriteLine($IPSecfile, $var)

Next

For $x = 0 To _GUICtrlListViewGetItemCount($ListView2) - 1

$ret = _GUICtrlListViewGetItemText($ListView2, $x)

$ret = StringSplit ( $ret, "|")

FileWriteLine($IPSecfile, "netsh ipsec static add filter filterlist=" & CHR(34) & "Incoming Traffic" & CHR(34) & " srcaddr=" _

& $ret[1] & " dstaddr=me description=" & CHR(34) & "VMLIC Incoming Traffic" & CHR(34) & " protocol=TCP srcport=0 dstport=" & $Port_1)

FileWriteLine($IPSecfile, "netsh ipsec static add filter filterlist=" & CHR(34) & "Incoming Traffic" & CHR(34) & " srcaddr=" _

& $ret[1] & " dstaddr=me description=" & CHR(34) & "VMLIC Incoming Traffic" & CHR(34) & " protocol=TCP srcport=0 dstport=" & $Port_2)

Next

FileWriteLine ($IPSecfile, @CRLF)

For $i = 38 To 47

$var = FileReadLine ($File_4, $i)

FileWriteLine ($IPSecfile, $var)

Next

FileClose($IPSecfile)

GUICtrlSetData ($Status, "Neue Hostliste erfolgreich aktiviert.")

EndSelect

Wend

Share this post


Link to post
Share on other sites



Sorry, please create in the script directory the folder "bin" and unzip the attachment there.

The Script was wrote with AutoIt v3.2.1.1 (beta).

Thanks,

rector

info.zip

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0