Hallo,
wollte euch mal fragen, wie Ihr meine Lösung findet...
Ziel war, eine auf einem FTP-Server befindliche verschlüsselte Datei zu bearbeiten und wieder hoch zu stellen. Auch sollte bei jeder Bearbeitung die im gleichen Verzeichnis auf dem Server befindliche TXT im Zähler um einen Punkt hoch gesetzt werden.
Als Ansatz habe ich das Script von @wollferness benutzt und für meine Zwecke umgebaut.
somit können wir problemlos die INI erweitern und wieder verschlüsselt hoch stellen.
Spoiler anzeigen
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\GPW.ico
#AutoIt3Wrapper_outfile=GPW-Ini-Updater_Beta5\GPW-Ini-Updater_V1.exe
#AutoIt3Wrapper_Res_Comment=Programm zum Auslesen und erneuern der GPW.ini
#AutoIt3Wrapper_Res_Fileversion=1.0.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=GoPalWorld
#AutoIt3Wrapper_Res_SaveSource=y
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_Field=Made by|Pitter (c)
#AutoIt3Wrapper_Run_Tidy=y
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
;====================================================
;============= GPW-INI-Updater =============
;====================================================
; AutoIt version: 3.3.360
; Language: Deutsch
; Author: Pitter (c) by Idea from @wolfferness
;
; ----------------------------------------------------------------------------
; Script Start
; ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <Constants.au3>
#include <IE.au3>
#include <File.au3>
#include <Array.au3>
#include <GuiButton.au3>
#include <GUIConstants.au3>
#include <String.au3>
#include <FTPEx.au3>
#include <Debug.au3>
_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]Local $UpDownLevel
[/autoit] [autoit][/autoit] [autoit]#forceref $UpDownLevel
$encr = 0
$WinMain = GUICreate('GPW-INI-Updater V1', 800, 600) ;~ Fenstertitel setzen
GUISetBkColor(0xA6CAF0) ;~ Hintergrundfarbe setzen
$EditText = GUICtrlCreateEdit('', 10, 100, 590, 265) ;~ Editor-Fenster setzen
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\Installer-Grafik_oben.jpg", 10, 5, 590, 90, BitOR($SS_NOTIFY, $SS_SUNKEN, $WS_GROUP, $WS_CLIPSIBLINGS), $WS_EX_CLIENTEDGE)
;~ Logo platzieren
;######## Passwort für die INI-Datei
$InputPass = 'TEST'
$InputLevel = '2'
;######## Buttons generieren
$EndButton = GUICtrlCreateButton('Beenden', 644, 536, 107, 50, 0, $WS_EX_CLIENTEDGE)
$Group1 = GUICtrlCreateGroup("Dateien bearbeiten", 616, 10, 167, 495, $BS_FLAT, $WS_EX_CLIENTEDGE)
$ReadButton = GUICtrlCreateButton("Download", 644, 56, 107, 60, 0, $WS_EX_CLIENTEDGE)
$EncryptButton = GUICtrlCreateButton('Verschlüsseln', 644, 274, 107, 60, 0, $WS_EX_CLIENTEDGE)
$DecryptButton = GUICtrlCreateButton('Entschlüsseln', 644, 168, 107, 60, 0, $WS_EX_CLIENTEDGE)
$SendButton = GUICtrlCreateButton('Veröffentlichen', 644, 384, 107, 60, 0, $WS_EX_CLIENTEDGE)
;~####### FTP-Daten
$server = 'testserver.de'
$username = 'anonym'
$pass = 'anonym'
$path = '/Zielverzeichnis/'
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE ;~ Wenn man oben auf das X klickt
ExitLoop ;~ Schleife verlassen und schliessen
Case $ReadButton ;~ Dateien einlesen
;###### Beginn Download der INI und der Update.txt
$DownloadFile_1 = (@ScriptDir & "\GPW.ini") ;~ Pfad in Var schreiben
$DownloadFile_2 = (@ScriptDir & "\Update.txt") ;~ dito
$Ftp_FileName_1 = "GPW.ini" ;~ Dateiname in Var schreiben
$Ftp_FileName_2 = "Update.txt" ;~ dito
$Open = _FTP_Open('MyFTP Control') ;~ Öffne FTP
$label_4 = GUICtrlCreateLabel("FTP wird geöffnet...", 10, 520, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(500)
$label_1 = GUICtrlCreateLabel("Verbinde mit Server: " & $server & " Username: " & $username & " Passwort: " & " Passwort: " & $pass, 10,400, 585,30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
$Conn = _FTP_Connect($Open, $server, $username, $pass) ;~ Verbinden mit dem FTP
GUICtrlDelete($label_4)
$label_4 = GUICtrlCreateLabel("Anmelden am Server....", 10, 520, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(500)
$FtpDir = _FTP_DirSetCurrent($Conn, $path) ;~ Wechseln des Standart-Verzeichnisses
GUICtrlDelete($label_4)
$label_4 = GUICtrlCreateLabel("Wechseln in den Ordner: " & $path, 10, 520, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(500)
Local $Ftpd_1 = _FTP_ProgressDownload($Conn, $DownloadFile_1, $Ftp_FileName_1) ;~ Download mit Progressbar
Local $Ftpd_2 = _FTP_ProgressDownload($Conn, $DownloadFile_2, $Ftp_FileName_2) ;~ Download mit Progressbar
GUICtrlDelete($label_4)
GUICtrlDelete($label_1)
If $Ftpd_1 = 1 And $Ftpd_2 = 1 Then ;~ Kontrolle, ob beide Files da sind
GUICtrlDelete($label_4)
$label_5 = GUICtrlCreateLabel("Dateien wurden erfolgreich geladen.", 10, 560, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(500)
Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen
If FileExists($DownloadFile_1) And FileExists($DownloadFile_2) Then ;~ Wenn beidse Files da sind
$file = FileOpen(@ScriptDir & "\GPW.ini", 0) ;~ öffne INI zum lesen
$chars = FileRead($file) ;~ Datei auslesen
GUICtrlSetData($EditText, $chars) ;~ Dateiinhalt in Textbox schreiben
FileClose($file) ;~ INI schliessen
GUISetState(@SW_ENABLE, $WinMain) ;~ Fenster zum Bearbeiten aktivieren
EndIf
Else
GUICtrlDelete($label_1)
$label_5 = GUICtrlCreateLabel("DATEIEN WURDEN NICHT GELADEN!", 10, 560, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Local $Ftpc = _FTP_Close($Open)
Sleep(3000)
EndIf
GUICtrlDelete($label_4)
$label_1 = GUICtrlCreateLabel("INI-Datei eingelesen", 10, 400, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
$label_2 = GUICtrlCreateLabel("Bitte INI-Datei entschlüsseln und editieren!", 10, 440, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
$encr = 0 ;~ Kontrolle, ob verschllüsselt wurde auf False (0) setzen
[/autoit] [autoit][/autoit] [autoit]Case $EncryptButton ;~ Verschlüsselung
GUICtrlDelete($label_1)
GUICtrlDelete($label_2)
GUICtrlDelete($label_5)
GUISetState(@SW_DISABLE, $WinMain) ;~ Fenster deaktivieren
$string1 = GUICtrlRead($EditText) ;~ Text aus dem Textfenster lesen
GUICtrlSetData($EditText, 'Bitte warten, INI wird verschlüsselt!')
GUICtrlSetData($EditText, _StringEncrypt(1, $string1, $InputPass, $InputLevel)) ;~ Inhalt verschlüsseln und ab ins Fenster
$chars1 = GUICtrlRead($EditText) ;~ Fenster auslesen
$inifile = FileOpen(@ScriptDir & "\GPW.ini", 2) ;~ alte INI-Datei öffnen
FileWrite($inifile, $chars1) ;~ Inhalt des Fensters in die alte INI schreiben
FileClose($inifile) ;~ Neue INI schliessen
GUICtrlSetData($EditText, $chars1) ;~ und zur Kontrolle noch mal ins Fenster
GUISetState(@SW_ENABLE, $WinMain) ;~ Fenster wieder aktivieren
$encr = 1 ;~ Kontrolle, ob verschlüsselt wurde auf True (1) setzen
$label_5 = GUICtrlCreateLabel("INI wurde verschlüsselt.", 10, 560, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
$label_2 = GUICtrlCreateLabel("Bitte INI-Datei veröffentlichen!", 10, 440, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Case $DecryptButton ;~ Entschlüsselung
GUICtrlDelete($label_2)
GUICtrlDelete($label_5)
GUISetState(@SW_DISABLE, $WinMain) ;~ Fenster deaktivieren
$string2 = GUICtrlRead($EditText) ;~ Fenster auslesen
GUICtrlSetData($EditText, 'Bitte warten, INI wird entschlüsselt!')
GUICtrlSetData($EditText, _StringEncrypt(0, $string2, $InputPass, $InputLevel)) ;~ Fenstertext entschlüsseln
$chars2 = GUICtrlRead($EditText) ;~ Fenster auslesen
$inifile2 = FileOpen(@ScriptDir & '\GPW.ini', 2) ;~ INI öffnen
FileWrite($inifile2, $chars2) ;~ Fensterinhalt in die INI schreiben
FileClose($inifile2) ;~ INI schliessen
GUISetState(@SW_ENABLE, $WinMain) ;~ Fenster aktivieren
$encr = 0
$label_5 = GUICtrlCreateLabel("INI wurde entschlüsselt.", 10, 560, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
$label_2 = GUICtrlCreateLabel("Nach dem Editieren, bitte INI wieder verschlüsseln!", 10, 440, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Case $SendButton
GUISetState(@SW_DISABLE, $WinMain) ;~ Fenster deaktivieren, um Änderungen zu vermeiden
GUICtrlDelete($label_2)
If $encr = 1 Then
$sString = FileReadLine(@ScriptDir & "\Update.txt", 2) ;~ 2. Zeile auslesen
$VersionText = $sString ;~ Kontrolle, ob INI nicht leer ist
If $VersionText = "" Then ;~ Wenn leer, dann Msgbox
MsgBox(0, "Fehler", "Update.txt nicht gefunden, Programm wird beendet!", 30)
Exit
Else
$label_2 = GUICtrlCreateLabel("Online-Version ist: " & $sString, 10, 440, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
$aSplit = StringSplit($sString, ".", 2) ;~ Splitten des Strings nach Teiler "."
$aSplit[3] += 1 ;~ Erhöhen des 4.Wertes um 1
[/autoit] [autoit][/autoit] [autoit]$sString = "" ;~ String leer bereitstellen
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To UBound($aSplit) - 1 ;~ Schleife zum Zusammensetzen des neuen Strings
$sString &= $aSplit[$i] & "." ;~ Zusammensetzen des Stings
Next
$sString = StringTrimRight($sString, 1) ;~ Entfernen des letzen Teilers am Ende des Strings
$label_3 = GUICtrlCreateLabel("Update-Version ist: " & $sString, 10, 480, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
_FileWriteToLine(@ScriptDir & "\Update.txt", 2, $sString, 1) ;~ Neuen String in Zeile 2 der Update.txt schreiben und Zeile überschreiben (1)
[/autoit] [autoit][/autoit] [autoit];####### Beginn Upload der neuen Dateien
$UploadFile = (@ScriptDir & "\GPW.ini") ;~ Pfad der INI in Var schreiben
$UploadFile_2 = (@ScriptDir & "\Update.txt") ;~ Pfad der Update.txt in Var schreiben
$Ftp_FileName = "GPW.ini" ;~ Dateiname in Var schreiben
$Ftp_FileName_2 = "Update.txt" ;~ dito
$Open = _FTP_Open('MyFTP Control') ;~ FTP öffnen
$label_4 = GUICtrlCreateLabel("FTP wird geöffnet...", 10, 520, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(500)
$Conn = _FTP_Connect($Open, $server, $username, $pass) ;~ mit FTP-Server verbinden
GUICtrlDelete($label_4)
$label_4 = GUICtrlCreateLabel("Anmelden am Server....", 10, 520, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(500)
$FtpDir = _FTP_DirSetCurrent($Conn, $path) ;~ FTP-Pfad setzen
GUICtrlDelete($label_4)
$label_4 = GUICtrlCreateLabel("Wechseln in den Ordner: " & $path, 10, 520, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(500)
GUICtrlDelete($label_4)
Local $Ftpp = _FTP_ProgressUpload($Conn, $UploadFile, $Ftp_FileName) ;~ Datei mit Progressbar hochladen
Local $Ftpp_2 = _FTP_ProgressUpload($Conn, $UploadFile_2, $Ftp_FileName_2) ;~ dito
GUICtrlDelete($label_4)
If $Ftpp = 1 Then ;~ Rückmeldung vom Server
GUICtrlDelete($label_5)
$label_5 = GUICtrlCreateLabel("Dateien wurden erfolgreich hoch geladen.", 10, 560, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(1500)
Else
GUICtrlDelete($label_5)
$label_5 = GUICtrlCreateLabel("DATEIEN WURDEN NICHT HOCHGELADEN!", 10, 560, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(3000)
EndIf
Local $Ftpc = _FTP_Close($Open) ;~ FTP schliessen
GUICtrlDelete($label_4)
$label_4 = GUICtrlCreateLabel("FTP-Verbindung geschlossen!", 10, 520, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Sleep(3000)
GUICtrlDelete($label_2)
GUICtrlDelete($label_3)
GUICtrlDelete($label_4)
GUICtrlDelete($label_5)
$encr = 0
EndIf
Else
MsgBox(0, " Fehler", "INI vor dem Hochladen bitte verschlüsseln!!!")
Sleep(1000)
GUICtrlDelete($label_1)
$encr = 0
EndIf
GUISetState(@SW_ENABLE, $WinMain)
GUICtrlDelete($label_2)
GUICtrlDelete($label_4)
GUICtrlDelete($label_5)
$label_4 = GUICtrlCreateLabel("Fertig....", 10, 520, 585, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE))
Case $EndButton
Return
EndSwitch
WEnd
EndFunc ;==>_Main
autoit.de/wcf/attachment/9408/
nen Icon wollte er mir nicht hochladen...ist nicht erlaubt...
Könnte man das schöner machen, oder besser?
Edit: Kritik ist erwünscht, wenn es produktiv ist....