Code : Tout sélectionner
#include <FTPEx.au3>
#Include <File.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#region variable globale
Global _
$server = 'xxxx.ftp.xxxx', _ ; votre serveur
$username = 'xxxxxxx', _ ; votre username
$pass = 'xxxxxxxx', _ ; votre mot de passe
$Open , _
$Conn, _
$fichier[3]=["/game/minecraft_cb/plugins/Permissions/world/users.yml", _
"/game/minecraft_cb/plugins/Permissions/world_nether/users.yml", _
"/game/minecraft_cb/plugins/Permissions/world_the_end/users.yml"], _
$aReplace="", _
$replace="", _
$pseudo =""
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Wardow", 337, 185, 192, 124)
Global $pseudoG = GUICtrlCreateInput("", 8, 32, 129, 21)
Global $labPseudo = GUICtrlCreateLabel("Pseudo", 8, 8, 40, 17)
Global $aDel = GUICtrlCreateInput("", 8, 88, 129, 21)
Global $labAdel = GUICtrlCreateLabel("Quoi Delete ?", 8, 64, 69, 17)
Global $aReplaceG = GUICtrlCreateInput("", 8, 141, 129, 21)
Global $labReplace = GUICtrlCreateLabel("Replace Par ?", 8, 117, 72, 17)
Global $GO = GUICtrlCreateButton("GO", 160, 32, 169, 129, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
#endregion variable globale
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GO
$aReplace = GUICtrlRead($aDel)
$replace = GUICtrlRead($aReplaceG)
$pseudo = GUICtrlRead($pseudoG)
If $aReplace <> "" And $replace <> "" And $pseudo <> "" Then
_WardowGo()
Else
MsgBox(64,"erreur","veuillez remplir tout les champs")
EndIf
EndSwitch
WEnd
Func _WardowGo()
$Open = _FTP_Open('MyFTP Panda')
If @error Then
_ErrorOpen()
Else
$Conn = _FTP_Connect($Open, $server, $username, $pass)
If @error Then
_ErrorOpen()
Else
For $i=0 To UBound($fichier)-1
modifFileFTP($Conn,$fichier[$i],$pseudo,$aReplace,$replace,@TempDir&"\"&@AutoItPID&$i)
Next
EndIf
_FTP_Close($Open)
EndIf
EndFunc
Func modifFileFTP($Conn,$remoteFile,$user,$groups,$modifGroups,$localFile)
_FTP_FileGet($Conn,$remoteFile,$localFile)
If @error Then
_ErreurFTPGet($Conn)
Else
_ReplaceStringInFile2($localFile,$user,$groups,$modifGroups)
If @error Then
_ErreurModifFile($Conn)
Else
_FTP_FileDelete($Conn,$remoteFile)
If @error Then
_ErreurDeleteFileFTP($Conn)
Else
_FTP_FilePut($Conn,$localFile,$remoteFile)
If @error Then
_ErreurDeleteFileFTP($Conn)
Else
FileDelete($localFile)
EndIf
EndIf
EndIf
EndIf
EndFunc
#cs _ReplaceStringInFile2($pathFile,$regexAModif,$modif)
@PARAM:
# $pathFile : le fichier
# $user : le nom, ex : Niico, ...
# $groups : le groupe a modifier, ex : 'Membre'
# $modifGroups : Par quoi modifier le groupe, par ex : 'Admin'
@ERROR | @EXTEND:
# 1 | 1 : erreur ouverture de fichier pour la lecture
# 1 | 2 : erreur lors de la lecture
# 1 | 3 : erreur ouverture pour l'ecriture
# 1 | 4 : erreur lors de l'ecriture
#ce
Func _ReplaceStringInFile2($pathFile,$user,$groups,$modifGroups)
Local $hfile = FileOpen($pathFile,0)
If $hfile = -1 Then Return SetError(1,1,"")
Local $readFile = FileRead($hfile)
If @error = 1 Then Return SetError(1,2,"")
Local $whereIsUser = StringInStr($readFile,$groups,0,1,StringInStr($readFile,$user))
Local $left = StringLeft($readFile,$whereIsUser-1) ; partie a gauche du texte
$readFile = $left&$modifGroups&StringRight($readFile,StringLen($readFile)-StringLen($left)-StringLen($groups))
FileClose($hfile)
$hfile = FileOpen($pathFile,2)
If $hfile = -1 Then Return SetError(1,3,"")
FileWrite($hfile,$readFile)
If @error = 1 Then Return SetError(1,4,"")
FileClose($hfile)
Return SetError(0,0,"")
EndFunc
#region ERREUR
Func _ErrorOpen()
MsgBox(64,"erreur","erreur avec le ftp fichier non modifié")
EndFunc
Func _ErreurFTPGet($Conn)
_FTP_Close($Open)
MsgBox(0,'erreur',"erreur de recuperation du fichier sur le ftp, vérifier le chemin ...")
EndFunc
Func _ErreurModifFile($Conn)
_FTP_Close($Open)
MsgBox(0,'erreur',"erreur de modification du fichier")
EndFunc
Func _ErreurDeleteFileFTP($Conn)
_FTP_Close($Open)
MsgBox(0,'erreur',"erreur de suppresion de l'ancien fichier sur le FTP")
EndFunc
Func _ErreurPUTFileFTP($Conn)
_FTP_Close($Open)
MsgBox(0,'erreur',"erreur d'ajout du nouveau fichier sur le FTP")
EndFunc
#endregion ERREUR