|
SmartFTP FTP Library
|
Classes | |
| interface | _IFTPConnectionEvents |
| interface | IFTPConnectionEvents |
| class | FTPConnectionSTA |
| class | FTPConnectionMTA |
| class | FTPParser |
| class | FTPPortPool |
| The concrete implementation of the port pool manager. More... | |
| class | FTPFXP |
| The implementation class for Server-to-Server (FXP) transfers. More... | |
| class | GlobalSpeedLimit |
| The component class responsible for managing global bandwidth usage. More... | |
| class | Global |
| The central configuration and licensing manager for the library. More... | |
| interface | _ISFTPConnectionEvents |
| Defines the events fired by the SFTPConnection class. More... | |
| interface | ISFTPConnectionEvents |
| A callback interface for handling SFTP connection state changes. More... | |
| interface | _ISSHConnectionEvents |
| Defines the events fired by the SSHConnection class during the session lifecycle. More... | |
| interface | ISSHConnectionEvents |
| class | SFTPConnection |
| The main class for establishing SFTP (SSH File Transfer Protocol) connections. More... | |
| class | FTPItem |
| Represents a single file, directory, or symbolic link within a file system. More... | |
| class | OpenSSLKey |
| class | KeyManager |
| Provides a centralized toolkit for creating, loading, and managing SSH user identity keys. More... | |
| class | AES128CTRWriteStream |
| class | AES128CTRReadStream |
| class | CryptoHash |
| class | FTPClientId |
| Encapsulates the client application identity sent to the server. More... | |
| class | ParserWriteStream |
| class | SFTPVendorId |
| class | SSHConnection |
| The main class for establishing SSH (Secure Shell) sessions for command execution. More... | |
| class | Utils |
| class | SSHKeyBlobHelper |
| class | BCryptKey |
| class | NCryptKey |
| class | FileLogger |
Typedefs | |
| typedef enum sfFTPLib::_HRESULT | _HRESULT |
| typedef enum sfFTPLib::UnixPermissions | UnixPermissions |
| Defines the access permissions for files and directories on Unix-like systems. | |
| typedef enum sfFTPLib::SFTPItemAttributeBit | SFTPItemAttributeBit |
| typedef enum sfFTPLib::SFTPItemAttribute | SFTPItemAttribute |
| typedef enum sfFTPLib::LISTOption | LISTOption |
| Flags to control the behavior and output of the FTP LIST command. | |
| typedef enum sfFTPLib::DownloadFlags | DownloadFlags |
| Flags that control the behavior of the ISFTPConnection::DownloadFileEx operation. | |
| typedef enum sfFTPLib::SSHAuthentication | SSHAuthentication |
| Identifies the authentication methods defined in the SSH-2 protocol (RFC 4252). | |
Enumerations | |
| enum | _HRESULT { FTPLIB_E_BUSY = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3101) , FTPLIB_E_NOTCONNECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3102) , FTPLIB_E_TIMEOUT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3103) , FTPLIB_E_NOOPERATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3104) , FTPLIB_E_NOTINIT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3105) , FTPLIB_E_WRONGREPLY = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3106) , FTPLIB_E_MOREDATA = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3108) , FTPLIB_E_PAUSED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3109) , FTPLIB_E_SETTINGMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310a) , FTPLIB_E_NOTDISCONNECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310b) , FTPLIB_E_CONNECTIONCLOSED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310c) , FTPLIB_E_DATACONNECTION_CONNECT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310d) , FTPLIB_E_AUTHENTICATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310e) , FTPLIB_E_PORTCOMMANDFAILED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310f) , FTPLIB_E_RESTARTNOTPERMITTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3110) , FTPLIB_E_SERVERPROTOCOLVIOLATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3111) , FTPLIB_E_COMMANDNOTIMPLEMENTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3112) , FTPLIB_E_NOTAREGULARFILE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3113) , FTPLIB_E_TOOMANYCONNECTIONS = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3114) , FTPLIB_E_PASVCOMMANDFAILED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3115) , FTPLIB_E_TLSNOTSUPPORTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3116) , FTPLIB_E_HOSTNAMEEXPECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3117) , FTPLIB_E_SERVERPOLICYREQUIRESTLS = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3118) , FTPLIB_E_IPBANNED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3119) , FTPLIB_E_HOMEDIRECTORY = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311a) , FTPLIB_E_BOX_ACCEPTTERMSOFSERVICE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311b) , FTPLIB_E_BOX_APPLICATIONBLOCKED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311c) , FTPLIB_E_BOX_CAPTCHAREQUIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311d) , FTPLIB_E_LOCALPOLICYREQUIRESCCC = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311e) , FTPLIB_E_NOTLOGGEDIN = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311f) , FTPLIB_E_TOOMANYUSERS = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3129) , FTPLIB_E_TLSDATASESSIONTOKENERROR = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x312B) , FTPLIB_E_COULDNOTCREATEFILE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x312C) , FTPLIB_E_SSH_UNEXPECTEDREMOTEID = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3120) , FTPLIB_E_SSH_HOSTAUTHENTICATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3121) , FTPLIB_E_SSH_NEGOTIATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3122) , FTPLIB_E_SSH_INVALIDHOSTKEY = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3123) , FTPLIB_E_SSH_INVALIDMESSAGE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3124) , FTPLIB_E_SSH_CHANNEL_REQUESTFAILURE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3125) , FTPLIB_E_SSH_CHANNEL_OPENFAILURE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3126) , FTPLIB_E_SSH_KEYEXCHANGE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3127) , FTPLIB_E_SSH_CHANNEL_EOF = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3128) , FTPLIB_E_SSH_INVALIDHOSTSIGNATURE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x312A) , FTPLIB_E_SSH_HOSTKEYREJECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x312D) , FTPLIB_E_KEYFILE_PASSWORD = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3130) , FTPLIB_E_KEYFILE_INVALIDFORMAT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3131) , FTPLIB_E_KEY_INVALID = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3132) , FTPLIB_E_KEYFILE_UNSUPPORTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3133) , FTPLIB_E_SFTP_UNEXPECTEDPACKETTYPE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3140) , FTPLIB_E_SFTP_STATUSERROR = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3141) , FTPLIB_E_SFTP_INVALIDMESSAGE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3142) , FTPLIB_E_COMMANDNOTIMPLEMENTEDFORARGUMENT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3150) , FTPLIB_E_CHARACTERCONVERSION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3151) , FTPLIB_E_SSHSERVERDETECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3152) , FTPLIB_E_LICENSE_FEATURENOTLICENSED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3200) , FTPLIB_E_LICENSE_PRODUCTMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3201) , FTPLIB_E_LICENSE_VERSIONMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3202) , FTPLIB_E_LICENSE_MACHINEIDMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3203) , FTPLIB_E_LICENSE_EXPIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3204) , FTPLIB_E_LICENSE_MAINTENANCEEXPIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3205) , FTPLIB_E_ACTIVATION_UNSUPPORTEDVERSION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5500) , FTPLIB_E_ACTIVATION_INVALIDSERIAL = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5501) , FTPLIB_E_ACTIVATION_PRODUCTMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5502) , FTPLIB_E_ACTIVATION_LICENSEINACTIVE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5503) , FTPLIB_E_ACTIVATION_LICENSEEXPIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5504) , FTPLIB_E_ACTIVATION_LICENSEEXHAUSTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5505) , FTPLIB_E_ACTIVATION_INVALIDREQUEST = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5506) , FTPLIB_E_ACTIVATION_SUBLICENSENOTFOUND = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5507) , FTPLIB_E_ACTIVATION_MAINTENANCEEXPIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5508) , FTPLIB_E_ACTIVATION_SUBLICENSEDISABLED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5509) , FTPLIB_E_ACTIVATION_PRODUCTVERSIONNOTSUPPORTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x550A) , FTPLIB_E_ACTIVATION_OPERATINGSYSTEMNOTSUPPORTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x550B) } |
| enum | UnixPermissions { ftpUnixPermissionPublicExecute = 0x0001 , ftpUnixPermissionPublicWrite = 0x0002 , ftpUnixPermissionPublicRead = 0x0004 , ftpUnixPermissionGroupExecute = 0x0008 , ftpUnixPermissionGroupWrite = 0x0010 , ftpUnixPermissionGroupRead = 0x0020 , ftpUnixPermissionUserExecute = 0x0040 , ftpUnixPermissionUserWrite = 0x0080 , ftpUnixPermissionUserRead = 0x0100 , ftpUnixPermissionSystemSticky = 0x0200 , ftpUnixPermissionSystemSetGID = 0x0400 , ftpUnixPermissionSystemSetUID = 0x0800 } |
| Defines the access permissions for files and directories on Unix-like systems. More... | |
| enum | SFTPItemAttributeBit { ftpSFTPItemAttributeBitReadOnly = 0x1 , ftpSFTPItemAttributeBitSystem = 0x2 , ftpSFTPItemAttributeBitHidden = 0x4 , ftpSFTPItemAttributeBitCaseInsensitive = 0x8 , ftpSFTPItemAttributeBitArchive = 0x10 , ftpSFTPItemAttributeBitEncrypted = 0x20 , ftpSFTPItemAttributeBitCompressed = 0x40 , ftpSFTPItemAttributeBitSparse = 0x80 , ftpSFTPItemAttributeBitAppendOnly = 0x100 , ftpSFTPItemAttributeBitImmutable = 0x200 , ftpSFTPItemAttributeBitSync = 0x400 , ftpSFTPItemAttributeBitTranslationErr = 0x800 } |
| enum | SFTPItemAttribute { ftpSFTPItemAttributeSize = 0x1 , ftpSFTPItemAttributeUIDGID = 0x2 , ftpSFTPItemAttributePermissions = 0x4 , ftpSFTPItemAttributeAccessTime = 0x8 , ftpSFTPItemAttributeCreateTime = 0x10 , ftpSFTPItemAttributeModifyTime = 0x20 , ftpSFTPItemAttributeACL = 0x40 , ftpSFTPItemAttributeOwnerGroup = 0x80 , ftpSFTPItemAttributeSubSecondTimes = 0x100 , ftpSFTPItemAttributeBits = 0x200 , ftpSFTPItemAttributeAllocationSize = 0x400 , ftpSFTPItemAttributeTextHint = 0x800 , ftpSFTPItemAttributeMimeType = 0x1000 , ftpSFTPItemAttributeLinkCount = 0x2000 , ftpSFTPItemAttributeUntranslatedName = 0x4000 , ftpSFTPItemAttributeCTime = 0x8000 , ftpSFTPItemAttributeExtended = 0x80000000 } |
| enum | LISTOption { ftpLISTOptionLong = 0x0001 , ftpLISTOptionAll = 0x0002 , ftpLISTOptionLinks = 0x0004 , ftpLISTOptionT = 0x0008 , ftpLISTOptionRecursive = 0x0010 } |
| Flags to control the behavior and output of the FTP LIST command. More... | |
| enum | DownloadFlags { ftpDownloadFlagNone = 0x0 , ftpDownloadFlagReadBeyondEnd = 0x1 } |
| Flags that control the behavior of the ISFTPConnection::DownloadFileEx operation. More... | |
| enum | SSHAuthentication { ftpSSHAuthenticationUnknown = 0 , ftpSSHAuthenticationNone = 1 , ftpSSHAuthenticationPassword = 2 , ftpSSHAuthenticationKeyboardInteractive = 3 , ftpSSHAuthenticationPublicKey = 4 , ftpSSHAuthenticationSecurID = 5 , ftpSSHAuthenticationHostBased = 6 , ftpSSHAuthenticationGSSAPI = 7 } |
| Identifies the authentication methods defined in the SSH-2 protocol (RFC 4252). More... | |
Functions | |
| importlib (STDOLE_TLB) | |
| typedef enum sfFTPLib::_HRESULT sfFTPLib::_HRESULT |
| typedef enum sfFTPLib::DownloadFlags sfFTPLib::DownloadFlags |
Flags that control the behavior of the ISFTPConnection::DownloadFileEx operation.
| typedef enum sfFTPLib::LISTOption sfFTPLib::LISTOption |
Flags to control the behavior and output of the FTP LIST command.
The Mechanism: When a directory listing is requested via standard FTP, the component translates these bitmask flags into a string of arguments (e.g., "-la") sent alongside the LIST command.
Compatibility Warning: Not all FTP servers support these flags. While widely supported by Unix-based servers, some Windows-based or embedded FTP servers may return an error or ignore these arguments entirely.
| typedef enum sfFTPLib::SFTPItemAttribute sfFTPLib::SFTPItemAttribute |
| typedef enum sfFTPLib::SSHAuthentication sfFTPLib::SSHAuthentication |
Identifies the authentication methods defined in the SSH-2 protocol (RFC 4252).
These values are used to configure the ISSHConnection::Authentications property. The client uses this list to negotiate the login method with the server.
| typedef enum sfFTPLib::UnixPermissions sfFTPLib::UnixPermissions |
Defines the access permissions for files and directories on Unix-like systems.
The Context: Unix file systems control access using a set of 12 bits. These bits determine who can read, write, or execute a file. The permissions are divided into three scopes:
Usage: Since this is a bit field, you combine flags to set permissions.
| enum sfFTPLib::_HRESULT |
Flags that control the behavior of the ISFTPConnection::DownloadFileEx operation.
| enum sfFTPLib::LISTOption |
Flags to control the behavior and output of the FTP LIST command.
The Mechanism: When a directory listing is requested via standard FTP, the component translates these bitmask flags into a string of arguments (e.g., "-la") sent alongside the LIST command.
Compatibility Warning: Not all FTP servers support these flags. While widely supported by Unix-based servers, some Windows-based or embedded FTP servers may return an error or ignore these arguments entirely.
| Enumerator | |
|---|---|
| ftpLISTOptionLong | Formats the output in "Long" format (detailed). Maps to the -l flag. Includes permissions, owner, and size. Usually required for the component to parse the IFTPItem properties correctly. |
| ftpLISTOptionAll | Includes hidden files in the listing. Maps to the -a flag. Displays files starting with a dot (.), which are otherwise hidden by most servers. |
| ftpLISTOptionLinks | Follows symbolic links. Maps to the -L flag. If a directory entry is a link, the server will attempt to show information for the target of the link. |
| ftpLISTOptionT | Sorts by modification time. Maps to the -t flag. The server will return the most recently modified files first. |
| ftpLISTOptionRecursive | Lists subdirectories recursively. Maps to the -R flag. Caution: This can cause significant delays and high memory usage on directories with deep structures. |
Identifies the authentication methods defined in the SSH-2 protocol (RFC 4252).
These values are used to configure the ISSHConnection::Authentications property. The client uses this list to negotiate the login method with the server.
| Enumerator | |
|---|---|
| ftpSSHAuthenticationUnknown | |
| ftpSSHAuthenticationNone | The "none" authentication method. The client sends a request with no credentials.
|
| ftpSSHAuthenticationPassword | Standard password authentication. The client sends the user's password directly to the server over the encrypted channel. |
| ftpSSHAuthenticationKeyboardInteractive | Keyboard-Interactive authentication (RFC 4256). A flexible challenge-response mechanism where the server drives the interaction.
|
| ftpSSHAuthenticationPublicKey | Public Key authentication. The most secure and recommended method. The client proves its identity by signing a challenge with a private key (RSA, DSA, ECDSA, Ed25519).
|
| ftpSSHAuthenticationSecurID | Legacy RSA SecurID authentication. A proprietary method for older RSA SecurID systems. Modern implementations usually prefer KeyboardInteractive for token entry. |
| ftpSSHAuthenticationHostBased | Host-Based authentication. The client machine authenticates itself to the server (similar to the legacy .rhosts / rlogin mechanism but cryptographically secure). The user is trusted because the machine is trusted. |
| ftpSSHAuthenticationGSSAPI | GSSAPI (Generic Security Services Application Program Interface). Used for Single Sign-On (SSO) integration, typically via Kerberos (Active Directory). If the user is already logged into the domain, this allows password-less SSH login. |
Defines the access permissions for files and directories on Unix-like systems.
The Context: Unix file systems control access using a set of 12 bits. These bits determine who can read, write, or execute a file. The permissions are divided into three scopes:
Usage: Since this is a bit field, you combine flags to set permissions.
| sfFTPLib::importlib | ( | STDOLE_TLB | ) |