FTP Suite v2.1, Suite per gestire server FTP

« Older   Newer »
  Share  
Grandebestia
CAT_IMG Posted on 27/7/2010, 20:29     +1   -1




Ecco l'ennesima versione molto completa di FTP Suite.
Installer scaricabile da qui.

Source (solo per Autoit Fanclub) xD
SPOILER (click to view)
If $cmdline[0] = 1 Then
$send_to = $cmdline[1]
Else
$send_to = False
EndIf

#cs ----------------------------------------------------------------------------

AutoIt Version: 3.3.4.0
Author: Grandebestia

Script Function:
Suite per amministrare file in server ftp.
History:
v1.0 13/04/2010 inizio sviluppo
v1.1 26/04/2010 fixato bug autoscroll e modifiche varie
v1.2 27/04/2010 modifiche varie
v1.3 19/06/2010 aggiunto possibilià di riconnettersi fixato qualche bug
v1.4 20/06/2010 aggiunto refresh lista, modifiche varie
v1.5 23/06/2010 possibilità di cambiare dir, dir management, modifiche varie
v1.6 24/06/2010 aggiunta progress bar, modifiche varie
v1.7 25/06/2010 aggiunto edita file di testo, modifiche varie
v1.8 27/06/2010 aggiunto periodo di inattività e opzioni di riconnessione automatica e modalità passiva e porta di connessione, modifiche varie
v1.9 28/06/2010 agginto possibilità di andare al sito, ritrovare il link per il file, modifiche varie
v1.9b 29/06/2010 fixato bug eliminazione cartella, modifiche varie
v2.0 30/06/2010 aggiunta statusbar
v2.0b 05/07/2010 aggiunto beep al termine del tempo, icon tray, e più tray tip, modifiche varie
v2.1 28/07/2010 aggiunta possibilità di inviare al server tramite "Send to", fixati bug vari
Messaggio:
O tu persona ignobile che hai osato decompilare questo splendito programma (spero solo per scopi ditattici) leggi il mio messaggio: VAI A FANCULO STRONZO TESTA DI MINCHIA DECOMPILATA!!! e aggiungimi su MSN [email protected]
#ce ----------------------------------------------------------------------------

;include region
#include <ftpex.au3>
#include <guiconstantsex.au3>
#Include <guilistview.au3>
#include <guiedit.au3>
#include <file.au3>
#include <misc.au3>
#include <guistatusbar.au3>

;declare-vars region
Opt("TrayMenuMode", 1)
$ini_dir = @ScriptDir & "\cfg_ftp.ini"
$var_file = 0
$ver = "v2.1"
$qst = ""
$init_dir = @ScriptDir
$reconnect = False
$diff = 0
$statusbar = 0
$title = "FTP Suite " & $ver
Local $conn
Local $btn_add, $btn_del, $btn_ren, $btn_down
;gui-objects region
If FileExists ($ini_dir) Then
FileSetAttrib ($ini_dir, "+H")
EndIf

If Not FileExists (@UserProfileDir & "\SendTo\Server FTP") Then
FileCreateShortcut (@scriptfullpath, @UserProfileDir & "\SendTo\Server FTP")
EndIf
gui_login ()

$gui = GUICreate ($title, 500, 475) ;gui vera
$log_edit = GUICtrlCreateEdit (log_time () & "Aperto FTP Suite " & $ver & @CRLF & log_time () & "Tentativo di connessione in corso su: " & $server, 10, 10, 480, 80)
_GUICtrlEdit_SetReadOnly ($log_edit, true)
GUICtrlCreateGroup ("File management", 5, 100, 490, 325)
$label_dir = GUICtrlCreateLabel ("I file presenti in " & $server & "/ sono:", 10, 120, 470, 15)
$file_list = GUICtrlCreateListView ("Nome|Dimensione|Data ultima modifica", 10, 140, 480, 230, 0x0008)
_GUICtrlListView_SetColumnWidth ($file_list, 0, 265)
GUICtrlSetState ($log_edit, $gui_nofocus)
$menu_file = GUICtrlCreateMenu ("File")
$file_makelog = GUICtrlCreateMenuItem ("Salva file .log", $menu_file)
$file_retrive_link = GUICtrlCreateMenuItem ("Copia negli appunti l'url del file", $menu_file)
$file_edit = GUICtrlCreateMenuItem ("Modifica file di testo", $menu_file)
GUICtrlCreateMenuItem ("", $menu_file)
$menu_dir = GUICtrlCreateMenu ("Dir management", $menu_file)
$dir_make_dir = GUICtrlCreateMenuItem ("Crea directory", $menu_dir)
$dir_delete_dir = GUICtrlCreateMenuItem ("Elimina directory", $menu_dir)
$file_change_dir = GUICtrlCreateMenuItem ("Cambia dir remota", $menu_file)
$menu_conn = GUICtrlCreateMenu ("Connessione")
$conn_server = GUICtrlCreateMenuItem ("Riconnettiti su: " & $server, $menu_conn)
$conn_new_server = GUICtrlCreateMenuItem ("Esci da: " & $server, $menu_conn)
GUICtrlCreateMenuItem ("", $menu_conn)
$conn_server_port = GUICtrlCreateMenuItem ("Modifica la porta di connessione", $menu_conn)
$conn_passive_mode = GUICtrlCreateMenuItem ("Modalità di connessione", $menu_conn)
$conn_reconnect = GUICtrlCreateMenuItem ("Riconnessione automatica", $menu_conn)
$menu_site = GUICtrlCreateMenu ("Sito")
$site_go = GUICtrlCreateMenuItem ("Vai al sito", $menu_site)
$btn_add = GUICtrlCreateButton ("Aggiungi file", 20, 390, 100, Default)
$btn_del = GUICtrlCreateButton ("Elimina file", 140, 390, 100, Default)
$btn_ren = GUICtrlCreateButton ("Rinomina file", 260, 390, 100, Default)
$btn_down = GUICtrlCreateButton ("Scarica file", 380, 390, 100, Default)
GUICtrlSetState ($btn_add, $gui_hide)
GUICtrlSetState ($btn_del, $gui_hide)
GUICtrlSetState ($btn_ren, $gui_hide)
GUICtrlSetState ($btn_down, $gui_hide)
$statusbar = _GUICtrlStatusBar_Create ($gui)
Dim $parts [2] = [110, 150]
_GUICtrlStatusBar_SetParts ($statusbar, $parts)
_GUICtrlStatusBar_SetText ($statusbar, "Status: Disconnesso")
$tray_exit = TrayCreateItem ("Esci")
TrayCreateItem ("")
$tray_credits = TrayCreateItem ("Crediti")
Sleep (100)
GUISetState ()
$ftto = _FTP_Open ("FTP suite")
connessione ()
If $send_to <> False Then
$dir_file = $send_to
$dir_spl = StringSplit ($dir_file, "\")
add_event ("Tentativo di upload di: " & $dir_file)
$upload = ProgressUpload ($conn, $dir_file, $dir_spl[$dir_spl[0]])
if $upload = 1 Then
$find_text = _GUICtrlListView_FindText ($file_list, $dir_spl[$dir_spl[0]])
If $find_text <> -1 Then
_GUICtrlListView_DeleteItem ($file_list, $find_text)
EndIf
$dim = FileGetSize ($dir_file) /1000
$get_time = FileGetTime ($dir_file)
$date = $get_time[2] & "/" & $get_time[1] & "/" & $get_time[0] & " " & $get_time[3] & ":" & $get_time[4] & ":00" ;così viene uguale xD
GUICtrlCreateListViewItem ($dir_spl[$dir_spl[0]] & "|" & $dim & " KB|" & $date, $file_list)
add_event ("Upload riuscito!")
$timer = TimerInit ()
Else
add_event ("Upload fallito!")
EndIf
EndIf
Do ;ciclo gui vera
$tray_msg = TrayGetMsg ()
If $tray_msg = $tray_exit Then
_FTP_Close ($ftto)
Exit
ElseIf $tray_msg = $tray_credits Then
MsgBox (0, $title, "Il programma FTP Suite " & $ver & " è stato interamente programmato da Grandebestia (TGB)." & @crlf & "Un' idea di Grandebestia.")
TrayItemSetState ($tray_credits, 4) ;leva il checked
EndIf
$msg = GUIGetMsg ($gui)
Switch $msg
Case $file_makelog
$dir_log = @scriptdir & "\" & @MDAY & "." & @MON & "." & @YEAR & ".log"
$log_text = GUICtrlRead ($log_edit)
$open_log = FileOpen ($dir_log, 1)
FileWrite ($open_log, $log_text & @CRLF)
FileClose ($open_log)
TrayTip ($title, "File di log creato", 2)
Case $file_change_dir
$gui_dir = GUICreate ("Cambia dir remota", 300, 200, Default, Default, Default, Default, $gui)
GUICtrlCreateLabel ("Lista delle directory remote in: " & $server, 10, 10, 280, 30)
$list_dir = GUICtrlCreateList ("parent", 10, 50, 280, 100)


$list_to_array = _Ftp_ListToArray2D ($conn, 1)

If $list_to_array = 0 Then ;controlla se nella dir non ci sia un'altra dir
_FTP_DirSetCurrent ($conn, "/")
$list_to_array = _Ftp_ListToArray2D ($conn, 1)
EndIf


For $a = 1 To $list_to_array[0][0]
GUICtrlSetData ($list_dir, $list_to_array[$a][0])
Next
$btn_sel = GUICtrlCreateButton ("Seleziona directory", 10, 170, 280)
GUISetState (@SW_SHOW, $gui_dir)

Do
$msg_dir = GUIGetMsg ()
If $msg_dir = $btn_sel Then
$sel_dir = GUICtrlRead ($list_dir)
If $sel_dir = "parent" Then
$sel_dir = ""
EndIf
GUIDelete ($gui_dir)
_FTP_DirSetCurrent ($conn, $sel_dir)

Sleep (100)
refresh ()
GUICtrlSetData ($label_dir, "I file presenti in " & $server & "/" & $sel_dir & " sono:")
$timer = TimerInit ()
ExitLoop
EndIf
Until $msg_dir = -3
GUIDelete ($gui_dir)

Case $file_edit
$file_sel = file_sel ()
If $file_sel = "0" Then
MsgBox (16, $title, "Errore, nessun file selezionato!")
ContinueLoop
EndIf
$split = StringSplit ($file_sel, ".")
$ext = $split[$split[0]]
$dir_file = @TempDir & "\file FTP." & $ext
_FTP_FileGet ($conn, $file_sel, $dir_file)
$open = FileOpen ($dir_file, 0)
$text = FileRead ($open)
FileClose ($open)
$gui_edit = GUICreate ($file_sel & " - Editor di FTP Suite " & $ver & " by Grandebestia (TGB)" , 700, 500)
$edit = GUICtrlCreateEdit ($text, 10, 10, 680, 450)
$btn_save = GUICtrlCreateButton ("Salva file", 10, 470, 680)
GUICtrlSetState ($btn_save, $gui_focus)
GUISetState (@SW_SHOW, $gui_edit)

Do
$msg_edit = GUIGetMsg ()
If $msg_edit = $btn_save Then
$new_text = GUICtrlRead ($edit)
$open = FileOpen ($dir_file, 2)
FileWrite ($open, $new_text)
FileClose ($open)
$index = get_index_handle ($file_sel)
_GUICtrlListView_DeleteItem ($file_list, $index)
GUIDelete ($gui_edit)
$dim = FileGetSize ($dir_file) /1000
$get_time = FileGetTime ($dir_file)
$date = $get_time[2] & "/" & $get_time[1] & "/" & $get_time[0] & " " & $get_time[3] & ":" & $get_time[4] & ":00" ;così viene uguale xD
GUICtrlCreateListViewItem ($file_sel & "|" & $dim & " KB|" & $date, $file_list)
$put = _FTP_FilePut ($conn, $dir_file, $file_sel)
If $put = 1 Then
add_event ("Il file: " & $file_sel & " è stato modificato con successo!")
$timer = TimerInit ()
$msg_edit = -3
Else
add_event ("Il file non è stato modificato.")
$msg_edit = -3
EndIf
EndIf
Until $msg_edit = -3
GUIDelete ($gui_edit)
Sleep (500)
FileDelete ($dir_file)
Case $file_retrive_link
$file_sel = file_sel ()
If $file_sel = "0" Then
MsgBox (16, $title, "Errore, nessun file selezionato!")
ContinueLoop
EndIf
$current = _FTP_DirGetCurrent ($conn)
If $current <> "/" Then
$current = $current & "/"
EndIf
$url = "http://" & $server & $current & $file_sel
$url = StringReplace ($url, " ", "%20")
TrayTip ($title, "Link aggiunto negli appunti:" & @CRLF & $url, 2)
ClipPut ($url)

Case $dir_make_dir
$dir_name = InputBox ($title, "Inserisci un nome.")
If @error = 1 Then
ContinueLoop
EndIf
$create = _FTP_DirCreate ($conn, $dir_name)
If $create = 1 Then
add_event ("La dir: " & $dir_name & " è stata creata con successo!")
$timer = TimerInit ()
Else
add_event ("A causa di un errore sconosciuto la dir non è stata creata.")
EndIf
Case $dir_delete_dir
$old_dir = _FTP_DirGetCurrent ($conn)
$gui_dir = GUICreate ("Elimina dir remota", 300, 200, Default, Default, Default, Default, $gui)
GUICtrlCreateLabel ("Lista delle directory remote in: " & $server & _FTP_DirGetCurrent ($conn), 10, 10, 280, 30)
$list_dir = GUICtrlCreateList ("", 10, 50, 280, 100)
;~
$list_to_array = _Ftp_ListToArray2D ($conn, 1)
If $list_to_array = 0 Then ;controlla se nella dir non ci sia un'altra dir
_FTP_DirSetCurrent ($conn, "/")
$list_to_array = _Ftp_ListToArray2D ($conn, 1)
EndIf
For $a = 1 To $list_to_array[0][0]
GUICtrlSetData ($list_dir, $list_to_array[$a][0])
Next
$btn_sel = GUICtrlCreateButton ("Elimina directory", 10, 170, 280)
GUISetState (@SW_SHOW, $gui_dir)

Do
$msg_dir = GUIGetMsg ()
If $msg_dir = $btn_sel Then
$sel_dir = GUICtrlRead ($list_dir)
$quest = MsgBox (36, $title, "Vuoi davvero eliminare la directory " & $sel_dir & "?")
If $quest = 7 Then
ContinueLoop
EndIf
_FTP_DirSetCurrent ($conn, $sel_dir)
$array = _FTP_ListToArrayEx ($conn, 2, "", 0) ;dv usare _FTP_ListToArrayEx !!!!
If $array <> 0 Then ;non c'è nessun File
$var_file = 0
Do
$var_file = $var_file +1
$file_name = $array[$var_file][0]
_FTP_FileDelete ($conn, $file_name)
Until $var_file = $array [0][0]
EndIf

$dir_delete = _FTP_DirDelete ($conn, "/" & $sel_dir)
If $dir_delete = 1 Then
add_event ("La dir: " & $sel_dir & " è stata eliminata con successo!")
$timer = TimerInit ()
Else
add_event ("A causa di un errore sconosciuto la dir non è stata eliminata.")
EndIf
ExitLoop
EndIf
Until $msg_dir = -3
_FTP_DirSetCurrent ($conn, $old_dir)
GUIDelete ($gui_dir)
Case $conn_server
add_event ("Riconnessione in corso....")
connessione ()
$timer = TimerInit ()
Case $conn_new_server
_FTP_Close ($ftto)
_GUICtrlListView_DeleteAllItems ($file_list)
GUICtrlSetState ($btn_add, $gui_hide)
GUICtrlSetState ($btn_del, $gui_hide)
GUICtrlSetState ($btn_ren, $gui_hide)
GUICtrlSetState ($btn_down, $gui_hide)
gui_login ()
GUICtrlSetData ($log_edit, log_time () & "Aperto FTP Suite " & $ver & @CRLF & log_time () & "Tentativo di connessione in corso su: " & $server)
$ftto = _FTP_Open ("FTP suite")
connessione ()
$timer = TimerInit ()
Case $conn_server_port
$porta = IniRead ($ini_dir, "opzioni", "port", 21)
$input = InputBox ($title, "La porta di connessione attuale è la porta #" & $porta, $porta)
If @error = 1 Then
ContinueLoop
EndIf
IniWrite ($ini_dir, "opzioni", "server_port", $input)
MsgBox (0, $title, "Le modifiche verranno apportate al riavvio del programma.")
Case $conn_passive_mode
$mode = IniRead ($ini_dir, "opzioni", "passive_mode", "false")
If $mode = "false" Then
$state = "non è attiva."
$dom = "Attivare?"
ElseIf $mode = "true" Then
$state = "è attiva."
$dom = "Disattivare?"
EndIf
$quest = MsgBox (36, $title, "La modalità passiva " & $state & @CRLF & $dom)
If $quest = 7 Then
ContinueLoop
EndIf
If $mode = "false" Then
IniWrite ($ini_dir, "opzioni", "passive_mode", "true")
ElseIf $mode = "true" Then
IniWrite ($ini_dir, "opzioni", "passive_mode", "false")
EndIf
MsgBox (0, $title, "Le modifiche verranno apportate al riavvio del programma.")
Case $conn_reconnect
$mode = IniRead ($ini_dir, "opzioni", "reconnect", "false")
If $mode = "false" Then
$state = "non è attiva."
$dom = "Attivare?"
ElseIf $mode = "true" Then
$state = "è attiva."
$dom = "Disattivare?"
EndIf
$quest = MsgBox (36, $title, "La riconnessione automatica " & $state & @CRLF & $dom)
If $quest = 7 Then
ContinueLoop
EndIf
If $mode = "false" Then
IniWrite ($ini_dir, "opzioni", "reconnect", "true")
ElseIf $mode = "true" Then
IniWrite ($ini_dir, "opzioni", "reconnect", "false")
EndIf
MsgBox (0, $title, "Le modifiche verranno apportate al riavvio del programma.")
Case $site_go
ShellExecute ("http://" & $server)
Case $btn_add
Do
$dir_file = FileOpenDialog ("Seleziona un file", $init_dir, "(*.*)")
If $dir_file = "" Then
ExitLoop
EndIf
;per ritornare alla dir del file
$split = StringSplit ($dir_file, "\")
$return = ""
For $a = 1 To $split[0] -1
$return = $return & "\" & $split[$a]
Next
$init_dir = StringTrimLeft ($return, 1)

If not FileExists ($dir_file) Then
$qst = MsgBox (21, "FTP Suite " & $ver, "Il file: " & $dir_file & " non esiste.")
$exist = False
Else
$exist = True
EndIf
Until $qst = 2 or $exist = True
If FileExists ($dir_file) Then ;nn so xke nn funge ExitLoop
$dir_spl = StringSplit ($dir_file, "\")
add_event ("Tentativo di upload di: " & $dir_file)
$upload = ProgressUpload ($conn, $dir_file, $dir_spl[$dir_spl[0]])
if $upload = 1 Then
$find_text = _GUICtrlListView_FindText ($file_list, $dir_spl[$dir_spl[0]])
If $find_text <> -1 Then
_GUICtrlListView_DeleteItem ($file_list, $find_text)
EndIf
$dim = FileGetSize ($dir_file) /1000
$get_time = FileGetTime ($dir_file)
$date = $get_time[2] & "/" & $get_time[1] & "/" & $get_time[0] & " " & $get_time[3] & ":" & $get_time[4] & ":00" ;così viene uguale xD
GUICtrlCreateListViewItem ($dir_spl[$dir_spl[0]] & "|" & $dim & " KB|" & $date, $file_list)
add_event ("Upload riuscito!")
$timer = TimerInit ()
Else
add_event ("Upload fallito!")
EndIf
EndIf
Case $btn_del
$file_sel = file_sel ()
If $file_sel = "0" Then
MsgBox (16, $title, "Errore, nessun file selezionato!")
ContinueLoop
EndIf
$quest = MsgBox (36, $title, "Vuoi davvero eliminare il file " & $file_sel & "?")
If $quest = 7 Then
ContinueLoop
EndIf
$delete = _FTP_FileDelete ($conn, $file_sel)
If $delete = 1 Then
$index = get_index_handle ($file_sel)
_GUICtrlListView_DeleteItem ($file_list, $index)
add_event ("Il file: " & $file_sel & " è stato eliminato.")
$timer = TimerInit ()
Else
add_event ("Errore: il file " & $file_sel & " non è stato eliminato")
EndIf

Case $btn_ren
$file_sel = file_sel ()
If $file_sel = "0" Then
MsgBox (16, $title, "Errore, nessun file selezionato!")
ContinueLoop
EndIf
$new_name = InputBox ("FTP Suite " & $ver, "Inserisci un nuovo nome per il tuo file", $file_sel)
if $new_name = "" Then
ContinueLoop
EndIf
If StringInStr ($new_name, ".") <> 0 Then
$split_name = StringSplit ($new_name, ".")
$new_name = $split_name [1]
EndIf
$split2 = StringSplit ($file_sel, ".")
$ext = $split2 [2]
$ren = _FTP_FileRename ($conn, $file_sel, $new_name & "." & $ext)
If $ren = 1 Then
$index = get_index_handle ($file_sel)
_GUICtrlListView_SetItemText ($file_list, $index, $new_name & "." & $ext)
add_event ("File rinominato con successo.")
$timer = TimerInit ()
Else
add_event ("A causa di un errore sconosciuto il file non è stato rinominato.")
EndIf
Case $btn_down
$file_sel = file_sel ()
If $file_sel = "0" Then
MsgBox (16, $title, "Errore, nessun file selezionato!")
ContinueLoop
EndIf
$local_dir = FileSaveDialog ("Salva file", $init_dir, "(*.*)", Default, $file_sel)
If $local_dir <> "" Then
;per ritornare la dir del file
$split = StringSplit ($local_dir, "\")
$return = ""
For $a = 1 To $split[0] -1
$return = $return & "\" & $split[$a]
Next
$init_dir = StringTrimLeft ($return, 1)

If not StringInStr ($local_dir, ".") Then
$split = StringSplit ($file_sel, ".")
$ext = $split[$split[0]]
$local_dir = $local_dir & "." & $ext
EndIf
$down = ProgressDownload ($conn, $local_dir, $file_sel)
If $down = 1 Then
add_event ("Il file è stato salvato su: " & $local_dir)
$split = StringSplit ($local_dir, "\")
$dir = ""
For $a = 1 to $split[0] - 1
$dir = $dir & $split[$a] & "\"
next
$timer = TimerInit ()
ShellExecute ($dir)
Else
add_event ("A causa di un errore sconosciuto il file non è stato salvato.")
EndIf
EndIf
EndSwitch
If $reconnect = False Then
$diff = TimerDiff ($timer)
If $diff >= 300000 Then ;5 min = 300000 ms
If $reconnect_mode = "true" Then
add_event ("Riconnessione in corso....")
connessione ()
$timer = TimerInit ()
ElseIf $reconnect_mode = "false" Then
TrayTip ($title, "Sono passati 5 minuti dall'ultima operazione, sei disconnesso!", 2)
add_event ("Sono passati 5 minuti dall'ultima operazione, sei disconnesso!")
_GUICtrlStatusBar_SetText ($statusbar, "Status: Disconnesso")
AdlibUnRegister ()
$reconnect = True
EndIf
EndIf
EndIf
until $msg = -3
_FTP_Close ($ftto)
;other_func region

Func add_file_list ($list)
;~ _FTP_DirCreate ($conn, "directory2")
$array = _FTP_ListToArrayEx ($conn, 2, "", 0) ;dv usare _FTP_ListToArrayEx !!!!
If $array = 0 Then ;non c'è nessun File
;non fare niente
Else
$var_file = 0
Do
$var_file = $var_file +1
$file_name = $array[$var_file][0]
$dim = $array[$var_file][1] /1000
$date = $array[$var_file][3]
GUICtrlCreateListViewItem ($file_name & "|" & $dim & " KB|" & new_date ($date), $list)
Until $var_file = $array [0][0]
EndIf
EndFunc

Func new_date ($date)
$split = StringSplit ($date , "/")
$mm = $split[1]
$dd = $split[2]
Return ($dd & "/" & $mm & "/" & $split[3])
EndFunc

Func log_time ()
Return (@HOUR & ":" & @MIN & ":" & @SEC & " ")
EndFunc

Func add_event ($text)
$pre_text = GUICtrlRead ($log_edit)
GUICtrlSetData ($log_edit, $pre_text & @CRLF & log_time () & $text)
_GUICtrlEdit_LineScroll($log_edit, 0, _GUICtrlEdit_GetLineCount($log_edit))
EndFunc

Func connessione ()
$passive_mode = IniRead ($ini_dir, "opzioni", "passive_mode", "false")
If $passive_mode = "false" Then
$mode = 0
ElseIf $passive_mode = "true" Then
$mode = 1
EndIf
$porta = IniRead ($ini_dir, "opzioni", "port", 21)
$port = Number ($porta)
$conn = _FTP_Connect ($ftto, $server, $user, $password, $mode, $port)
If $conn <> 0 Then
$riconnessione = IniRead ($ini_dir, "opzioni", "reconnect", "false")
if $riconnessione = "false" Then
$state = "verrai disconnesso automaticamente."
ElseIf $riconnessione = "true" Then
$state = "verrai riconnesso automaticamente."
EndIf
add_event ("Connessione riuscita! Dopo 5 minuti di inattività " & $state)
_GUICtrlStatusBar_SetText ($statusbar, "Status: Connesso")
AdlibRegister ("tempo", 1000)
refresh ()
GUICtrlSetState ($btn_add, $gui_show)
GUICtrlSetState ($btn_del, $gui_show)
GUICtrlSetState ($btn_ren, $gui_show)
GUICtrlSetState ($btn_down, $gui_show)
Else
add_event ("Connessione fallita!")

$quest = MsgBox (21, $title, "La connessione su: " & $server & " è fallita." & @CRLF &@CRLF & "Le cause potrebbero essere:" & @CRLF & "1. Server, nome utente o password digitate male, riprovare." & @CRLF & "2. Server pieno, attendere fino a quando il server abbia un posto libero.")
If $quest = 4 Then
_FTP_Close ($ftto)
_GUICtrlListView_DeleteAllItems ($file_list)
GUICtrlSetState ($btn_add, $gui_hide)
GUICtrlSetState ($btn_del, $gui_hide)
GUICtrlSetState ($btn_ren, $gui_hide)
GUICtrlSetState ($btn_down, $gui_hide)
gui_login ()
GUICtrlSetData ($log_edit, log_time () & "Aperto FTP Suite " & $ver & @CRLF & log_time () & "Tentativo di connessione in corso su: " & $server)
$ftto = _FTP_Open ("FTP suite")
connessione ()
Else
Exit
EndIf
EndIf
Global $timer, $reconnect_mode, $reconnect
$timer = TimerInit ()
$reconnect_mode = IniRead ($ini_dir, "opzioni", "reconnect", "false")
$reconnect = False
EndFunc

func refresh ()
_GUICtrlListView_DeleteAllItems ($file_list)
;~ $conn = _FTP_Connect ($ftto, $server, $user, $password)
Sleep (100)
add_file_list ($file_list)
EndFunc

Func file_sel ()
$read = GUICtrlRead (GUICtrlRead ($file_list))
$arr_list = StringSplit ($read, "|")
Return ($arr_list[1])
EndFunc

Func gui_login ()
Global $server, $user, $password
$server = IniRead ($ini_dir, "crediti", "server", "")
$user = IniRead ($ini_dir, "crediti", "user", "")
$password = IniRead ($ini_dir, "crediti", "pass", "")
$gui1 = GUICreate ("FTP Suite " & $ver, 255, 200) ;gui log-in
GUICtrlCreateLabel ("Server ftp:", 10, 10)
$inp_ftp = GUICtrlCreateInput ($server, 10, 30, 235, 20)
GUICtrlCreateLabel ("Nome utente:", 10, 60)
$inp_user = GUICtrlCreateInput ($user, 10, 80, 235, 20)
GUICtrlCreateLabel ("Password:", 10, 110)
$inp_pass = GUICtrlCreateInput ($password, 10, 130, 235, 20, 0x0020)
$btn_send = GUICtrlCreateButton ("Invia informazioni", 10, 170, 100)
$cbk_save = GUICtrlCreateCheckbox ("Memorizza informazioni", 120, 172)
GUICtrlSetState ($btn_send, $gui_focus)
GUISetState ()

;gui-func region
while 1
$msg1 = GUIGetMsg ($gui1)
If $msg1 = $btn_send Then
$server = GUICtrlRead ($inp_ftp)
$user = GUICtrlRead ($inp_user)
$password = GUICtrlRead ($inp_pass)
If GUICtrlRead ($cbk_save) = $gui_checked Then
IniWrite ($ini_dir, "crediti", "server", $server)
IniWrite ($ini_dir, "crediti", "user", $user)
IniWrite ($ini_dir, "crediti", "pass", $password)
EndIf
ExitLoop
ElseIf $msg1 = -3 Then
Exit
EndIf
WEnd
GUIDelete ($gui1)
EndFunc

Func get_index_handle ($text)
$func = _GUICtrlListView_FindText ($file_list, $text)
Return $func
EndFunc

Func ProgressUpload($l_FTPSession, $s_LocalFile, $s_RemoteFile, $FunctionToCall = "")
If $__ghWinInet_FTP = -1 Then Return SetError(-2, 0, 0)
Local $ai_InternetCloseHandle, $glen, $last, $x, $parts, $buffer, $ai_ftpwrite, $result, $out, $i, $ret

Local $ai_ftpopenfile = DllCall($__ghWinInet_FTP, 'handle', 'FtpOpenFileW', 'handle', $l_FTPSession, 'wstr', $s_RemoteFile, 'dword', $GENERIC_WRITE, 'dword', $FTP_TRANSFER_TYPE_BINARY, 'dword_ptr', 0)
If @error Or $ai_ftpopenfile[0] = 0 Then Return SetError(-3, _WinAPI_GetLastError(), 0)

If $FunctionToCall = "" Then ProgressOn($title, $s_LocalFile, "In upload")

Local $fhandle = FileOpen($s_LocalFile, 16)

$glen = FileGetSize($s_LocalFile)
$last = Mod($glen, 100)

$x = ($glen - $last) / 100
If $x = 0 Then
$x = $last
$parts = 1
ElseIf $last > 0 Then
$parts = 101
Else
$parts = 100
EndIf
If $x < $last Then
$buffer = DllStructCreate("byte[" & $last & "]")
Else
$buffer = DllStructCreate("byte[" & $x & "]")
EndIf

For $i = 1 To $parts
Select
Case $i = 101 And $last > 0
$x = $last
EndSelect
DllStructSetData($buffer, 1, FileRead($fhandle, $x))

$ai_ftpwrite = DllCall($__ghWinInet_FTP, 'bool', 'InternetWriteFile', 'handle', $ai_ftpopenfile[0], 'ptr', DllStructGetPtr($buffer), 'dword', $x, 'dword*', $out)
If @error Or $ai_ftpwrite[0] = 0 Then
Local $lasterror = _WinAPI_GetLastError()
$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
; No need to test @error.
FileClose($fhandle)

Return SetError(-4, $lasterror, 0)
EndIf

If $FunctionToCall == "" Then
ProgressSet($i)
Else
Select
Case $parts = 1
$result = 100
Case $i = 101
$result = 100
Case Else
$result = $i
EndSelect
$ret = Call($FunctionToCall, $result)
If $ret <= 0 Then
$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
; No need to test @error.
DllCall($__ghWinInet_FTP, 'bool', 'FtpDeleteFileW', 'handle', $l_FTPSession, 'wstr', $s_RemoteFile)
; No need to test @error.
FileClose($fhandle)
Return SetError(-6, 0, $ret)
EndIf
EndiF
Sleep(10)

Next

FileClose($fhandle)

If $FunctionToCall = "" Then ProgressOff()

$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
; No need to test @error.
If @error Or $ai_InternetCloseHandle[0] = 0 Then Return SetError(-5, 0, 0)

Return 1
EndFunc

Func ProgressDownload($l_FTPSession, $s_LocalFile, $s_RemoteFile, $FunctionToCall = "")
If $__ghWinInet_FTP = -1 Then Return SetError(-2, 0, 0)
Local $ai_InternetCloseHandle, $glen, $last, $x, $parts, $buffer, $ai_FTPread, $result, $out, $i, $ret
Local $fhandle = FileOpen($s_LocalFile, 18)
If @error Then Return SetError(-1, 0, 0)

Local $ai_ftpopenfile = DllCall($__ghWinInet_FTP, 'handle', 'FtpOpenFileW', 'handle', $l_FTPSession, 'wstr', $s_RemoteFile, 'dword', $GENERIC_READ, 'dword', $FTP_TRANSFER_TYPE_BINARY, 'dword_ptr', 0)
If @error Or $ai_ftpopenfile[0] = 0 Then Return SetError(-3, _WinAPI_GetLastError(), 0)

If $FunctionToCall = "" Then ProgressOn($title, $s_LocalFile, "In download")

Local $ai_FTPGetFileSize = DllCall($__ghWinInet_FTP, 'dword', 'FtpGetFileSize', 'handle', $ai_ftpopenfile[0], 'dword*', 0)
If @error Then Return SetError(-2, _WinAPI_GetLastError(), 0)

$glen = _WinAPI_MakeQWord($ai_FTPGetFileSize[0], $ai_FTPGetFileSize[2]) ;FileGetSize($s_RemoteFile)
$last = Mod($glen, 100)
$x = ($glen - $last) / 100
If $x = 0 Then
$x = $last
$parts = 1
ElseIf $last > 0 Then
$parts = 101
Else
$parts = 100
EndIf
If $x < $last Then
$buffer = DllStructCreate("byte[" & $last & "]")
Else
$buffer = DllStructCreate("byte[" & $x & "]")
EndIf

For $i = 1 To $parts
Select
Case $i = 101 And $last > 0
$x = $last
EndSelect

$ai_FTPread = DllCall($__ghWinInet_FTP, 'bool', 'InternetReadFile', 'handle', $ai_ftpopenfile[0], 'ptr', DllStructGetPtr($buffer), 'dword', $x, 'dword*', $out)
If @error Or $ai_FTPread[0] = 0 Then
Local $lasterror = _WinAPI_GetLastError()
$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
; No need to test @error.
FileClose($fhandle)

Return SetError(-4, $lasterror, 0)
EndIf
FileWrite($fhandle, BinaryMid(DllStructGetData($buffer, 1), 1, $ai_FTPread[4]))
If $FunctionToCall = "" Then
ProgressSet($i)
Else
Select
Case $parts = 1
$result = 100
Case $i = 101
$result = 100
Case Else
$result = $i
EndSelect
$ret = Call($FunctionToCall, $result)
If $ret <= 0 Then
$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
; No need to test @error.
FileClose($fhandle)
FileDelete($s_LocalFile)
Return SetError(-6, 0, $ret)
EndIf
EndIf
Sleep(10)

Next

FileClose($fhandle)

If $FunctionToCall = "" Then ProgressOff()

$ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
If @error Or $ai_InternetCloseHandle[0] = 0 Then
Return SetError(-5, _WinAPI_GetLastError(), 0)
EndIf

Return 1
EndFunc

func tempo ()
$tempo = $diff / 1000
$tempo = Round ($tempo)
$tempo = 300 - $tempo
;~ _GUICtrlStatusBar_SetText ($statusbar, "FTP Suite " & $ver & " by Grandebestia (TGB) | Tempo rimanente: " & $tempo & " secondi")
_GUICtrlStatusBar_SetText ($statusbar, "Tempo rimanente: " & $tempo & " secondi", 1)
EndFunc

Sono 824 stringhe di codice divertitevi a leggerle tutte 8D
 
Top
ACIDBURN16
CAT_IMG Posted on 27/7/2010, 20:40     +1   -1




Davvero bello, complimenti !
 
Top
~•~†Søap˜M.T.™†~•~
CAT_IMG Posted on 4/8/2010, 12:36     +1   -1




Stupendo ;D .... !
 
Top
2 replies since 27/7/2010, 20:29   262 views
  Share