He Leute,
ich habe wieder ein Problem und zwar trennt der FTP Server mit der Zeit die Verbindung, das ist vorher nicht passiert, erst als ich eine ProgressBar eingebaut habe.
Script:
Spoiler anzeigen
#include <Array.au3>
#include <FTPEx.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$foldername = "minesynctestserver"
$folder = @ScriptDir & "\" & $foldername
Global $possible = 1
Global $disabled = 0
Global $status = "ready"
Global $newstatus = 1
Global $serveron = 0
Global $worldname = "world"
Global $FTPUser = 'minesync', $FTPPass = '##########', $FTPServer = 'minesync.bplaced.de'
$Minesync = GUICreate("Minesync", 404, 220, 206, 134)
$Label1 = GUICtrlCreateLabel("Lade Minesync...", 16, 8, 358, 52)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Abbrechen", 0, 64, 401, 121, $WS_GROUP)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$Progress1 = GUICtrlCreateProgress(0, 184, 401, 33)
GUISetState(@SW_SHOW)
While 1
If GUIGetMsg() = $Button1 Then Exit
if $possible = 0 And $disabled = 0 Then
GUICtrlSetState($Button1,$GUI_DISABLE)
$disabled = 1
ElseIf $possible = 1 And $disabled = 1 Then
GUICtrlSetState($Button1,$GUI_ENABLE)
$disabled = 0
EndIf
if $newstatus = 1 Then
if $status = "checkversion" Or $status = "waitcancel" Then
GUICtrlSetData($Label1,"Überprüfe Version...")
$newstatus = 0
Elseif $status = "sync" Then
GUICtrlSetData($Label1,"Synchronisieren...")
$newstatus = 0
EndIf
EndIf
Switch $status
Case "ready"
$status = "checkversion"
Case "checkversion"
GUICtrlSetState($Button1,$GUI_DISABLE)
Global $file = 'serverversion.ini'
Global $ziel = @TempDir & "\serverversion.ini"
Global $hFTPOpen = _FTP_Open('FTP Control')
Global $hFTPConn = _FTP_Connect($hFTPOpen,$FTPServer, $FTPUser, $FTPPass)
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,2)
$versionserver = IniRead(@TempDir & "\serverversion.ini","server","version","notfound")
$versionclient = IniRead("thisversion.ini","server","version","notfound")
if $versionclient = "notfound" or $versionserver = "notfound" Then
MsgBox(48,"FEHLER CODE:1","ini fehlerhaft, versionsabgleich, serverversion.ini:" & $versionserver & ",thisversion.ini: " & $versionclient)
_FTP_Close($hFTPOpen)
Exit
EndIf
if $versionclient < $versionserver Then
GUICtrlSetState($Button1,$GUI_ENABLE)
$status = "waitcancel"
$canceltimer = TimerInit()
ElseIf $versionclient > $versionserver Then
MsgBox(48,"FEHLER CODE:2","Die Version im Client ist neuer als die im Server, das heißt der Upload wurde abgebrochen")
_FTP_Close($hFTPOpen)
Exit
ElseIf $versionclient = $versionclient Then
$status = "startserver"
EndIf
Case "waitcancel"
if $canceltimer > 3000 Then
$status = "sync"
$possible = 0
EndIf
Case "startserver"
MsgBox(0,"TEST","Das passiert, wenn die versionen übereinstimmen!")
_FTP_Close($hFTPOpen)
Exit
Case "sync"
MsgBox(0,"TEST","Hier kommt dann die Synchronisation hin")
$file = 'serverstate.ini'
$ziel = @TempDir & "\serverstate.ini"
_FTP_FileGet($hFTPConn,$file,$ziel)
$runninggrusim = IniRead(@TempDir & "\serverstate.ini","serverstatus","serverrunninggrusim","notfound")
$syncgrusim = IniRead(@TempDir & "\serverstate.ini","serverstatus","serversyncgrusim","notfound")
GUICtrlSetData($Progress1,5)
MsgBox(0,"Passed","Get passed")
If $runninggrusim = "notfound" or $syncgrusim = "notfound" Then
MsgBox(48,"FEHLER","ini fehlerhaft")
_FTP_Close($hFTPOpen)
Exit
EndIf
If $runninggrusim = 1 Then
Switch MsgBox(292,"WARNUNG","Der Server auf dem anderen Computer läuft noch, möchten sie ihn beenden?")
Case 6
GUICtrlSetData($Label1,"Synchronisieren...")
IniWrite($ziel,"serverstatus","pleaseclosegrusim",1)
$succ = _FTP_FilePut($hFTPConn,$ziel,$file)
if $succ = 0 Then
MsgBox(48,"FEHLER: 3","Es ist ein Fehler beim Upload aufgetreten: serverstatus.ini")
_FTP_Close($hFTPOpen)
Exit
EndIf
while 1
GUICtrlSetData($Label1,"Warte auf PC2...")
sleep(1000)
_FTP_FileGet($hFTPConn,$file,$ziel)
$runninggrusim = IniRead(@TempDir & "\serverstate.ini","serverstatus","serverrunninggrusim","notfound")
$syncgrusim = IniRead(@TempDir & "\serverstate.ini","serverstatus","serversyncgrusim","notfound")
$requestgrusim = IniRead (@TempDir & "\serverstate.ini","serverstatus","pleaseclosegrusim","notfound")
if $runninggrusim = "notfound" or $syncgrusim = "notfound" or $requestgrusim = "notfound" Then
MsgBox(48,"FEHLER: 4","Ein Fehler ist aufgetreten: serverstate.ini invalid")
_FTP_Close($hFTPOpen)
Exit
EndIf
if $runninggrusim = 1 and $requestgrusim = 0 Then
MsgBox(48,"FEHLER: 5","Der andere Nutzer hat das beenden abgelehnt.")
_FTP_Close($hFTPConn)
Exit
ElseIf $runninggrusim = 0 and $syncgrusim = 0 Then
Call("Download")
Call("start")
Endif
Wend
Case 7
MsgBox(64,"Abbruch durch Nutzer","Vorgang abgebrochen")
_FTP_Close($hFTPOpen)
Exit
EndSwitch
ElseIf $syncgrusim = 1 Then
MsgBox(64,"Vorgang abgebrochen","Der andere Computer synchronisiert gerade noch, bitte versuchen sie es später erneut")
_FTP_Close($hFTPOpen)
Exit
Else
MsgBox(0,"","Download über Else")
Call("Download")
Call ("start")
EndIf
EndSwitch
WEnd
Func Download()
GuiCtrlSetData($Progress1,10)
Local $aResult[1]
Local $sLocal = $folder & "\" ;<======= anpassen Pfad in dem die heruntergeladenen Dateien gespeichert werden
Local $s_LocalFile
GUICtrlSetData($Label1,"Synchronisieren...")
DirCopy($folder & "\" & $worldname,$folder & "\" & $worldname & "_backup",1)
DirCopy($folder & "\" & $worldname & "_nether",$folder & "\" & $worldname & "_nether" & "_backup",1)
DirCopy($folder & "\" & $worldname & "_the_end",$folder & "\" & $worldname & "_the_end" & "_backup",1)
_FTP_FileList_Rekursiv($aResult, "/" & $worldname & "/")
If $aResult[0] > 0 Then
For $i = 1 To $aResult[0]
$s_LocalFile = $sLocal & "\" & StringTrimLeft($aResult[$i], 1)
$s_LocalFile = StringReplace($s_LocalFile, "/", "\")
_createLocalDirIfNecessary($s_LocalFile)
ConsoleWrite("Download: " & $aResult[$i] & @TAB)
;#cs
If _FTP_FileGet($hFTPConn, $aResult[$i], $s_LocalFile) Then
ConsoleWrite("erfolgreich ")
Else
ConsoleWrite("fehlgeschlagen " & @error)
EndIf
;#ce
ConsoleWrite(@CRLF)
Next
Else
MsgBox(48,"FEHLER","Keine Dateien zum Herunterladen gefunden" & @CRLF)
_FTP_Close($hFTPOpen)
Exit
EndIf
MsgBox(0,"TEST","Finnisch mit normal")
GUICtrlSetData($Progress1,30)
Local $aResult[1]
Local $sLocal = @ScriptDir & "\" & $folder & "\"
Local $s_LocalFile = ""
_FTP_FileList_Rekursiv($aResult, "/" & $worldname & "_nether" & "/")
If $aResult[0] > 0 Then
For $i = 1 To $aResult[0]
$s_LocalFile = $sLocal & "\" & StringTrimLeft($aResult[$i], 1)
$s_LocalFile = StringReplace($s_LocalFile, "/", "\")
_createLocalDirIfNecessary($s_LocalFile)
ConsoleWrite("Download: " & $aResult[$i] & @TAB)
;#cs
If _FTP_FileGet($hFTPConn, $aResult[$i], $s_LocalFile) Then
ConsoleWrite("erfolgreich ")
Else
ConsoleWrite("fehlgeschlagen " & @error)
EndIf
;#ce
ConsoleWrite(@CRLF)
Next
Else
MsgBox(48,"FEHLER","Keine Dateien zum Herunterladen gefunden" & @CRLF)
EndIf
MsgBox(0,"TEST","Finnisch mit Nether")
GUICtrlSetData($Progress1,60)
Local $aResult[1]
Local $sLocal = @ScriptDir & "\" & $folder & "\"
Local $s_LocalFile = ""
_FTP_FileList_Rekursiv($aResult, "/" & $worldname & "_the_end" & "/")
If $aResult[0] > 0 Then
For $i = 1 To $aResult[0]
$s_LocalFile = $sLocal & "\" & StringTrimLeft($aResult[$i], 1)
$s_LocalFile = StringReplace($s_LocalFile, "/", "\")
_createLocalDirIfNecessary($s_LocalFile)
ConsoleWrite("Download: " & $aResult[$i] & @TAB)
;#cs
If _FTP_FileGet($hFTPConn, $aResult[$i], $s_LocalFile) Then
ConsoleWrite("erfolgreich ")
Else
ConsoleWrite("fehlgeschlagen " & @error)
EndIf
;#ce
ConsoleWrite(@CRLF)
Next
Else
MsgBox(48,"FEHLER","Keine Dateien zum Herunterladen gefunden" & @CRLF)
EndIf
MsgBox(0,"TEST","Finnisch mit The Ende")
GUICtrlSetData($Progress1,90)
$file = 'craftbukkit.jar'
$ziel = $folder & "\craftbukkit.jar"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,91)
$file = 'banned-ips.txt'
$ziel = $folder & "\banned-ips.txt"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,92)
$file = 'banned-players.txt'
$ziel = $folder & "\banned.ips.txt"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,93)
$file = 'bukkit.yml'
$ziel = $folder & "\bukkit.yml"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,94)
$file = 'help.yml'
$ziel = $folder & "help.yml"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,95)
$file = 'ops.txt'
$ziel = $folder & "ops.txt"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,96)
$file = 'permissions.yml'
$ziel = $folder & "permissions.yml"
_FTP_FileGet($hFTPConn,$file,$ziel)
$file = 'server.log'
$ziel = $folder & "server.log"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,97)
$file = 'server.properties'
$ziel = $folder & "server.properties"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,98)
$file = 'white-list.txt'
$ziel = $folder & "white-list.txt"
_FTP_FileGet($hFTPConn,$file,$ziel)
GUICtrlSetData($Progress1,99)
MsgBox(0,"TEST","Finnisch mit Anderes")
Return
EndFunc
Func start()
MsgBox(0,"GO START","GO START")
_FTP_Close($hFTPOpen)
Exit
EndFunc
;===============================================================================
; Function Name: _createLocalDirIfNecessary($s_LocalFile)
; Description:: prüft ob für eine Datei die Verzeichnisstruktur besteht, falls nötig wird diese angelegt
; Parameter(s): $s_LocalFile Dateuname für den die Verzeichnisstruktur geprüft werden soll
; Author(s): AutoBert (http://www.autoit.de)
;===============================================================================
Func _createLocalDirIfNecessary($s_LocalFile)
Local $aLocalPath = StringSplit($s_LocalFile, "\") ;hier lokale Pfad erstellen falls notwendig
Local $sLocalPath = ""
For $j = 1 To $aLocalPath[0] - 1
$sLocalPath &= $aLocalPath[$j] & "\"
If Not FileExists($sLocalPath) And Not StringInStr($aLocalPath[$j], ":") Then
;ConsoleWrite($sLocalPath & @CRLF)
DirCreate($sLocalPath)
EndIf
Next
EndFunc ;==>_createLocalDirIfNecessary
;===============================================================================
; Function Name: _FTP_FileList_Rekursiv($aResult, $sPath, $bFolders)
; Description:: füllt ein Array mit Dateien (und Verzeichnissen wenn $bFolders true) des FTP-Pfades inkl. aller Unterverzeichnisse
; Parameter(s): $aResult = das Array in dem die Ergebnisse eingefügt werden
; $sPath = Verzeichnispfad, der eingefügt werden soll
; $bFolders = True = auch Verzeichnisse einfügen, False = nur Dateien, Default = nur Dateien
; Author(s): AutoBert (http://www.autoit.de)
;===============================================================================
Func _FTP_FileList_Rekursiv(ByRef $aResult, $sPath, $bFolders = False)
Local $aFiles, $aFolders
If $sPath <> "" Then
_FTP_DirSetCurrent($hFTPConn, $sPath)
$sPath = _FTP_DirGetCurrent($hFTPConn)
EndIf
$aFolders = _FTP_ListToArray($hFTPConn, 1)
;_ArrayDisplay($aFolders)
If IsArray($aFolders) Then
If $aFolders[0] > 0 Then
For $i = 1 To $aFolders[0]
If $aFolders[$i] <> '.' And $aFolders[$i] <> '..' Then
ConsoleWrite("Folder: " & $sPath & "/" & $aFolders[$i] & @CRLF)
If $bFolders Then _ArrayAdd($aResult, $sPath & "/" & $aFolders[$i])
_FTP_FileList_Rekursiv($aResult, $sPath & "/" & $aFolders[$i], $bFolders)
EndIf
Next
EndIf
EndIf
$aFiles = _FTP_ListToArray($hFTPConn, 2)
If IsArray($aFiles) Then
;_ArrayDisplay($aFiles)
If $aFiles[0] > 0 Then
For $i = 1 To $aFiles[0]
_ArrayAdd($aResult, $sPath & "/" & $aFiles[$i])
ConsoleWrite("File: " & $sPath & "/" & $aFiles[$i] & @CRLF)
Next
EndIf
EndIf
$aResult[0] = UBound($aResult) - 1
EndFunc ;==>_FTP_FileList_Rekursiv
Hier der Log:
Spoiler anzeigen
>"D:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "D:\Server\minesync test\minesync.au3" /autoit3dir "D:\Program Files (x86)\AutoIt3" /UserParams
+>14:39:21 Starting AutoIt3Wrapper v.2.0.1.24 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64)
>Running AU3Check (1.54.22.0) from:D:\Program Files (x86)\AutoIt3
+>14:39:21 AU3Check ended.rc:0
>Running:(3.3.8.1):D:\Program Files (x86)\AutoIt3\autoit3.exe "D:\Server\minesync test\minesync.au3"
Folder: /world/data
Folder: /world/players
Folder: /world/region
File: /world/region/r.-1.0.mca
File: /world/r.-1.0.mca
Download: /world/region/r.-1.0.mca erfolgreich
Download: /world/r.-1.0.mca fehlgeschlagen -1
Folder: /world_nether/DIM-1
Folder: /world_nether/DIM-1/region
File: /world_nether/DIM-1/region/r.-1.-1.mca
File: /world_nether/DIM-1/region/r.-1.0.mca
File: /world_nether/DIM-1/region/r.0.-1.mca
File: /world_nether/DIM-1/region/r.0.0.mca
File: /world_nether/DIM-1/r.-1.-1.mca
File: /world_nether/DIM-1/r.-1.0.mca
File: /world_nether/DIM-1/r.0.-1.mca
File: /world_nether/DIM-1/r.0.0.mca
Folder: /world_nether/data
Folder: /world_nether/players
Download: /world_nether/DIM-1/region/r.-1.-1.mca fehlgeschlagen -1
Download: /world_nether/DIM-1/region/r.-1.0.mca fehlgeschlagen -1
Download: /world_nether/DIM-1/region/r.0.-1.mca fehlgeschlagen -1
Download: /world_nether/DIM-1/region/r.0.0.mca fehlgeschlagen -1
Download: /world_nether/DIM-1/r.-1.-1.mca fehlgeschlagen -1
Download: /world_nether/DIM-1/r.-1.0.mca fehlgeschlagen -1
Download: /world_nether/DIM-1/r.0.-1.mca fehlgeschlagen -1
Download: /world_nether/DIM-1/r.0.0.mca fehlgeschlagen -1
Folder: /world_the_end/DIM1
Folder: /world_the_end/DIM1/region
File: /world_the_end/DIM1/region/r.-1.-1.mca
File: /world_the_end/DIM1/region/r.-1.0.mca
File: /world_the_end/DIM1/region/r.0.-1.mca
File: /world_the_end/DIM1/region/r.0.0.mca
File: /world_the_end/DIM1/r.-1.-1.mca
File: /world_the_end/DIM1/r.-1.0.mca
File: /world_the_end/DIM1/r.0.-1.mca
File: /world_the_end/DIM1/r.0.0.mca
Folder: /world_the_end/data
Folder: /world_the_end/players
Download: /world_the_end/DIM1/region/r.-1.-1.mca fehlgeschlagen -1
Download: /world_the_end/DIM1/region/r.-1.0.mca fehlgeschlagen -1
Download: /world_the_end/DIM1/region/r.0.-1.mca fehlgeschlagen -1
Download: /world_the_end/DIM1/region/r.0.0.mca fehlgeschlagen -1
Download: /world_the_end/DIM1/r.-1.-1.mca fehlgeschlagen -1
Download: /world_the_end/DIM1/r.-1.0.mca fehlgeschlagen -1
Download: /world_the_end/DIM1/r.0.-1.mca fehlgeschlagen -1
Download: /world_the_end/DIM1/r.0.0.mca fehlgeschlagen -1
+>14:40:02 AutoIT3.exe ended.rc:0
>Exit code: 0 Time: 42.894
Alles anzeigen
Ich hoffe ihr könnt mir weiterhelfen
Mfg Fliwatt