Sign in to follow this  
Followers 0
Synthesis

FTP.au3 (GUI)

3 posts in this topic

After I saw w0uter's ftp function, I've thought it is a good idea to create a GUI for it.

#include <GUIConstantsEx.au3>

Opt('MustDeclareVars', 1)
opt('trayiconhide',1)

    Local $filemenu, $fileitem, $recentfilesmenu, $separator1, $upd, $fu, $fp, $fs
    Local $exititem, $helpmenu, $aboutitem, $okbutton, $cancelbutton, $open, $ff, $path2
    Local $msg, $file, $file2, $fileu, $server, $username, $password, $conn, $path
    #forceref $separator1

    GUICreate("FTP GUI Client 1.0", 300, 250)

    $filemenu = GUICtrlCreateMenu("File")
    $fileitem = GUICtrlCreateMenuItem("Add file", $filemenu)
    $recentfilesmenu = GUICtrlCreateMenu("Recent files", $filemenu)
    $separator1 = GUICtrlCreateMenuItem("", $filemenu)
    $exititem = GUICtrlCreateMenuItem("Exit", $filemenu)
    $helpmenu = GUICtrlCreateMenu("Help")
    $aboutitem = GUICtrlCreateMenuItem("About", $helpmenu)
    guictrlcreatelabel ("File: ",15,20)
    $fileu = guictrlcreateinput ("To add file, click on File>Add file",60,15,220,20)
    guictrlcreatelabel ("Server: ",15,50)
    $server = guictrlcreateinput ("ftp.example.com",60,45,220,20,0x1)
    guictrlcreatelabel ("Name: ",15,80)
    $username = guictrlcreateinput ("Admin",60,75,220,20,0x1)
    guictrlcreatelabel ("Pass: ",15,110)
    $password = guictrlcreateinput ("password",60,105,220,20,0x21)
    guictrlcreatelabel ("Ftp path:",15,140)
    $path = guictrlcreateinput ("/public_html/uploaded.exe",60,140,220,20,0x1)
    $okbutton = GUICtrlCreateButton("Upload file", 115, 180, 70, 20)
    $upd = guictrlcreatelabel ("Status: Idle",0,210,300,20,0x1000)

    GUISetState()

    While 1
        $msg = GUIGetMsg()


        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop

            Case $msg = $fileitem
                $file = FileOpenDialog("Choose file to upload", @TempDir, "All (*.*)")
                If @error <> 1 Then GUICtrlCreateMenuItem($file, $recentfilesmenu)
                guictrlsetdata ($fileu, $file)
                guictrlsetdata ($upd, "Status: A new file has been added.")

            Case $msg = $exititem
                ExitLoop

            Case $msg = $okbutton
                _ftp()

            Case $msg = $aboutitem
                MsgBox(64, "About", "FTP GUI Client 1.0" & @crlf & "GUI by KaZo" & @crlf & "FTP function by w0uter")
        EndSelect
    WEnd

    GUIDelete()

    Exit

func _ftp()
guictrlsetdata ($upd, "Status: Reading...")
                $ff = guictrlread ($fileu)
                if $ff = "To add file, click on File>Add file" Then
                    guictrlsetdata ($upd, "Error: Invalid file")
                else
                $fs = guictrlread ($server)
                $fu = guictrlread ($username)
                $fp = guictrlread ($password)
                $path2 = guictrlread ($path)
                $open = _FTPOpen('FTP connection')
                $conn = _FTPConnect($open, $fs, $fu, $fp)
                _FtpPutFile($conn, $ff, $path2)
                _FTPClose($open)
            endif
            if @error then
                guictrlsetdata ($upd,"Error: Failed to upload.")
            else
            guictrlsetdata ($upd, "Status: File succesfully uploaded")
            endif
endfunc
        
;===============================================================================
;
; Function Name:    _FTPOpen()
; Description:      Opens an FTP session.
; Parameter(s):     $s_Agent        - Random name. ( like "myftp" )
;                   $l_AccessType   - I dont got a clue what this does.
;                   $s_ProxyName    - ProxyName.
;                   $s_ProxyBypass  - ProxyByPasses's.
;                   $l_Flags        - Special flags.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - Returns an indentifier.
;                   On Failure - 0  and sets @ERROR
; Author(s):        Wouter van Kesteren.
;
;===============================================================================

Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0)
    
    Local $ai_InternetOpen = DllCall('wininet.dll', 'long', 'InternetOpen', 'str', $s_Agent, 'long', $l_AccessType, 'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags)
    If @error OR $ai_InternetOpen[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
        
    Return $ai_InternetOpen[0]
    
EndFunc ;==> _FTPOpen()

;===============================================================================
;
; Function Name:    _FTPConnect()
; Description:      Connects to an FTP server.
; Parameter(s):     $l_InternetSession  - The Long from _FTPOpen()
;                   $s_ServerName       - Server name/ip.
;                   $s_Username         - Username.
;                   $s_Password         - Password.
;                   $i_ServerPort       - Server port ( 0 is default (21) )
;                   $l_Service          - I dont got a clue what this does.
;                   $l_Flags            - Special flags.
;                   $l_Context          - I dont got a clue what this does.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - Returns an indentifier.
;                   On Failure - 0  and sets @ERROR
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 0, $l_Service = 1, $l_Flags = 0, $l_Context = 0)
    
    Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_InternetConnect[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
            
    Return $ai_InternetConnect[0]
    
EndFunc ;==> _FTPConnect()

;===============================================================================
;
; Function Name:    _FTPPutFile()
; Description:      Puts an file on an FTP server.
; Parameter(s):     $l_FTPSession   - The Long from _FTPConnect()
;                   $s_LocalFile    - The local file.
;                   $s_RemoteFile   - The remote Location for the file.
;                   $l_Flags        - Special flags.
;                   $l_Context      - I dont got a clue what this does.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPPutFile($l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpPutFile', 'long', $l_FTPSession, 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_FTPPutFile[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    
    Return $ai_FTPPutFile[0]
    
EndFunc ;==> _FTPPutFile()

;===============================================================================
;
; Function Name:    _FTPDelFile()
; Description:      Delete an file from an FTP server.
; Parameter(s):     $l_FTPSession   - The Long from _FTPConnect()
;                   $s_RemoteFile   - The remote Location for the file.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPDelFile($l_FTPSession, $s_RemoteFile)
    
    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpDeleteFile', 'long', $l_FTPSession, 'str', $s_RemoteFile)
    If @error OR $ai_FTPPutFile[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    
    Return $ai_FTPPutFile[0]
    
EndFunc ;==> _FTPDelFile()

;===============================================================================
;
; Function Name:    _FTPRenameFile()
; Description:      Renames an file on an FTP server.
; Parameter(s):     $l_FTPSession   - The Long from _FTPConnect()
;                   $s_Existing     - The old file name.
;                   $s_New          - The new file name.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPRenameFile($l_FTPSession, $s_Existing, $s_New)
    
    Local $ai_FTPRenameFile = DllCall('wininet.dll', 'int', 'FtpRenameFile', 'long', $l_FTPSession, 'str', $s_Existing, 'str', $s_New)
    If @error OR $ai_FTPRenameFile[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    
    Return $ai_FTPRenameFile[0]
    
EndFunc ;==> _FTPRenameFile()

;===============================================================================
;
; Function Name:    _FTPMakeDir()
; Description:      Makes an Directory on an FTP server.
; Parameter(s):     $l_FTPSession   - The Long from _FTPConnect()
;                   $s_Remote       - The file name to be deleted.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPMakeDir($l_FTPSession, $s_Remote)
    
    Local $ai_FTPMakeDir = DllCall('wininet.dll', 'int', 'FtpCreateDirectory', 'long', $l_FTPSession, 'str', $s_Remote)
    If @error OR $ai_FTPMakeDir[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    
    Return $ai_FTPMakeDir[0]
    
EndFunc ;==> _FTPMakeDir()

;===============================================================================
;
; Function Name:    _FTPDelDir()
; Description:      Delete's an Directory on an FTP server.
; Parameter(s):     $l_FTPSession   - The Long from _FTPConnect()
;                   $s_Remote       - The Directory to be deleted.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPDelDir($l_FTPSession, $s_Remote)
    
    Local $ai_FTPDelDir = DllCall('wininet.dll', 'int', 'FtpRemoveDirectory', 'long', $l_FTPSession, 'str', $s_Remote)
    If @error OR $ai_FTPDelDir[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
        
    Return $ai_FTPDelDir[0]
    
EndFunc ;==> _FTPDelDir()

;===============================================================================
;
; Function Name:    _FTPClose()
; Description:      Closes the _FTPOpen session.
; Parameter(s):     $l_InternetSession  - The Long from _FTPOpen()
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPClose($l_InternetSession)
    
    Local $ai_InternetCloseHandle = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $l_InternetSession)
    If @error OR $ai_InternetCloseHandle[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    
    Return $ai_InternetCloseHandle[0]
    
EndFunc ;==> _FTPClose()

Share this post


Link to post
Share on other sites



Hi, I'm interested with this FTP thing I was wondering if someone wants to ensure or try to work on it? Thanks

Share this post


Link to post
Share on other sites

Hi, I'm interested with this FTP thing I was wondering if someone wants to ensure or try to work on it? Thanks

Be sure some of us are interested. I use W0uter's script and I even added functions but as it's not finished yet I cannot release

a "non-oprationale" script.


FreeRiderHonour & Fidelity

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