SmartFTP FTP Library
sfFTPLib Module Reference

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 Documentation

◆ _HRESULT

◆ DownloadFlags

Flags that control the behavior of the ISFTPConnection::DownloadFileEx operation.

◆ 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.

◆ SFTPItemAttribute

◆ SFTPItemAttributeBit

◆ 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.

◆ 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:

  • User (Owner): The specific user account that owns the file.
  • Group: Other users who are members of the file's group.
  • Public (Other): Everyone else on the system.

Usage: Since this is a bit field, you combine flags to set permissions.

Enumeration Type Documentation

◆ _HRESULT

Enumerator
FTPLIB_E_BUSY 
FTPLIB_E_NOTCONNECTED 
FTPLIB_E_TIMEOUT 
FTPLIB_E_NOOPERATION 
FTPLIB_E_NOTINIT 
FTPLIB_E_WRONGREPLY 
FTPLIB_E_MOREDATA 
FTPLIB_E_PAUSED 
FTPLIB_E_SETTINGMISMATCH 
FTPLIB_E_NOTDISCONNECTED 
FTPLIB_E_CONNECTIONCLOSED 
FTPLIB_E_DATACONNECTION_CONNECT 
FTPLIB_E_AUTHENTICATION 
FTPLIB_E_PORTCOMMANDFAILED 
FTPLIB_E_RESTARTNOTPERMITTED 
FTPLIB_E_SERVERPROTOCOLVIOLATION 
FTPLIB_E_COMMANDNOTIMPLEMENTED 
FTPLIB_E_NOTAREGULARFILE 
FTPLIB_E_TOOMANYCONNECTIONS 
FTPLIB_E_PASVCOMMANDFAILED 
FTPLIB_E_TLSNOTSUPPORTED 
FTPLIB_E_HOSTNAMEEXPECTED 
FTPLIB_E_SERVERPOLICYREQUIRESTLS 
FTPLIB_E_IPBANNED 
FTPLIB_E_HOMEDIRECTORY 
FTPLIB_E_BOX_ACCEPTTERMSOFSERVICE 
FTPLIB_E_BOX_APPLICATIONBLOCKED 
FTPLIB_E_BOX_CAPTCHAREQUIRED 
FTPLIB_E_LOCALPOLICYREQUIRESCCC 
FTPLIB_E_NOTLOGGEDIN 
FTPLIB_E_TOOMANYUSERS 
FTPLIB_E_TLSDATASESSIONTOKENERROR 
FTPLIB_E_COULDNOTCREATEFILE 
FTPLIB_E_SSH_UNEXPECTEDREMOTEID 
FTPLIB_E_SSH_HOSTAUTHENTICATION 
FTPLIB_E_SSH_NEGOTIATION 
FTPLIB_E_SSH_INVALIDHOSTKEY 
FTPLIB_E_SSH_INVALIDMESSAGE 
FTPLIB_E_SSH_CHANNEL_REQUESTFAILURE 
FTPLIB_E_SSH_CHANNEL_OPENFAILURE 
FTPLIB_E_SSH_KEYEXCHANGE 
FTPLIB_E_SSH_CHANNEL_EOF 
FTPLIB_E_SSH_INVALIDHOSTSIGNATURE 
FTPLIB_E_SSH_HOSTKEYREJECTED 
FTPLIB_E_KEYFILE_PASSWORD 
FTPLIB_E_KEYFILE_INVALIDFORMAT 
FTPLIB_E_KEY_INVALID 
FTPLIB_E_KEYFILE_UNSUPPORTED 
FTPLIB_E_SFTP_UNEXPECTEDPACKETTYPE 
FTPLIB_E_SFTP_STATUSERROR 
FTPLIB_E_SFTP_INVALIDMESSAGE 
FTPLIB_E_COMMANDNOTIMPLEMENTEDFORARGUMENT 
FTPLIB_E_CHARACTERCONVERSION 
FTPLIB_E_SSHSERVERDETECTED 
FTPLIB_E_LICENSE_FEATURENOTLICENSED 
FTPLIB_E_LICENSE_PRODUCTMISMATCH 
FTPLIB_E_LICENSE_VERSIONMISMATCH 
FTPLIB_E_LICENSE_MACHINEIDMISMATCH 
FTPLIB_E_LICENSE_EXPIRED 
FTPLIB_E_LICENSE_MAINTENANCEEXPIRED 
FTPLIB_E_ACTIVATION_UNSUPPORTEDVERSION 
FTPLIB_E_ACTIVATION_INVALIDSERIAL 
FTPLIB_E_ACTIVATION_PRODUCTMISMATCH 
FTPLIB_E_ACTIVATION_LICENSEINACTIVE 
FTPLIB_E_ACTIVATION_LICENSEEXPIRED 
FTPLIB_E_ACTIVATION_LICENSEEXHAUSTED 
FTPLIB_E_ACTIVATION_INVALIDREQUEST 
FTPLIB_E_ACTIVATION_SUBLICENSENOTFOUND 
FTPLIB_E_ACTIVATION_MAINTENANCEEXPIRED 
FTPLIB_E_ACTIVATION_SUBLICENSEDISABLED 
FTPLIB_E_ACTIVATION_PRODUCTVERSIONNOTSUPPORTED 
FTPLIB_E_ACTIVATION_OPERATINGSYSTEMNOTSUPPORTED 

◆ DownloadFlags

Flags that control the behavior of the ISFTPConnection::DownloadFileEx operation.

Enumerator
ftpDownloadFlagNone 

Default behavior.

Strict range checking is enforced. If you request a range that exceeds the file size (e.g., asking for 100 bytes from a 50-byte file), the operation may fail with an error indicating a premature end of file or invalid range.

ftpDownloadFlagReadBeyondEnd 

Allows the read operation to complete successfully even if the requested range exceeds the file size.

Behavior: If this flag is set and the endPosition is beyond the actual End of File (EOF), the component will simply return all available bytes up to the EOF and treat the transfer as successful.

Use Case: Useful when downloading files of unknown size or when using a fixed buffer size (e.g., "Give me the next 1MB") without needing to check the file attributes (stat) first.

◆ 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.

◆ SFTPItemAttribute

Enumerator
ftpSFTPItemAttributeSize 
ftpSFTPItemAttributeUIDGID 
ftpSFTPItemAttributePermissions 
ftpSFTPItemAttributeAccessTime 
ftpSFTPItemAttributeCreateTime 
ftpSFTPItemAttributeModifyTime 
ftpSFTPItemAttributeACL 
ftpSFTPItemAttributeOwnerGroup 
ftpSFTPItemAttributeSubSecondTimes 
ftpSFTPItemAttributeBits 
ftpSFTPItemAttributeAllocationSize 
ftpSFTPItemAttributeTextHint 
ftpSFTPItemAttributeMimeType 
ftpSFTPItemAttributeLinkCount 
ftpSFTPItemAttributeUntranslatedName 
ftpSFTPItemAttributeCTime 
ftpSFTPItemAttributeExtended 

◆ SFTPItemAttributeBit

Enumerator
ftpSFTPItemAttributeBitReadOnly 
ftpSFTPItemAttributeBitSystem 
ftpSFTPItemAttributeBitHidden 
ftpSFTPItemAttributeBitCaseInsensitive 
ftpSFTPItemAttributeBitArchive 
ftpSFTPItemAttributeBitEncrypted 
ftpSFTPItemAttributeBitCompressed 
ftpSFTPItemAttributeBitSparse 
ftpSFTPItemAttributeBitAppendOnly 
ftpSFTPItemAttributeBitImmutable 
ftpSFTPItemAttributeBitSync 
ftpSFTPItemAttributeBitTranslationErr 

◆ 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.

Enumerator
ftpSSHAuthenticationUnknown 
ftpSSHAuthenticationNone 

The "none" authentication method.

The client sends a request with no credentials.

  • Discovery: The primary purpose is to provoke the server into returning a list of supported authentication methods (e.g., "publickey,password").
  • Anonymous: On very rare, insecure servers, this may allow access without a password.
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.

  • Usage: Required for Multi-Factor Authentication (MFA), One-Time Passwords (OTP), Google Authenticator, or changing an expired password during login.
  • Behavior: The server sends prompts (questions), and the client sends answers.
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.

◆ 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:

  • User (Owner): The specific user account that owns the file.
  • Group: Other users who are members of the file's group.
  • Public (Other): Everyone else on the system.

Usage: Since this is a bit field, you combine flags to set permissions.

Enumerator
ftpUnixPermissionPublicExecute 

Public Execute (x).

Allows anyone to execute the file (if binary/script) or enter the directory. Value: 0x0001 (Octal 1)

ftpUnixPermissionPublicWrite 

Public Write (w).

Allows anyone to modify the file or create/delete files in the directory. Security Risk: Use with extreme caution. Value: 0x0002 (Octal 2)

ftpUnixPermissionPublicRead 

Public Read (r).

Allows anyone to read the file content or list files in the directory. Value: 0x0004 (Octal 4)

ftpUnixPermissionGroupExecute 

Group Execute (x).

Allows members of the file's group to execute the file or enter the directory. Value: 0x0008 (Octal 10)

ftpUnixPermissionGroupWrite 

Group Write (w).

Allows group members to modify the file. Value: 0x0010 (Octal 20)

ftpUnixPermissionGroupRead 

Group Read (r).

Allows group members to read the file. Value: 0x0020 (Octal 40)

ftpUnixPermissionUserExecute 

User Execute (x).

Allows the owner to execute the file or enter the directory. Value: 0x0040 (Octal 100)

ftpUnixPermissionUserWrite 

User Write (w).

Allows the owner to modify the file. Value: 0x0080 (Octal 200)

ftpUnixPermissionUserRead 

User Read (r).

Allows the owner to read the file. Value: 0x0100 (Octal 400)

ftpUnixPermissionSystemSticky 

Sticky Bit (t).

  • Directories: Restricts file deletion. Only the file owner, directory owner, or root can rename or delete files within this directory (e.g., /tmp). Value: 0x0200 (Octal 1000)
ftpUnixPermissionSystemSetGID 

Set Group ID (SetGID) (s).

  • Files: Executes the file with the permissions of the group that owns it.
  • Directories: New files created inside inherit the directory's Group ID rather than the creating user's primary group. Value: 0x0400 (Octal 2000)
ftpUnixPermissionSystemSetUID 

Set User ID (SetUID) (s).

  • Files: Executes the file with the permissions of the user who owns it (e.g., sudo). Value: 0x0800 (Octal 4000)

Function Documentation

◆ importlib()

sfFTPLib::importlib ( STDOLE_TLB )