It is currently Mon Dec 09, 2019 1:25 pm

All times are UTC + 1 hour




Post new topic Reply to topic  [ 18 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: PB.Ex FTP (Windows)
PostPosted: Thu Mar 15, 2018 11:54 pm 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
Hello,

PureBasic can neither SFTP (SSH File Transfer Protocol) nor FTPS (FTP over SSL/TLS). With this library this is possible. The functions are built in the same style as the FTP library of PureBasic and FTP is also supported.

Functions:
  • OpenFTPEx()
    • Syntax:
      Code:
      Result = OpenFTPEx(ID, Protocol, ServerName$, Port, User$, Password$, Charset, @ErrorOutput)

    • Description: Establishes a connection to the server.
    • Parameter:
      1. ID: A unique number for the connection. PB_Any can be used to generate the number automatically.
      2. Protocol: Sets the protocol (FTP, SFTP, FTPS) for the connection: #PBEx_FTP_Protocol_FTP, #PBEx_FTP_Protocol_SFTP, #PBEx_FTP_Protocol_FTPS_Implicit, #PBEx_FTP_Protocol_FTPS_Explicit
      3. ServerName$: The domain or IP address of the server.
      4. Port: The port number for the connection.
      5. User$: The user name for logging in.
      6. Password$: The password for logging in.
      7. Charset: Specifies the character set: #PB_UTF8, #PB_Ascii, #PB_Unicode - SFTP uses UTF-8 by default.
      8. @ErrorOutput: If an error occurred, the error message is stored in the variable. This variable must be reserved with 128 characters before passing. Maximum length of the return is 128 characters including the NULL character. If no error description is to be returned for an error, 0 can be passed instead.
    • Return value:
      • 1: The process was successful. If #PB_Any is used, the ID is returned.
    • Example:
      Code:
      ;1.0.4.0

      EnableExplicit

      Global PBEx_FTP

      #PBEx_FTP_Version$ = "1.0.4.0"
      #PBEx_FTP_Protocol_FTP = 1
      #PBEx_FTP_Protocol_SFTP = 2
      #PBEx_FTP_Protocol_FTPS_Implicit = 3
      #PBEx_FTP_Protocol_FTPS_Explicit = 4

      CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
        PBEx_FTP = OpenLibrary(#PB_Any, "PB.Ex_FTP_x86.dll")
      CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64
        PBEx_FTP = OpenLibrary(#PB_Any, "PB.Ex_FTP_x64.dll")
      CompilerEndIf

      If PBEx_FTP
        Prototype OpenFTPEx(ID, Protocol, ServerName.p-Unicode, Port, User.p-Unicode, Password.p-Unicode, Charset, ErrorOutput)
        Global OpenFTPEx.OpenFTPEx = GetFunction(PBEx_FTP, "OpenFTPEx")
        Prototype CloseFTPEx(ID, ErrorOutput)
        Global CloseFTPEx.CloseFTPEx = GetFunction(PBEx_FTP, "CloseFTPEx")
        Prototype CheckFTPConnectionEx(ID, ErrorOutput)
        Global CheckFTPConnectionEx.CheckFTPConnectionEx = GetFunction(PBEx_FTP, "CheckFTPConnectionEx")
        Prototype IsFTPEx(ID, ErrorOutput)
        Global IsFTPEx.IsFTPEx = GetFunction(PBEx_FTP, "IsFTPEx")
        Prototype ExamineFTPDirectoryEx(ID, ErrorOutput)
        Global ExamineFTPDirectoryEx.ExamineFTPDirectoryEx = GetFunction(PBEx_FTP, "ExamineFTPDirectoryEx")
        Prototype FinishFTPDirectoryEx(ID, ErrorOutput)
        Global FinishFTPDirectoryEx.FinishFTPDirectoryEx = GetFunction(PBEx_FTP, "FinishFTPDirectoryEx")
        Prototype NextFTPDirectoryEntryEx(ID, ErrorOutput)
        Global NextFTPDirectoryEntryEx.NextFTPDirectoryEntryEx = GetFunction(PBEx_FTP, "NextFTPDirectoryEntryEx")
        Prototype FTPDirectoryEntryNameEx(ID, Output, ErrorOutput)
        Global FTPDirectoryEntryNameEx.FTPDirectoryEntryNameEx = GetFunction(PBEx_FTP, "FTPDirectoryEntryNameEx")
        Prototype FTPDirectoryEntrySizeEx(ID, ErrorOutput)
        Global FTPDirectoryEntrySizeEx.FTPDirectoryEntrySizeEx = GetFunction(PBEx_FTP, "FTPDirectoryEntrySizeEx")
        Prototype FTPDirectoryEntryTypeEx(ID, ErrorOutput)
        Global FTPDirectoryEntryTypeEx.FTPDirectoryEntryTypeEx = GetFunction(PBEx_FTP, "FTPDirectoryEntryTypeEx")
        Prototype FTPDirectoryEntryDateEx(ID, ErrorOutput)
        Global FTPDirectoryEntryDateEx.FTPDirectoryEntryDateEx = GetFunction(PBEx_FTP, "FTPDirectoryEntryDateEx")
        Prototype FTPDirectoryEntryAttributesEx(ID, ErrorOutput)
        Global FTPDirectoryEntryAttributesEx.FTPDirectoryEntryAttributesEx = GetFunction(PBEx_FTP, "FTPDirectoryEntryAttributesEx")
        Prototype GetFTPDirectoryEx(ID, Output, ErrorOutput)
        Global GetFTPDirectoryEx.GetFTPDirectoryEx = GetFunction(PBEx_FTP, "GetFTPDirectoryEx")
        Prototype SetFTPDirectoryEx(ID, DirectoryName.p-Unicode, ErrorOutput)
        Global SetFTPDirectoryEx.SetFTPDirectoryEx = GetFunction(PBEx_FTP, "SetFTPDirectoryEx")
        Prototype CreateFTPDirectoryEx(ID, DirectoryName.p-Unicode, ErrorOutput)
        Global CreateFTPDirectoryEx.CreateFTPDirectoryEx = GetFunction(PBEx_FTP, "CreateFTPDirectoryEx")
        Prototype DeleteFTPDirectoryEx(ID, DirectoryName.p-Unicode, ErrorOutput)
        Global DeleteFTPDirectoryEx.DeleteFTPDirectoryEx = GetFunction(PBEx_FTP, "DeleteFTPDirectoryEx")
        Prototype DeleteFTPFileEx(ID, FileName.p-Unicode, ErrorOutput)
        Global DeleteFTPFileEx.DeleteFTPFileEx = GetFunction(PBEx_FTP, "DeleteFTPFileEx")
        Prototype RenameFTPFileEx(ID, FileName.p-Unicode, NewFileName.p-Unicode, ErrorOutput)
        Global RenameFTPFileEx.RenameFTPFileEx = GetFunction(PBEx_FTP, "RenameFTPFileEx")
        Prototype ReceiveFTPFileEx(ID, RemoteFileName.p-Unicode, FileName.p-Unicode,IsAsynchron,  ErrorOutput)
        Global ReceiveFTPFileEx.ReceiveFTPFileEx = GetFunction(PBEx_FTP, "ReceiveFTPFileEx")
        Prototype SendFTPFileEx(ID, FileName.p-Unicode, RemoteFileName.p-Unicode, IsAsynchron, ErrorOutput)
        Global SendFTPFileEx.SendFTPFileEx = GetFunction(PBEx_FTP, "SendFTPFileEx")
        Prototype FTPProgressEx(ID, PercentValue, TransferRate, EstimatedTime, ErrorOutput)
        Global FTPProgressEx.FTPProgressEx = GetFunction(PBEx_FTP, "FTPProgressEx")
       
      EndIf

      Define ErrorOutput$ = Space(128)
      Define FileName$ = Space(#MAX_PATH)

      Debug "SFTP..."

      If OpenFTPEx(1, #PBEx_FTP_Protocol_SFTP, "test.rebex.net", 22, "demo", "password", #PB_UTF8, @ErrorOutput$)
        ;If OpenFTPEx(1, #PBEx_FTP_Protocol_SFTP, "demo.wftpserver.com", 2222, "demo-user", "demo-user", #PB_UTF8, @ErrorOutput$)
        SetFTPDirectoryEx(1, "pub", @ErrorOutput$)
        SetFTPDirectoryEx(1, "example", @ErrorOutput$)
        ;SetFTPDirectoryEx(1, "download", @ErrorOutput$)
        ;SetFTPDirectoryEx(1, "upload", @ErrorOutput$)
       
        If ExamineFTPDirectoryEx(1, @ErrorOutput$)
          While NextFTPDirectoryEntryEx(1, @ErrorOutput$)
            FTPDirectoryEntryNameEx(1, @FileName$, @ErrorOutput$)
            Debug FileName$
          Wend
         
        EndIf
       
      ;   Define a
      ;   Define PercentValue = 0
      ;   Define TransferRate = 0
      ;   Define EstimatedTime = 0
      ;   
      ;   ReceiveFTPFileEx(1, "wftpserver-linux-64bit.tar.gz", "D:\wftpserver-linux-64bit.tar.gz", 1, @ErrorOutput$)
      ;   
      ;   For a=1 To 100
      ;     FTPProgressEx(1, @PercentValue, @TransferRate, @EstimatedTime, @ErrorOutput$)
      ;     Debug PercentValue
      ;     Debug TransferRate
      ;     Debug EstimatedTime
      ;     Debug "--------"
      ;     Delay(100)
      ;   Next
      ;   
      ;   Delay(10000)
       
        CloseFTPEx(1, @ErrorOutput$)
      Else
        Debug ErrorOutput$
      EndIf

      Debug ""
      Debug "FTP..."

      If OpenFTPEx(1, #PBEx_FTP_Protocol_FTP, "rsbasic.de", 21, "webika3rg_qch3ai", "PureBasic!2016", #PB_UTF8, @ErrorOutput$)
        If ExamineFTPDirectoryEx(1, @ErrorOutput$)
          While NextFTPDirectoryEntryEx(1, @ErrorOutput$)
            FTPDirectoryEntryNameEx(1, @FileName$, @ErrorOutput$)
            Debug FileName$
          Wend
         
        EndIf
       
        CloseFTPEx(1, @ErrorOutput$)
      Else
        Debug ErrorOutput$
      EndIf

      Debug ""
      Debug "FTPS explicit..."

      If OpenFTPEx(1, #PBEx_FTP_Protocol_FTPS_Explicit, "test.rebex.net", 21, "demo", "password", #PB_UTF8, @ErrorOutput$)
        If ExamineFTPDirectoryEx(1, @ErrorOutput$)
          While NextFTPDirectoryEntryEx(1, @ErrorOutput$)
            FTPDirectoryEntryNameEx(1, @FileName$, @ErrorOutput$)
            Debug FileName$
          Wend
         
        EndIf
       
        CloseFTPEx(1, @ErrorOutput$)
      Else
        Debug ErrorOutput$
      EndIf

      Debug ""
      Debug "FTPS implicit..."

      If OpenFTPEx(1, #PBEx_FTP_Protocol_FTPS_Implicit, "test.rebex.net", 990, "demo", "password", #PB_UTF8, @ErrorOutput$)
        If ExamineFTPDirectoryEx(1, @ErrorOutput$)
          While NextFTPDirectoryEntryEx(1, @ErrorOutput$)
            FTPDirectoryEntryNameEx(1, @FileName$, @ErrorOutput$)
            Debug FileName$
          Wend
         
        EndIf
       
        CloseFTPEx(1, @ErrorOutput$)
      Else
        Debug ErrorOutput$
      EndIf

      CloseLibrary(PBEx_FTP)

  • CloseFTPEx()
    • Syntax:
      Code:
      Result = CloseFTPEx(ID, @ErrorOutput)

    • Description: Closes the open connection to the server.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • CheckFTPConnectionEx()
    • Syntax:
      Code:
      Result = CheckFTPConnectionEx(ID, @ErrorOutput)

    • Description: Checks if the connection to the server still exists.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The connection to the server exists.
  • IsFTPEx()
    • Syntax:
      Code:
      Result = IsFTPEx(ID, @ErrorOutput)

    • Description: Checks whether the ID was initialized correctly.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The ID is valid.
  • ExamineFTPDirectoryEx()
    • Syntax:
      Code:
      Result = ExamineFTPDirectoryEx(ID, @ErrorOutput)

    • Description: Starts the list from the current directory.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • FinishFTPDirectoryEx()
    • Syntax:
      Code:
      Result = FinishFTPDirectoryEx(ID, @ErrorOutput)

    • Description: Closes the list of the current directory.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • NextFTPDirectoryEntryEx()
    • Syntax:
      Code:
      Result = NextFTPDirectoryEntryEx(ID, @ErrorOutput)

    • Description: The next folder or file is determined.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: Another folder or file exists.
  • FTPDirectoryEntryNameEx()
    • Syntax:
      Code:
      Result = FTPDirectoryEntryNameEx(ID, @Output, @ErrorOutput)

    • Description: The folder or file name is determined.
    • Parameter:
      1. ID: The number of the connection.
      2. @Output: The folder or file name is stored in the string variable.
      3. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • FTPDirectoryEntrySizeEx()
    • Syntax:
      Code:
      Result = FTPDirectoryEntrySizeEx(ID, @ErrorOutput)

    • Description: The size of the file is determined.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • The size of the file is returned.
  • FTPDirectoryEntryTypeEx()
    • Syntax:
      Code:
      Result = FTPDirectoryEntryTypeEx(ID, @ErrorOutput)

    • Description: Checks whether the entry is a file or a folder.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: It's a file. #PB_FTP_File can be used.
      • 2: It's a folder. PB_FTP_Directory can be used.
  • FTPDirectoryEntryDateEx()
    • Syntax:
      Code:
      Result = FTPDirectoryEntryDateEx(ID, @ErrorOutput)

    • Description: Determines the processing date of the file or folder.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • The processing date of the file or folder. The value can be used with the Date library.
  • FTPDirectoryEntryAttributesEx()
    • Syntax:
      Code:
      Result = FTPDirectoryEntryAttributesEx(ID, @ErrorOutput)

    • Description: Determines the specified attributes of the file or folder.
    • Parameter:
      1. ID: The number of the connection.
      2. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • The specified attributes of the file or folder are returned. #PB_FTP_ReadUser, #PB_FTP_WriteUser, #PB_FTP_ExecuteUser, #PB_FTP_ReadGroup, #PB_FTP_WriteGroup, #PB_FTP_ExecuteGroup, #PB_FTP_ReadAll, #PB_FTP_WriteAll and #PB_FTP_ExecuteAll can be used.
  • GetFTPDirectoryEx()
    • Syntax:
      Code:
      Result = GetFTPDirectoryEx(ID, @Output, @ErrorOutput)

    • Description: Determines the current path.
    • Parameter:
      1. ID: The number of the connection.
      2. @Output: The current path is stored in the string variable.
      3. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • SetFTPDirectoryEx()
    • Syntax:
      Code:
      Result = SetFTPDirectoryEx(ID, DirectoryName$, @ErrorOutput)

    • Description: Opens a subfolder.
    • Parameter:
      1. ID: The number of the connection.
      2. DirectoryName$: Name of the folder to open.
      3. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • CreateFTPDirectoryEx()
    • Syntax:
      Code:
      Result = CreateFTPDirectoryEx(ID, DirectoryName$, @ErrorOutput)

    • Description: Creates a new directory.
    • Parameter:
      1. ID: The number of the connection.
      2. DirectoryName$: Name of the folder to be created.
      3. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • DeleteFTPDirectoryEx()
    • Syntax:
      Code:
      Result = DeleteFTPDirectoryEx(ID, DirectoryName$, @ErrorOutput)

    • Description: Deletes a directory.
    • Parameter:
      1. ID: The number of the connection.
      2. DirectoryName$: Name of the folder you want to delete.
      3. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • DeleteFTPFileEx()
    • Syntax:
      Code:
      Result = DeleteFTPFileEx(ID, FileName$, @ErrorOutput)

    • Description: Deletes a file.
    • Parameter:
      1. ID: The number of the connection.
      2. FileName$: Name of the file to be deleted.
      3. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • RenameFTPFileEx()
    • Syntax:
      Code:
      Result = RenameFTPFileEx(ID, FileName$, NewFileName$, @ErrorOutput)

    • Description: Renames a file.
    • Parameter:
      1. ID: The number of the connection.
      2. FileName$: Name of the file to be renamed.
      3. NewFileName$: The new name of the file.
      4. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • ReceiveFTPFileEx()
    • Syntax:
      Code:
      Result = ReceiveFTPFileEx(ID, RemoteFileName$, FileName$, IsAsynchron, @ErrorOutput)

    • Description: Downloads a file.
    • Parameter:
      1. ID: The number of the connection.
      2. RemoteFileName$: Name of the file to download.
      3. FileName$: Local destination path.
      4. IsAsynchron: If 1, then the operation is performed asynchronously. FTPProgressEx() can be used to determine how far the operation has progressed.
      5. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • SendFTPFileEx()
    • Syntax:
      Code:
      Result = SendFTPFileEx(ID, FileName$, RemoteFileName$, IsAsynchron, @ErrorOutput)

    • Description: Uploads a file.
    • Parameter:
      1. ID: The number of the connection.
      2. FileName$: Local path of the file to upload.
      3. RemoteFileName$: Name of the file.
      4. IsAsynchron: If 1, then the operation is performed asynchronously. FTPProgressEx() can be used to determine how far the operation has progressed.
      5. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.
  • SendFTPFileEx()
    • Syntax:
      Code:
      Result = FTPProgressEx(ID, @PercentValue, @TransferRate, @EstimatedTime, @ErrorOutput)

    • Description: Determines how far the process is. This function is valid for ReceiveFTPFileEx() or SendFTPFileEx() and when the IsAsynchronous parameter is set to 1.
    • Parameter:
      1. ID: The number of the connection.
      2. @PercentValue: In this variable the percentage value is stored, how far the process is.
      3. @TransferRate: The current transmission rate is stored in bytes in this variable.
      4. @EstimatedTime: The estimated time in seconds is stored in this variable.
      5. @ErrorOutput: If an error occurs, the error message is stored in the string variable.
    • Return value:
      • 1: The process was successful.

System requirements:
  • Windows XP or higher
  • .NET Framework 4 or higher
  • Unicode activation (standard from PB 5.50)

Licence: This DLL file is free of charge and may be used both privately and commercially.
The following copyright texts must be provided:
Quote:
Copyright (c) 2015 Robin Rodricks and FluentFTP Contributors
Copyright © 2019 RSBasic.de


Download: http://www.rsbasic.de/downloads/downloa ... Ex_FTP.zip
Image

I would be very pleased about feedbacks, improvement suggestions, error messages or wishes. If you want to support me, you can also donate me a little something. Thanks:)

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex SFTP
PostPosted: Fri Mar 16, 2018 3:45 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Wed Feb 01, 2012 3:30 pm
Posts: 753
Location: Nottinghamshire UK
Hi RSBasic Looks like your on a roll. Ill be look at this later after some sleep :) Thanks

Zebuddi.

_________________
malleo, caput, bang. Ego, comprehendunt in tempore


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Thu Mar 29, 2018 9:58 pm 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
PB.Ex FTP 1.0.1.0 has been released.

Changelog:
  • Changed: Name of library changed from PB.Ex SFTP to PB.Ex FTP, because from this version SFTP, FTP and FTPS are supported.
  • Changed: Function names have been renamed. E.g. OpenSFTP() in OpenFTPEx()
  • Added: FTP support
  • Added: FTPS support with implicit and explicit SSL protocol
  • Added: Added charset parameter for OpenFTPEx().
  • Added: Added protocol parameter for OpenFTPEx().
  • Bugfixes

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Fri Mar 30, 2018 4:24 am 
Offline
PureBasic Expert
PureBasic Expert
User avatar

Joined: Fri Apr 25, 2003 4:34 pm
Posts: 921
Location: Canada
With WinSCP you can use -hostkey=* to automatically accept the expected host key
How do you do something similar with your DLL ?
Currently I cannot connect to my FTP server because of this... error message is:

FTPS explicit...
Error: The remote certificate is invalid according to the validation procedure

_________________
Image Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex-Wishes
PostPosted: Sun Apr 01, 2018 11:30 pm 
Offline
PureBasic Expert
PureBasic Expert
User avatar

Joined: Fri Apr 25, 2003 4:34 pm
Posts: 921
Location: Canada
Your PB.Ex FTP library doesn't quite work.
In order for it to do FTPS it needs to work with certificates and it doesn't seem to have any options for that.

Apps like WinSCP have a flag -hostkey=* to automatically accept the expected host key

__________________________________________________
Post moved
Announcement>Applications - Feedback and Discussion
PB.Ex-Wishes>PB.Ex FTP (Windows)
02.04.2018
RSBasic

_________________
Image Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Mon Apr 02, 2018 10:39 am 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
@Paul
Do you have a test server for me? (IP or domain with port and username and password)
It worked with the tested servers of rebex.net. (FTPS implicit and explicit)
I don't have any other test servers. If you could give me temporary FTP access, it's very helpful and useful.

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Mon Apr 02, 2018 10:52 am 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
Hello Paul,

I have a new version for you. Can you test this version? I don't have an FTP server to test.
New version: http://www.rsbasic.de/downloads/downloa ... Ex_FTP.zip
Can you test it again? Thank you :)

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Mon Apr 02, 2018 4:50 pm 
Offline
PureBasic Expert
PureBasic Expert
User avatar

Joined: Fri Apr 25, 2003 4:34 pm
Posts: 921
Location: Canada
Hello RSBasic,

Your new version has fixed things.
FTPS both explicit and Implicit work perfectly now.

Very nice work !!

_________________
Image Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Mon Apr 02, 2018 4:53 pm 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
Wow, thank you very much for this positive feedback. :)

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Mon Apr 02, 2018 6:58 pm 
Offline
PureBasic Expert
PureBasic Expert
User avatar

Joined: Fri Apr 25, 2003 4:34 pm
Posts: 921
Location: Canada
I found this library so useful to me, I put together a small Windows help file for my own reference.
You are quite welcome to include it in your ZIP file.

PBExFTP Help File

_________________
Image Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Mon Apr 02, 2018 7:06 pm 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
Hello Paul,

thank you very much for creating your documentation in pdf and chm file. Image
I updated my archive file.

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Mon Jun 25, 2018 7:39 pm 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
PB.Ex FTP 1.0.3.0 has been released.

Changelog:
  • Bugfix

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Thu May 23, 2019 8:07 pm 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
PB.Ex FTP 1.0.4.0 has been released.

Changelog:
  • Added: FTPProgressEx()
  • Extended: ReceiveFTPFileEx(): Parameter "IsAsynchron" was added.
  • Extended: SendFTPFileEx(): Parameter "IsAsynchron" was added.
  • Changed: System requirements: .NET Framework 4.0 -> .NET Framework 4.5, because the required Assembly System.Progress does not exist until 4.5.
  • Changed: OutputError$ must be reserved with 128 characters before passing. Maximum length of the return is 128 characters including the NULL character.
  • Changed: OutputError$: This parameter is now optional and can be 0.

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Tue May 28, 2019 11:57 am 
Offline
Moderator
Moderator
User avatar

Joined: Thu Dec 31, 2009 11:05 pm
Posts: 1108
Location: Berlin (Germany)
PB.Ex FTP 1.0.5.0 has been released.

Changelog:
  • Bugfix: FTPProgressEx(): Did not work with very small files.

_________________
ImageImageImageImage Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PB.Ex FTP (Windows)
PostPosted: Sat Jul 27, 2019 4:30 pm 
Offline
User
User

Joined: Fri Aug 31, 2018 9:23 am
Posts: 40
Location: Australia
RSBasic wrote:
PB.Ex FTP 1.0.5.0 has been released.

The downloaded code reads:
Code:
Global PBEx_FTP
#PBEx_FTP_Version$ = "1.0.4.0"

Was this an oversight in the update?


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 18 posts ]  Go to page 1, 2  Next

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  

 


Powered by phpBB © 2008 phpBB Group
subSilver+ theme by Canver Software, sponsor Sanal Modifiye