SmartFTP FTP Library
sfFTPLib.idl File Reference
#include <olectl.h>
#include <WinError.h>
import oaidl.idl;
import ocidl.idl;
import propidl.idl;

Go to the source code of this file.

Classes

interface  IGlobal
 Provides global configuration, statistics, and licensing management for the library. More...
interface  IFTPPortPool
 Manages a specific range of local ports for Active FTP data connections. More...
interface  IGlobalSpeedLimit
interface  ISecurityConnectionInfo
 Encapsulates the cryptographic parameters of an active TLS/SSL connection. More...
interface  IStreamFilter
interface  IStreamFilterInfo
interface  IFTPClientId
 Encapsulates the client application identity sent to the server via the CSID and CLNT commands. More...
interface  IFTPServerId
 Encapsulates the server identification and capability data returned in a CSID reply. More...
interface  IFTPServerState
interface  IKey
 Encapsulates a cryptographic key pair, public key, or certificate. More...
interface  IProxySettings
 IProxySettings Interface. More...
interface  ISocketSettings
interface  ISpeedLimitSettings
interface  ICompletionHandler
interface  ITlsSocket
interface  ISFTPExtendedCheckFileResult
interface  ILogger
interface  IConnectionWithLogger
interface  IFileLogger
interface  IFTPItem
 The IFTPItem interface is a representation of a folder/file. More...
interface  IFTPItems
interface  ITransferProgressEvents
 A callback interface for monitoring data transfer progress. More...
interface  IFTPConnection
interface  IFTPParser
interface  IFTPParserD
 Interface for parsing raw FTP directory listings. More...
interface  IFTPFXP
interface  ISFTPStatVFS
interface  ISFTPVendorId
 Encapsulates the software identification data exchanged during the SFTP version negotiation. More...
interface  ISFTPServerState
interface  ISFTPSpaceAvailable
interface  ISSHConnectionInfo
 Provides detailed information about the cryptographic algorithms used in the active SSH session. More...
interface  ISSHServerState
 Encapsulates information about the remote SSH server's identity and environment. More...
interface  ISSHConnection
interface  ISFTPConnection
interface  IOpenSSLKey
interface  IKeyManager
interface  IConnection
interface  IAES128CTRWriteStream
interface  IAES128CTRReadStream
interface  IHashProgress
interface  ICryptoHash
interface  IParserWriteStream
interface  IUtils
interface  ISSHChannelClient
interface  ISSHKeyBlobHelper
 Utility interface for extracting the raw SSH public key blob from a key object. More...
interface  IBCryptKey
interface  INCryptKey
interface  INCryptKeyCustom
interface  sfFTPLib::_IFTPConnectionEvents
interface  sfFTPLib::IFTPConnectionEvents
class  sfFTPLib::FTPConnectionSTA
class  sfFTPLib::FTPConnectionMTA
class  sfFTPLib::FTPParser
class  sfFTPLib::FTPPortPool
 The concrete implementation of the port pool manager. More...
class  sfFTPLib::FTPFXP
 The implementation class for Server-to-Server (FXP) transfers. More...
class  sfFTPLib::GlobalSpeedLimit
 The component class responsible for managing global bandwidth usage. More...
class  sfFTPLib::Global
 The central configuration and licensing manager for the library. More...
interface  sfFTPLib::_ISFTPConnectionEvents
 Defines the events fired by the SFTPConnection class. More...
interface  sfFTPLib::ISFTPConnectionEvents
 A callback interface for handling SFTP connection state changes. More...
interface  sfFTPLib::_ISSHConnectionEvents
 Defines the events fired by the SSHConnection class during the session lifecycle. More...
interface  sfFTPLib::ISSHConnectionEvents
class  sfFTPLib::SFTPConnection
 The main class for establishing SFTP (SSH File Transfer Protocol) connections. More...
class  sfFTPLib::FTPItem
 Represents a single file, directory, or symbolic link within a file system. More...
class  sfFTPLib::OpenSSLKey
class  sfFTPLib::KeyManager
 Provides a centralized toolkit for creating, loading, and managing SSH user identity keys. More...
class  sfFTPLib::AES128CTRWriteStream
class  sfFTPLib::AES128CTRReadStream
class  sfFTPLib::CryptoHash
class  sfFTPLib::FTPClientId
 Encapsulates the client application identity sent to the server. More...
class  sfFTPLib::ParserWriteStream
class  sfFTPLib::SFTPVendorId
class  sfFTPLib::SSHConnection
 The main class for establishing SSH (Secure Shell) sessions for command execution. More...
class  sfFTPLib::Utils
class  sfFTPLib::SSHKeyBlobHelper
class  sfFTPLib::BCryptKey
class  sfFTPLib::NCryptKey
class  sfFTPLib::FileLogger

Modules

library  sfFTPLib

Typedefs

typedef enum FTPProtocol FTPProtocol
 Specifies the security protocol and encryption mode for the connection.
typedef enum ProxyType ProxyType
typedef enum PortMode PortMode
 Specifies how the client determines the IP address sent in the PORT command (Active Mode).
typedef enum PassiveMode PassiveMode
 Specifies how the client handles the IP address returned in the FTP server's PASV response.
typedef enum DataTransferType DataTransferType
 Defines the format used for data transfer.
typedef enum DataTransferMode DataTransferMode
 Defines the transmission mode for the data connection.
typedef enum DataProtection DataProtection
 Defines the security level of a communication channel (Control or Data).
typedef enum ProtocolFamily ProtocolFamily
typedef enum ServerCapability ServerCapability
typedef enum ServerCapabilityState ServerCapabilityState
typedef enum CaseSensitivity CaseSensitivity
 Defines how the server handles capitalization in filenames.
typedef enum ParserFormat ParserFormat
typedef enum ServerType ServerType
 Identifies the operating system or server software type of the remote host.
typedef enum ServerSoftware ServerSoftware
 server software running on the remote server
typedef enum OperatingSystem OperatingSystem
typedef enum StatusEventType StatusEventType
typedef enum ConnectionStatus ConnectionStatus
typedef enum SFTPConnectionStatus SFTPConnectionStatus
typedef enum LogFormat LogFormat
typedef enum HashAlgo HashAlgo
typedef enum KeyExchange KeyExchange
 Identifies the Key Exchange (KEX) algorithms supported by the SSH client.
typedef enum Encryption Encryption
 Defines the symmetric encryption algorithms available for the SSH tunnel.
typedef enum HMAC HMAC
 Defines the Message Authentication Code (HMAC) algorithms available for data integrity.
typedef enum SSHCompression SSHCompression
 Identifies the compression algorithms available for the SSH connection.
typedef enum FeatureDiscoveryMode FeatureDiscoveryMode
 Determines the timing of the FEAT (Feature Discovery) command.
typedef enum ItemType ItemType
 Categorizes the type of a filesystem object (file, directory, link, etc.).
typedef enum KeyType KeyType
typedef enum KeyAlgo KeyAlgo
typedef enum SSHPublicKeyAlgo SSHPublicKeyAlgo
 Defines the public key algorithms used for server host keys and client authentication.
typedef enum CertificateType CertificateType
typedef enum FTPItemAttribute FTPItemAttribute
typedef enum SSHServerSoftware SSHServerSoftware
typedef enum SFTPStatus SFTPStatus
typedef enum GSSAPIMethod GSSAPIMethod
typedef enum KeyFileFormat KeyFileFormat
typedef enum sfFTPLib::_HRESULT sfFTPLib::_HRESULT
typedef enum sfFTPLib::UnixPermissions sfFTPLib::UnixPermissions
 Defines the access permissions for files and directories on Unix-like systems.
typedef enum sfFTPLib::SFTPItemAttributeBit sfFTPLib::SFTPItemAttributeBit
typedef enum sfFTPLib::SFTPItemAttribute sfFTPLib::SFTPItemAttribute
typedef enum sfFTPLib::LISTOption sfFTPLib::LISTOption
 Flags to control the behavior and output of the FTP LIST command.
typedef enum sfFTPLib::DownloadFlags sfFTPLib::DownloadFlags
 Flags that control the behavior of the ISFTPConnection::DownloadFileEx operation.
typedef enum sfFTPLib::SSHAuthentication sfFTPLib::SSHAuthentication
 Identifies the authentication methods defined in the SSH-2 protocol (RFC 4252).

Enumerations

enum  FTPProtocol { ftpProtocolNormal = 0 , ftpProtocolSSLImplicit = 1 , ftpProtocolRequireTLS = 2 , ftpProtocolPreferTLS = 4 }
 Specifies the security protocol and encryption mode for the connection. More...
enum  ProxyType {
  ftpProxyTypeNone = 1 , ftpProxyTypeSOCKS5 = 2 , ftpProxyTypeSOCKS4 = 3 , ftpProxyTypeSOCKS4A = 4 ,
  ftpProxyTypeHTTP = 5
}
enum  PortMode { ftpPortModeDefault = 1 , ftpPortModeManual = 2 }
 Specifies how the client determines the IP address sent in the PORT command (Active Mode). More...
enum  PassiveMode { ftpPassiveModeUseIPFromReply = 1 , ftpPassiveModeUseHostIP = 2 , ftpPassiveModeAuto = 3 }
 Specifies how the client handles the IP address returned in the FTP server's PASV response. More...
enum  DataTransferType { ftpDataTransferTypeUnknown = 0 , ftpDataTransferTypeASCII = 1 , ftpDataTransferTypeImage = 2 , ftpDataTransferTypeEBCDIC = 3 }
 Defines the format used for data transfer. More...
enum  DataTransferMode { ftpDataTransferModeUnknown = 0 , ftpDataTransferModeStream = 1 , ftpDataTransferModeZ = 2 }
 Defines the transmission mode for the data connection. More...
enum  DataProtection { ftpDataProtectionUnknown = 0 , ftpDataProtectionClear = 1 , ftpDataProtectionPrivate = 2 }
 Defines the security level of a communication channel (Control or Data). More...
enum  ProtocolFamily { ftpProtocolFamilyUNSPEC = 0 , ftpProtocolFamilyINET4 = 2 , ftpProtocolFamilyINET6 = 23 }
enum  ServerCapability {
  ftpServerCapabilityGetFileSize = 0 , ftpServerCapabilityGetModifyTime = 1 , ftpServerCapabilityGetCreateTime = 2 , ftpServerCapabilitySetModifyTime = 3 ,
  ftpServerCapabilitySetCreateTime = 4 , ftpServerCapabilityCopyFile = 5 , ftpServerCapabilityFXPFile = 6 , ftpServerCapabilityStat = 7 ,
  ftpServerCapabilityGetMLST = 8 , ftpServerCapabilitySetUnixPermissions = 9 , ftpServerCapabilityRestart = 10 , ftpServerCapabilityUTF8 = 11 ,
  ftpServerCapabilityCompression = 12 , ftpServerCapabilityRange = 13 , ftpServerCapabilityMachineReadableList = 14
}
enum  ServerCapabilityState { ftpServerCapabilityStateUnavailable = 0 , ftpServerCapabilityStateAvailable = 1 , ftpServerCapabilityStateUnknown = 2 }
enum  CaseSensitivity { ftpCaseSensitivityUnknown = 0 , ftpCaseSensitivityYes = 1 , ftpCaseSensitivityNo = 2 }
 Defines how the server handles capitalization in filenames. More...
enum  ParserFormat {
  ftpParserFormatUnknown = 0 , ftpParserFormatUnix = 1 , ftpParserFormatMLST = 2 , ftpParserFormatVMS = 3 ,
  ftpParserFormatVxWorks = 4 , ftpParserFormatDOS = 5 , ftpParserFormatTandem = 6 , ftpParserFormatVOS = 7 ,
  ftpParserFormatMVS = 8 , ftpParserFormatAS400 = 9 , ftpParserFormatOS2 = 10 , ftpParserFormatNetware = 11 ,
  ftpParserFormatpSOSystem = 12 , ftpParserFormatNT = 13 , ftpParserFormatMD11 = 14 , ftpParserFormatBS2000 = 15 ,
  ftpParserFormatVM = 16 , ftpParserFormatConnectEnterprise = 17 , ftpParserFormatGrassValley = 18 , ftpParserFormatSimple = 19 ,
  ftpParserFormatGXSEnterprise = 20 , ftpParserFormatGXSInformationExchangeFTPGateway = 21 , ftpParserFormatSecurePortal2000 = 22 , ftpParserFormatMeditech = 23
}
enum  ServerType {
  ftpServerTypeUnknown = 0 , ftpServerTypeUnix = 1 , ftpServerTypePeterLewis = 2 , ftpServerTypeVMS = 3 ,
  ftpServerTypeNT = 4 , ftpServerTypeAmiga = 5 , ftpServerTypeMacOS = 6 , ftpServerTypeMVS = 7 ,
  ftpServerTypeAS400 = 8 , ftpServerTypeOS2 = 9 , ftpServerTypeTandem = 10 , ftpServerTypeVOS = 11 ,
  ftpServerTypeMD11 = 12 , ftpServerTypepSOSystem = 13 , ftpServerTypeNetware = 14 , ftpServerTypeTNTEmbeddedToolSuite = 15 ,
  ftpServerTypeBS2000 = 16 , ftpServerTypeVM = 17 , ftpServerTypeVxWorks = 18 , ftpServerTypeWindowsCE = 19 ,
  ftpServerTypeGXSEnterprise = 20 , ftpServerTypeICS = 21 , ftpServerTypeGrassValley = 22 , ftpServerTypeGXSInformationExchangeFTPGateway = 23 ,
  ftpServerTypeSecurePortal2000 = 24 , ftpServerTypeMudOS = 25
}
 Identifies the operating system or server software type of the remote host. More...
enum  ServerSoftware {
  ftpServerSoftwareUnknown = 0 , ftpServerSoftwareRaidenFTPd = 1 , ftpServerSoftwareServU = 2 , ftpServerSoftwareGSFTPS = 3 ,
  ftpServerSoftwareWSFTP = 4 , ftpServerSoftwarePureFTPd = 5 , ftpServerSoftwareGuildFTPd = 6 , ftpServerSoftwareTitan = 7 ,
  ftpServerSoftwareOrenosv = 8 , ftpServerSoftwareDrFTPd = 9 , ftpServerSoftwaremoftpd = 10 , ftpServerSoftwareglftpd = 11 ,
  ftpServerSoftwareNcFTPd = 12 , ftpServerSoftwareSurgeFTP = 13 , ftpServerSoftwareBlackmoon = 14 , ftpServerSoftwareWarFTPd = 15 ,
  ftpServerSoftwareWFTPD = 16 , ftpServerSoftwareShareIt = 17 , ftpServerSoftwareGene6 = 18 , ftpServerSoftwareNoFeel = 20 ,
  ftpServerSoftwareMOVEit = 21 , ftpServerSoftwareiNEWS = 22 , ftpServerSoftwareFastream = 23 , ftpServerSoftwareConnectEnterprise = 24 ,
  ftpServerSoftwareMicrosoftFTP = 25 , ftpServerSoftwareOracleXMLDB = 26 , ftpServerSoftwareFileZilla = 27 , ftpServerSoftwareProFTPD = 28 ,
  ftpServerSoftwareSnapOS = 29 , ftpServerSoftwareMacOSX = 30 , ftpServerSoftwarecuftpd = 31 , ftpServerSoftwareCerberusFTPServer = 32 ,
  ftpServerSoftwarezOS = 33 , ftpServerSoftwareHumaxiCord = 34 , ftpServerSoftwareMtcp = 35 , ftpServerSoftwarePs3 = 36 ,
  ftpServerSoftwareMeditech = 37 , ftpServerSoftwareCleoVLTrader = 38 , ftpServerSoftwareWebMethods = 39 , ftpServerSoftwareJustCloud = 40 ,
  ftpServerSoftwareMultiNet = 41 , ftpServerSoftwareTransCore = 42 , ftpServerSoftwareTopfieldPVR = 43
}
 server software running on the remote server More...
enum  OperatingSystem { ftpOperatingSystemUnknown = 0 , ftpOperatingSystemWindows = 1 , ftpOperatingSystemUnix = 2 , ftpOperatingSystemVMS = 3 }
enum  StatusEventType { ftpStatusEventTypeLocalCommand = 1 , ftpStatusEventTypeLocalInfo = 2 , ftpStatusEventTypeLocalError = 4 , ftpStatusEventTypeRemote = 5 }
enum  ConnectionStatus {
  ftpConnectionStatusUnknown = 0 , ftpConnectionStatusConnecting = 1 , ftpConnectionStatusConnected = 2 , ftpConnectionStatusDisconnecting = 3 ,
  ftpConnectionStatusDisconnected = 4
}
enum  SFTPConnectionStatus { ftpSFTPConnectionStatusUnknown = 0 , ftpSFTPConnectionStatusInit = 1 , ftpSFTPConnectionStatusClosing = 2 }
enum  LogFormat { ftpLogFormatUnicode = 2 , ftpLogFormatUTF8 = 3 }
enum  HashAlgo {
  ftpHashAlgoUnknown = 0 , ftpHashAlgoCRC32 = 1 , ftpHashAlgoMD5 = 2 , ftpHashAlgoSHA1 = 3 ,
  ftpHashAlgoSHA256 = 4 , ftpHashAlgoSHA384 = 5 , ftpHashAlgoSHA512 = 6 , ftpHashAlgoMicrosoftQuickXorHash = 7
}
enum  KeyExchange {
  ftpKeyExchangeUnknown = 0 , ftpKeyExchangeDiffieHellmanGroup14SHA1 = 2 , ftpKeyExchangeDiffieHellmanGroupExchangeSHA1 = 3 , ftpKeyExchangeDiffieHellmanGroupExchangeSHA256 = 4 ,
  ftpKeyExchangeDiffieHellmanGroup14SHA256 = 5 , ftpKeyExchangeDiffieHellmanGroup16SHA512 = 6 , ftpKeyExchangeECDH256 = 7 , ftpKeyExchangeECDH384 = 8 ,
  ftpKeyExchangeECDH521 = 9 , ftpKeyExchangeCurve25519 = 10 , ftpKeyExchangeCurve25519libssh = 11 , ftpKeyExchangeMlKem768x25519 = 12
}
 Identifies the Key Exchange (KEX) algorithms supported by the SSH client. More...
enum  Encryption {
  ftpEncryptionUnknown = 0 , ftpEncryption3DES = 2 , ftpEncryptionAES128CBC = 3 , ftpEncryptionAES192CBC = 4 ,
  ftpEncryptionAES256CBC = 5 , ftpEncryptionAES128CTR = 9 , ftpEncryptionAES192CTR = 10 , ftpEncryptionAES256CTR = 11 ,
  ftpEncryptionAES128GCM = 19 , ftpEncryptionAES256GCM = 20
}
 Defines the symmetric encryption algorithms available for the SSH tunnel. More...
enum  HMAC {
  ftpHMACUnknown = 0 , ftpHMACSHA1 = 2 , ftpHMACNone = 6 , ftpHMACSHA2256 = 8 ,
  ftpHMACSHA2512 = 9 , ftpHMACSHA2256Etm = 10 , ftpHMACSHA2512Etm = 11
}
 Defines the Message Authentication Code (HMAC) algorithms available for data integrity. More...
enum  SSHCompression { ftpSSHCompressionUnknown = 0 , ftpSSHCompressionNone = 1 , ftpSSHCompressionzlibopenssh = 3 }
 Identifies the compression algorithms available for the SSH connection. More...
enum  FeatureDiscoveryMode { ftpFeatureDiscoveryModeAfterLogin = 1 , ftpFeatureDiscoveryModeBeforeAndAfterLogin = 2 }
 Determines the timing of the FEAT (Feature Discovery) command. More...
enum  ItemType {
  ftpItemTypeRegularFile = 1 , ftpItemTypeDirectory = 2 , ftpItemTypeSymbolicLink = 3 , ftpItemTypeSpecial = 4 ,
  ftpItemTypeUnknown = 5 , ftpItemTypeFIFO = 9 , ftpItemTypeCharacterDevice = 7 , ftpItemTypeBlockDevice = 8 ,
  ftpItemTypeSocket = 6
}
 Categorizes the type of a filesystem object (file, directory, link, etc.). More...
enum  KeyType { ftpKeyTypeUnknown = 0 , ftpKeyTypePublicKey = 1 , ftpKeyTypePrivateKey = 2 }
enum  KeyAlgo {
  ftpKeyAlgoUnknown = 0 , ftpKeyAlgoRSA = 1 , ftpKeyAlgoDSA = 2 , ftpKeyAlgoECDSAP256 = 3 ,
  ftpKeyAlgoECDSAP384 = 4 , ftpKeyAlgoECDSAP521 = 5 , ftpKeyAlgoEd25519 = 6 , ftpKeyAlgoEd448 = 7 ,
  ftpKeyAlgoMlDsa44 = 8 , ftpKeyAlgoMlDsa65 = 9 , ftpKeyAlgoMlDsa87 = 10
}
enum  SSHPublicKeyAlgo {
  ftpSSHPublicKeyAlgoUnknown = 0 , ftpSSHPublicKeyAlgoRSA = 1 , ftpSSHPublicKeyAlgoRSASHA2256 = 20 , ftpSSHPublicKeyAlgoRSASHA2512 = 21 ,
  ftpSSHPublicKeyAlgoECDSA256 = 8 , ftpSSHPublicKeyAlgoECDSA384 = 9 , ftpSSHPublicKeyAlgoECDSA521 = 10 , ftpSSHPublicKeyAlgoEd25519 = 14 ,
  ftpSSHPublicKeyAlgoEd448 = 30 , ftpSSHPublicKeyAlgoMlDsa44 = 31 , ftpSSHPublicKeyAlgoMlDsa65 = 32 , ftpSSHPublicKeyAlgoMlDsa87 = 33 ,
  ftpSSHPublicKeyAlgox509v3RSA = 3 , ftpSSHPublicKeyAlgox509v3ECDSA256 = 11 , ftpSSHPublicKeyAlgox509v3ECDSA384 = 12 , ftpSSHPublicKeyAlgox509v3ECDSA521 = 13 ,
  ftpSSHPublicKeyAlgox509v3RSA2048SHA256 = 15 , ftpSSHPublicKeyAlgoRSASHA2256CertOpenSSH = 28 , ftpSSHPublicKeyAlgoRSASHA2512CertOpenSSH = 29 , ftpSSHPublicKeyAlgoEd25519CertOpenSSH = 27 ,
  ftpSSHPublicKeyAlgoRSACertOpenSSH = 22 , ftpSSHPublicKeyAlgoDSACertOpenSSH = 23 , ftpSSHPublicKeyAlgoECDSA256CertOpenSSH = 24 , ftpSSHPublicKeyAlgoECDSA384CertOpenSSH = 25 ,
  ftpSSHPublicKeyAlgoECDSA521CertOpenSSH = 26 , ftpSSHPublicKeyAlgoDSA = 2
}
 Defines the public key algorithms used for server host keys and client authentication. More...
enum  CertificateType { CertificateTypeUnknown = 0 , CertificateTypex509 = 1 , CertificateTypeOpenSSH = 2 }
enum  FTPItemAttribute {
  ftpFTPItemAttributeSize = 0x1 , ftpFTPItemAttributePermissions = 0x4 , ftpFTPItemAttributeAccessTime = 0x8 , ftpFTPItemAttributeCreateTime = 0x10 ,
  ftpFTPItemAttributeModifyTime = 0x20 , ftpFTPItemAttributeACL = 0x40 , ftpFTPItemAttributeSubSecondTimes = 0x100 , ftpFTPItemAttributeBits = 0x200 ,
  ftpFTPItemAttributeAllocationSize = 0x400 , ftpFTPItemAttributeTextHint = 0x800 , ftpFTPItemAttributeMimeType = 0x1000 , ftpFTPItemAttributeLinkCount = 0x2000 ,
  ftpFTPItemAttributeUntranslatedName = 0x4000 , ftpFTPItemAttributeCTime = 0x8000 , ftpFTPItemAttributeExtended = 0x80000000 , ftpFTPItemAttributeOwner = 0x10000 ,
  ftpFTPItemAttributeUnixPermissions = 0x20000 , ftpFTPItemAttributeWindowsAttributes = 0x40000 , ftpFTPItemAttributeGroup = 0x80000
}
enum  SSHServerSoftware {
  ftpSSHServerSoftwareUnknown = 0 , ftpSSHServerSoftwareVShell = 1 , ftpSSHServerSoftwareSSHTectia = 2 , ftpSSHServerSoftwareOpenSSH = 3 ,
  ftpSSHServerSoftwareTitan = 4 , ftpSSHServerSoftwareGSFTPS = 5 , ftpSSHServerSoftwareWinSSHD = 6 , ftpSSHServerSoftwareWSFTP = 7 ,
  ftpSSHServerSoftwareFTPShell = 8 , ftpSSHServerSoftwareWeOnlyDo = 9 , ftpSSHServerSoftwarePragmaFortressSSH = 10 , ftpSSHServerSoftwareJSCAPE = 11 ,
  ftpSSHServerSoftwareCoreFTP = 12 , ftpSSHServerSoftwareOpenVMS = 13 , ftpSSHServerSoftwareFSecure = 14 , ftpSSHServerSoftwareSSHcomOld = 15 ,
  ftpSSHServerSoftwareSun = 16 , ftpSSHServerSoftwareServU = 17 , ftpSSHServerSoftwaredropbear = 18 , ftpSSHServerSoftwareReflectionForSecureIT = 19 ,
  ftpSSHServerSoftwareSSHTools = 20 , ftpSSHServerSoftwareGXSSSHD = 21 , ftpSSHServerSoftwareProFTPD = 22 , ftpSSHServerSoftwarezFTPServer = 23 ,
  ftpSSHServerSoftwareMaverick = 24 , ftpSSHServerSoftwareSecureTransport = 25 , ftpSSHServerSoftwareXlight = 26
}
enum  SFTPStatus {
  ftpSFTPStatusOk = 0 , ftpSFTPStatusEOF = 1 , ftpSFTPStatusFailure = 4 , ftpSFTPStatusBadMessage = 5 ,
  ftpSFTPStatusOpUnsupported = 8 , ftpSFTPStatusNoConnection = 6 , ftpSFTPStatusConnectionLost = 7 , ftpSFTPStatusNoSuchFile = 2 ,
  ftpSFTPStatusNoSuchPath = 10 , ftpSFTPStatusFileAlreadyExists = 11 , ftpSFTPStatusNotADirectory = 19 , ftpSFTPStatusFileIsADirectory = 24 ,
  ftpSFTPStatusInvalidFilename = 20 , ftpSFTPStatusLinkLoop = 21 , ftpSFTPStatusPermissionDenied = 3 , ftpSFTPStatusWriteProtect = 12 ,
  ftpSFTPStatusCannotDelete = 22 , ftpSFTPStatusDirNotEmpty = 18 , ftpSFTPStatusInvalidHandle = 9 , ftpSFTPStatusInvalidParameter = 23 ,
  ftpSFTPStatusNoMedia = 13 , ftpSFTPStatusNoSpaceOnFilesystem = 14 , ftpSFTPStatusQuotaExceeded = 15 , ftpSFTPStatusUnknownPrincipal = 16 ,
  ftpSFTPStatusLocalConflict = 17 , ftpSFTPStatusByteRangeLockConflict = 25 , ftpSFTPStatusByteRangeLockRefused = 26 , ftpSFTPStatusDeletePending = 27 ,
  ftpSFTPStatusFileCorrupt = 28 , ftpSFTPStatusOwnerInvalid = 29 , ftpSFTPStatusGroupdInvalid = 30 , ftpSFTPStatusNoMatchingByteRangeLock = 31
}
enum  GSSAPIMethod { ftpGSSAPIMethodUnknown = 0 , ftpGSSAPIMethodMITKerberos = 1 , ftpGSSAPIMethodMicrosoftKerberos = 2 }
enum  KeyFileFormat {
  ftpKeyFileFormatUnknown = 0 , ftpKeyFileFormatPKCS8 = 1 , ftpKeyFileFormatPKCS12 = 2 , ftpKeyFileFormatVanDyke = 3 ,
  ftpKeyFileFormatSSH = 4 , ftpKeyFileFormatOpenSSL = 5 , ftpKeyFileFormatPutty = 6 , ftpKeyFileFormatOpenSSH = 7
}
enum  sfFTPLib::_HRESULT {
  sfFTPLib::FTPLIB_E_BUSY = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3101) , sfFTPLib::FTPLIB_E_NOTCONNECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3102) , sfFTPLib::FTPLIB_E_TIMEOUT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3103) , sfFTPLib::FTPLIB_E_NOOPERATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3104) ,
  sfFTPLib::FTPLIB_E_NOTINIT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3105) , sfFTPLib::FTPLIB_E_WRONGREPLY = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3106) , sfFTPLib::FTPLIB_E_MOREDATA = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3108) , sfFTPLib::FTPLIB_E_PAUSED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3109) ,
  sfFTPLib::FTPLIB_E_SETTINGMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310a) , sfFTPLib::FTPLIB_E_NOTDISCONNECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310b) , sfFTPLib::FTPLIB_E_CONNECTIONCLOSED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310c) , sfFTPLib::FTPLIB_E_DATACONNECTION_CONNECT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310d) ,
  sfFTPLib::FTPLIB_E_AUTHENTICATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310e) , sfFTPLib::FTPLIB_E_PORTCOMMANDFAILED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x310f) , sfFTPLib::FTPLIB_E_RESTARTNOTPERMITTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3110) , sfFTPLib::FTPLIB_E_SERVERPROTOCOLVIOLATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3111) ,
  sfFTPLib::FTPLIB_E_COMMANDNOTIMPLEMENTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3112) , sfFTPLib::FTPLIB_E_NOTAREGULARFILE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3113) , sfFTPLib::FTPLIB_E_TOOMANYCONNECTIONS = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3114) , sfFTPLib::FTPLIB_E_PASVCOMMANDFAILED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3115) ,
  sfFTPLib::FTPLIB_E_TLSNOTSUPPORTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3116) , sfFTPLib::FTPLIB_E_HOSTNAMEEXPECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3117) , sfFTPLib::FTPLIB_E_SERVERPOLICYREQUIRESTLS = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3118) , sfFTPLib::FTPLIB_E_IPBANNED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3119) ,
  sfFTPLib::FTPLIB_E_HOMEDIRECTORY = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311a) , sfFTPLib::FTPLIB_E_BOX_ACCEPTTERMSOFSERVICE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311b) , sfFTPLib::FTPLIB_E_BOX_APPLICATIONBLOCKED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311c) , sfFTPLib::FTPLIB_E_BOX_CAPTCHAREQUIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311d) ,
  sfFTPLib::FTPLIB_E_LOCALPOLICYREQUIRESCCC = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311e) , sfFTPLib::FTPLIB_E_NOTLOGGEDIN = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x311f) , sfFTPLib::FTPLIB_E_TOOMANYUSERS = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3129) , sfFTPLib::FTPLIB_E_TLSDATASESSIONTOKENERROR = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x312B) ,
  sfFTPLib::FTPLIB_E_COULDNOTCREATEFILE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x312C) , sfFTPLib::FTPLIB_E_SSH_UNEXPECTEDREMOTEID = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3120) , sfFTPLib::FTPLIB_E_SSH_HOSTAUTHENTICATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3121) , sfFTPLib::FTPLIB_E_SSH_NEGOTIATION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3122) ,
  sfFTPLib::FTPLIB_E_SSH_INVALIDHOSTKEY = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3123) , sfFTPLib::FTPLIB_E_SSH_INVALIDMESSAGE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3124) , sfFTPLib::FTPLIB_E_SSH_CHANNEL_REQUESTFAILURE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3125) , sfFTPLib::FTPLIB_E_SSH_CHANNEL_OPENFAILURE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3126) ,
  sfFTPLib::FTPLIB_E_SSH_KEYEXCHANGE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3127) , sfFTPLib::FTPLIB_E_SSH_CHANNEL_EOF = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3128) , sfFTPLib::FTPLIB_E_SSH_INVALIDHOSTSIGNATURE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x312A) , sfFTPLib::FTPLIB_E_SSH_HOSTKEYREJECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x312D) ,
  sfFTPLib::FTPLIB_E_KEYFILE_PASSWORD = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3130) , sfFTPLib::FTPLIB_E_KEYFILE_INVALIDFORMAT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3131) , sfFTPLib::FTPLIB_E_KEY_INVALID = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3132) , sfFTPLib::FTPLIB_E_KEYFILE_UNSUPPORTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3133) ,
  sfFTPLib::FTPLIB_E_SFTP_UNEXPECTEDPACKETTYPE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3140) , sfFTPLib::FTPLIB_E_SFTP_STATUSERROR = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3141) , sfFTPLib::FTPLIB_E_SFTP_INVALIDMESSAGE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3142) , sfFTPLib::FTPLIB_E_COMMANDNOTIMPLEMENTEDFORARGUMENT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3150) ,
  sfFTPLib::FTPLIB_E_CHARACTERCONVERSION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3151) , sfFTPLib::FTPLIB_E_SSHSERVERDETECTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3152) , sfFTPLib::FTPLIB_E_LICENSE_FEATURENOTLICENSED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3200) , sfFTPLib::FTPLIB_E_LICENSE_PRODUCTMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3201) ,
  sfFTPLib::FTPLIB_E_LICENSE_VERSIONMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3202) , sfFTPLib::FTPLIB_E_LICENSE_MACHINEIDMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3203) , sfFTPLib::FTPLIB_E_LICENSE_EXPIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3204) , sfFTPLib::FTPLIB_E_LICENSE_MAINTENANCEEXPIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x3205) ,
  sfFTPLib::FTPLIB_E_ACTIVATION_UNSUPPORTEDVERSION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5500) , sfFTPLib::FTPLIB_E_ACTIVATION_INVALIDSERIAL = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5501) , sfFTPLib::FTPLIB_E_ACTIVATION_PRODUCTMISMATCH = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5502) , sfFTPLib::FTPLIB_E_ACTIVATION_LICENSEINACTIVE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5503) ,
  sfFTPLib::FTPLIB_E_ACTIVATION_LICENSEEXPIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5504) , sfFTPLib::FTPLIB_E_ACTIVATION_LICENSEEXHAUSTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5505) , sfFTPLib::FTPLIB_E_ACTIVATION_INVALIDREQUEST = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5506) , sfFTPLib::FTPLIB_E_ACTIVATION_SUBLICENSENOTFOUND = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5507) ,
  sfFTPLib::FTPLIB_E_ACTIVATION_MAINTENANCEEXPIRED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5508) , sfFTPLib::FTPLIB_E_ACTIVATION_SUBLICENSEDISABLED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x5509) , sfFTPLib::FTPLIB_E_ACTIVATION_PRODUCTVERSIONNOTSUPPORTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x550A) , sfFTPLib::FTPLIB_E_ACTIVATION_OPERATINGSYSTEMNOTSUPPORTED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x550B)
}
enum  sfFTPLib::UnixPermissions {
  sfFTPLib::ftpUnixPermissionPublicExecute = 0x0001 , sfFTPLib::ftpUnixPermissionPublicWrite = 0x0002 , sfFTPLib::ftpUnixPermissionPublicRead = 0x0004 , sfFTPLib::ftpUnixPermissionGroupExecute = 0x0008 ,
  sfFTPLib::ftpUnixPermissionGroupWrite = 0x0010 , sfFTPLib::ftpUnixPermissionGroupRead = 0x0020 , sfFTPLib::ftpUnixPermissionUserExecute = 0x0040 , sfFTPLib::ftpUnixPermissionUserWrite = 0x0080 ,
  sfFTPLib::ftpUnixPermissionUserRead = 0x0100 , sfFTPLib::ftpUnixPermissionSystemSticky = 0x0200 , sfFTPLib::ftpUnixPermissionSystemSetGID = 0x0400 , sfFTPLib::ftpUnixPermissionSystemSetUID = 0x0800
}
 Defines the access permissions for files and directories on Unix-like systems. More...
enum  sfFTPLib::SFTPItemAttributeBit {
  sfFTPLib::ftpSFTPItemAttributeBitReadOnly = 0x1 , sfFTPLib::ftpSFTPItemAttributeBitSystem = 0x2 , sfFTPLib::ftpSFTPItemAttributeBitHidden = 0x4 , sfFTPLib::ftpSFTPItemAttributeBitCaseInsensitive = 0x8 ,
  sfFTPLib::ftpSFTPItemAttributeBitArchive = 0x10 , sfFTPLib::ftpSFTPItemAttributeBitEncrypted = 0x20 , sfFTPLib::ftpSFTPItemAttributeBitCompressed = 0x40 , sfFTPLib::ftpSFTPItemAttributeBitSparse = 0x80 ,
  sfFTPLib::ftpSFTPItemAttributeBitAppendOnly = 0x100 , sfFTPLib::ftpSFTPItemAttributeBitImmutable = 0x200 , sfFTPLib::ftpSFTPItemAttributeBitSync = 0x400 , sfFTPLib::ftpSFTPItemAttributeBitTranslationErr = 0x800
}
enum  sfFTPLib::SFTPItemAttribute {
  sfFTPLib::ftpSFTPItemAttributeSize = 0x1 , sfFTPLib::ftpSFTPItemAttributeUIDGID = 0x2 , sfFTPLib::ftpSFTPItemAttributePermissions = 0x4 , sfFTPLib::ftpSFTPItemAttributeAccessTime = 0x8 ,
  sfFTPLib::ftpSFTPItemAttributeCreateTime = 0x10 , sfFTPLib::ftpSFTPItemAttributeModifyTime = 0x20 , sfFTPLib::ftpSFTPItemAttributeACL = 0x40 , sfFTPLib::ftpSFTPItemAttributeOwnerGroup = 0x80 ,
  sfFTPLib::ftpSFTPItemAttributeSubSecondTimes = 0x100 , sfFTPLib::ftpSFTPItemAttributeBits = 0x200 , sfFTPLib::ftpSFTPItemAttributeAllocationSize = 0x400 , sfFTPLib::ftpSFTPItemAttributeTextHint = 0x800 ,
  sfFTPLib::ftpSFTPItemAttributeMimeType = 0x1000 , sfFTPLib::ftpSFTPItemAttributeLinkCount = 0x2000 , sfFTPLib::ftpSFTPItemAttributeUntranslatedName = 0x4000 , sfFTPLib::ftpSFTPItemAttributeCTime = 0x8000 ,
  sfFTPLib::ftpSFTPItemAttributeExtended = 0x80000000
}
enum  sfFTPLib::LISTOption {
  sfFTPLib::ftpLISTOptionLong = 0x0001 , sfFTPLib::ftpLISTOptionAll = 0x0002 , sfFTPLib::ftpLISTOptionLinks = 0x0004 , sfFTPLib::ftpLISTOptionT = 0x0008 ,
  sfFTPLib::ftpLISTOptionRecursive = 0x0010
}
 Flags to control the behavior and output of the FTP LIST command. More...
enum  sfFTPLib::DownloadFlags { sfFTPLib::ftpDownloadFlagNone = 0x0 , sfFTPLib::ftpDownloadFlagReadBeyondEnd = 0x1 }
 Flags that control the behavior of the ISFTPConnection::DownloadFileEx operation. More...
enum  sfFTPLib::SSHAuthentication {
  sfFTPLib::ftpSSHAuthenticationUnknown = 0 , sfFTPLib::ftpSSHAuthenticationNone = 1 , sfFTPLib::ftpSSHAuthenticationPassword = 2 , sfFTPLib::ftpSSHAuthenticationKeyboardInteractive = 3 ,
  sfFTPLib::ftpSSHAuthenticationPublicKey = 4 , sfFTPLib::ftpSSHAuthenticationSecurID = 5 , sfFTPLib::ftpSSHAuthenticationHostBased = 6 , sfFTPLib::ftpSSHAuthenticationGSSAPI = 7
}
 Identifies the authentication methods defined in the SSH-2 protocol (RFC 4252). More...

Functions

 sfFTPLib::importlib (STDOLE_TLB)

Typedef Documentation

◆ CaseSensitivity

Defines how the server handles capitalization in filenames.

This enumeration indicates whether the remote file system treats "File.txt" and "file.txt" as the same file or different files.

Platform Behavior:

  • Unix/Linux: Generally Yes. A.txt != a.txt.
  • Windows/IIS: Generally No. A.txt == a.txt.

◆ CertificateType

◆ ConnectionStatus

◆ DataProtection

Defines the security level of a communication channel (Control or Data).

This enumeration represents whether a specific channel is encrypted or sending data in clear text. It is used by both:

◆ DataTransferMode

Defines the transmission mode for the data connection.

This enumeration corresponds to the arguments of the MODE command. It determines how the data is packaged and transmitted over the wire.

**Distinction from DataTransferType :**

  • TransferType (ASCII/Image) determines interpretation (text vs. binary).
  • TransferMode (Stream/Z) determines transport (raw vs. compressed).

◆ DataTransferType

Defines the format used for data transfer.

This enumeration corresponds to the arguments of the TYPE command. It controls whether the server modifies the data stream during transfer to accommodate different operating system standards (like line endings).

◆ Encryption

typedef enum Encryption Encryption

Defines the symmetric encryption algorithms available for the SSH tunnel.

These algorithms ensure the confidentiality of the data transmitted between the client and server. Once the initial handshake is complete, all traffic (shell commands, file transfers) is encrypted using one of these ciphers.

◆ FeatureDiscoveryMode

Determines the timing of the FEAT (Feature Discovery) command.

Different FTP servers behave differently regarding feature announcement. Some only reveal their full capabilities after a user has successfully authenticated, while others provide this information immediately upon connection.

◆ FTPItemAttribute

◆ FTPProtocol

typedef enum FTPProtocol FTPProtocol

Specifies the security protocol and encryption mode for the connection.

Usage: This enumeration is used to set the IFTPConnection::Protocol property of the IFTPConnection interface before calling the IFTPConnection::Connect method. It controls the initial handshake and subsequent data protection.

◆ GSSAPIMethod

typedef enum GSSAPIMethod GSSAPIMethod

◆ HashAlgo

typedef enum HashAlgo HashAlgo

◆ HMAC

typedef enum HMAC HMAC

Defines the Message Authentication Code (HMAC) algorithms available for data integrity.

These algorithms ensure that the data packets sent between client and server have not been tampered with in transit.

The "Encrypt-then-MAC" (EtM) Advantage: Standard SSH (RFC 4253) uses "Encrypt-and-MAC": the packet is encrypted, and the MAC is calculated on the plaintext. This requires the receiver to decrypt potentially malicious data before verifying it. EtM (RFC 7366) calculates the MAC on the ciphertext. This allows the receiver to discard tampered packets before decryption, preventing "Padding Oracle" attacks.

Recommendation: Prioritize EtM algorithms (ftpHMACSHA2256Etm) whenever possible.

◆ ItemType

typedef enum ItemType ItemType

Categorizes the type of a filesystem object (file, directory, link, etc.).

The Context: Unlike Windows, which primarily deals with Files and Directories, Unix-like systems (Linux, macOS, BSD) treat almost everything as a "file", including hardware devices and communication channels.

Protocol Mapping: These integer values correspond directly to the SSH_FILEXFER_TYPE_* constants defined in the SFTP protocol's ATTRS data structure.

◆ KeyAlgo

typedef enum KeyAlgo KeyAlgo

◆ KeyExchange

typedef enum KeyExchange KeyExchange

Identifies the Key Exchange (KEX) algorithms supported by the SSH client.

These values are used in the ISSHConnection::KeyExchanges property. The KEX algorithm is the first cryptographic negotiation in the SSH connection. It allows the client and server to safely agree on a shared secret session key over an insecure network.

◆ KeyFileFormat

◆ KeyType

typedef enum KeyType KeyType

◆ LogFormat

typedef enum LogFormat LogFormat

◆ OperatingSystem

◆ ParserFormat

typedef enum ParserFormat ParserFormat

◆ PassiveMode

typedef enum PassiveMode PassiveMode

Specifies how the client handles the IP address returned in the FTP server's PASV response.

◆ PortMode

typedef enum PortMode PortMode

Specifies how the client determines the IP address sent in the PORT command (Active Mode).

The Problem: In Active Mode (IFTPConnection::Passive = FALSE), the client must tell the server its own IP address so the server can open a connection back to the client.

  • If the client is behind a NAT router, its local IP (e.g., 192.168.1.5) is useless to the public server.
  • The client must instead report its Public IP (the WAN IP of the router).

Usage: Use this enum to set the IFTPConnection::PortMode property. It determines whether the component automatically uses the local machine's IP or uses a manually specified override.

◆ ProtocolFamily

◆ ProxyType

typedef enum ProxyType ProxyType

◆ ServerCapability

◆ ServerCapabilityState

◆ ServerSoftware

server software running on the remote server

Detected from the welcome line or FEAT reply. Not reliable.

◆ ServerType

typedef enum ServerType ServerType

Identifies the operating system or server software type of the remote host.

The Mechanism: Upon connecting, the component sends the SYST command. The server responds with a string identifying its system type (RFC 959). The component parses this string to determine how to handle file paths and directory listings.

Why it matters:

  • Path Separators: Unix uses /, Windows uses \\endiskip, VMS uses [].
  • Listing Formats: Unix typically uses ls -l format; Windows/DOS uses a different column layout.
  • File Versioning: Systems like VMS support file version numbers (e.g., file.txt;1).

◆ SFTPConnectionStatus

◆ SFTPStatus

typedef enum SFTPStatus SFTPStatus

◆ SSHCompression

Identifies the compression algorithms available for the SSH connection.

These values are used to negotiate the data compression method during the SSH handshake.

◆ SSHPublicKeyAlgo

Defines the public key algorithms used for server host keys and client authentication.

These algorithms are used during the SSH handshake to verify the identity of the server (Host Key) and to authenticate the user (Public Key Authentication).

◆ SSHServerSoftware

◆ StatusEventType

Enumeration Type Documentation

◆ CaseSensitivity

Defines how the server handles capitalization in filenames.

This enumeration indicates whether the remote file system treats "File.txt" and "file.txt" as the same file or different files.

Platform Behavior:

  • Unix/Linux: Generally Yes. A.txt != a.txt.
  • Windows/IIS: Generally No. A.txt == a.txt.
Enumerator
ftpCaseSensitivityUnknown 

The case sensitivity of the server is unknown.

This is the initial state before the library has determined the server type (usually via the SYST command).

ftpCaseSensitivityYes 

The server is case-sensitive (e.g., Unix/Linux).

Implication: You must use the exact casing when requesting files.

  • Requesting readme.txt will fail if the file is named ReadMe.txt.
  • You can have two files in the same folder named Test and test.
ftpCaseSensitivityNo 

The server is case-insensitive (e.g., Windows/DOS).

Implication: You can use any casing when requesting files.a

  • Requesting readme.txt will succeed even if the file is named ReadMe.txt.
  • You cannot create Test if test already exists; the system sees them as duplicates.

◆ CertificateType

Enumerator
CertificateTypeUnknown 
CertificateTypex509 

Standard X.509 Public Key Infrastructure (PKI) certificate.

The Standard: Represents the industry-standard certificate format (defined in RFC 5280) used by TLS, FTPS, and HTTPS. It relies on ASN.1 encoding and complex chains of trust.

CertificateTypeOpenSSH 

OpenSSH proprietary certificate format.

The Concept: A simplified, lightweight certificate format defined specifically for the SSH protocol. Unlike X.509, it does not use ASN.1 encoding or complex parsing rules. It is simply a standard SSH public key with additional metadata (Validity, Principals, Options) signed by a Certificate Authority (CA) key.

Incompatibility: These certificates are not compatible with standard SSL/TLS infrastructure or X.509 stores. They are used exclusively for SSH User and Host authentication.

◆ ConnectionStatus

Enumerator
ftpConnectionStatusUnknown 
ftpConnectionStatusConnecting 

Connect() is in progress.

ftpConnectionStatusConnected 

Connected.

ftpConnectionStatusDisconnecting 

Disconnect() is in progress.

ftpConnectionStatusDisconnected 

Not connected.

◆ DataProtection

Defines the security level of a communication channel (Control or Data).

This enumeration represents whether a specific channel is encrypted or sending data in clear text. It is used by both:

Enumerator
ftpDataProtectionUnknown 
ftpDataProtectionClear 

Data protection is disabled (PROT C).

ftpDataProtectionPrivate 

Data protection is enabled (PROT P).

◆ DataTransferMode

Defines the transmission mode for the data connection.

This enumeration corresponds to the arguments of the MODE command. It determines how the data is packaged and transmitted over the wire.

**Distinction from DataTransferType :**

  • TransferType (ASCII/Image) determines interpretation (text vs. binary).
  • TransferMode (Stream/Z) determines transport (raw vs. compressed).
Enumerator
ftpDataTransferModeUnknown 

The transfer mode is unknown or not yet negotiated.

ftpDataTransferModeStream 

Standard Stream Mode (MODE S).

This is the default mode for FTP. Data is transmitted as a continuous stream of bytes.

Mechanism:

  • The data stream is unformatted.
  • The End-of-File (EOF) is indicated by the sender closing the data connection.
  • Simplest and most compatible mode.
ftpDataTransferModeZ 

Compressed Mode (MODE Z).

Enables on-the-fly zlib compression for data transfers.

Benefits:

  • Significantly reduces bandwidth usage for compressible files (Text, HTML, SQL dumps, XML).
  • Can increase transfer speed on slow networks.

Drawbacks:

  • Increases CPU usage on both client and server.
  • Ineffective for files that are already compressed (ZIP, JPEG, MP4). Attempting to compress these again may actually increase transfer time due to CPU overhead.

◆ DataTransferType

Defines the format used for data transfer.

This enumeration corresponds to the arguments of the TYPE command. It controls whether the server modifies the data stream during transfer to accommodate different operating system standards (like line endings).

Enumerator
ftpDataTransferTypeUnknown 
ftpDataTransferTypeASCII 

Data transfer type is ASCII (Text).

Corresponds to TYPE A.

Behavior: The file is treated as text. The sender converts its local line endings (e.g., \r\n on Windows) to the NVT-ASCII standard, and the receiver converts them back to its local format.

Warning: Do not use this for binary files! The "correction" of bytes resembling line feeds will corrupt the file.

ftpDataTransferTypeImage 

Data transfer type is Image (Binary).

Corresponds to TYPE I.

Behavior: The file is transmitted as a contiguous stream of bits, byte-for-byte, without any modification or translation. This is the safest mode for most modern transfers.

ftpDataTransferTypeEBCDIC 

Data transfer type is EBCDIC.

Corresponds to TYPE E.

Behavior: Used primarily when exchanging data between systems using the EBCDIC character set (e.g., IBM Mainframes/AS400).

◆ Encryption

enum Encryption

Defines the symmetric encryption algorithms available for the SSH tunnel.

These algorithms ensure the confidentiality of the data transmitted between the client and server. Once the initial handshake is complete, all traffic (shell commands, file transfers) is encrypted using one of these ciphers.

Enumerator
ftpEncryptionUnknown 

Unknown or invalid algorithm.

ftpEncryption3DES 

Triple-DES (3DES).

Deprecated
Security Warning: Vulnerable to the Sweet32 attack (birthday bound collision) due to its small 64-bit block size. Extremely slow in software.
ftpEncryptionAES128CBC 

AES in Cipher Block Chaining (CBC) mode (128-bit).

Warning
Security Vulnerability: CBC mode in SSH is vulnerable to Padding Oracle attacks (e.g., the "Lucky 13" attack). It is retained only for compatibility with legacy systems.
ftpEncryptionAES192CBC 

AES in Cipher Block Chaining (CBC) mode (192-bit).

Warning
See ftpEncryptionAES128CBC.
ftpEncryptionAES256CBC 

AES in Cipher Block Chaining (CBC) mode (256-bit).

Warning
See ftpEncryptionAES128CBC.
ftpEncryptionAES128CTR 

AES in Counter (CTR) mode (128-bit).

Turns the block cipher into a stream cipher. Pros: Secure, parallelizable, no padding required (immune to padding oracles).

ftpEncryptionAES192CTR 

AES in Counter (CTR) mode (192-bit).

ftpEncryptionAES256CTR 

AES in Counter (CTR) mode (256-bit).

ftpEncryptionAES128GCM 

AES in Galois/Counter Mode (GCM) (128-bit).

Authenticated Encryption (AEAD): Provides both confidentiality and integrity in a single pass. Performance: extremely fast on modern CPUs with AES-NI instruction sets.

ftpEncryptionAES256GCM 

AES in Galois/Counter Mode (GCM) (256-bit).

Authenticated Encryption (AEAD): Provides both confidentiality and integrity in a single pass. Performance: extremely fast on modern CPUs with AES-NI instruction sets.

◆ FeatureDiscoveryMode

Determines the timing of the FEAT (Feature Discovery) command.

Different FTP servers behave differently regarding feature announcement. Some only reveal their full capabilities after a user has successfully authenticated, while others provide this information immediately upon connection.

Enumerator
ftpFeatureDiscoveryModeAfterLogin 

The FEAT command is issued only once, immediately after a successful login.

This is the most common setting, as many servers restrict extension disclosure to authenticated users.

ftpFeatureDiscoveryModeBeforeAndAfterLogin 

The FEAT command is issued twice: once before login and once after.

This is useful for servers that support pre-login features (like certain encryption or UTF-8 negotiations) but may unlock additional commands (like server-to-server FXP) once the user is logged in.

◆ FTPItemAttribute

Enumerator
ftpFTPItemAttributeSize 
ftpFTPItemAttributePermissions 
ftpFTPItemAttributeAccessTime 
ftpFTPItemAttributeCreateTime 
ftpFTPItemAttributeModifyTime 
ftpFTPItemAttributeACL 
ftpFTPItemAttributeSubSecondTimes 
ftpFTPItemAttributeBits 
ftpFTPItemAttributeAllocationSize 
ftpFTPItemAttributeTextHint 
ftpFTPItemAttributeMimeType 
ftpFTPItemAttributeLinkCount 
ftpFTPItemAttributeUntranslatedName 
ftpFTPItemAttributeCTime 
ftpFTPItemAttributeExtended 
ftpFTPItemAttributeOwner 
ftpFTPItemAttributeUnixPermissions 
ftpFTPItemAttributeWindowsAttributes 
ftpFTPItemAttributeGroup 

◆ FTPProtocol

Specifies the security protocol and encryption mode for the connection.

Usage: This enumeration is used to set the IFTPConnection::Protocol property of the IFTPConnection interface before calling the IFTPConnection::Connect method. It controls the initial handshake and subsequent data protection.

Enumerator
ftpProtocolNormal 

Standard unencrypted FTP.

Connects to port 21 (default). All commands, including the password and file data, are sent in cleartext. Not recommended for sensitive data or over the internet.

ftpProtocolSSLImplicit 

Legacy Implicit TLS.

The client expects an TLS handshake immediately upon connection. This method is considered deprecated in favor of Explicit TLS but is still widely supported by older servers.

ftpProtocolRequireTLS 

Explicit TLS (Mandatory).

The client sends AUTH TLS immediately.

  • If Successful: The control connection is encrypted.
  • If Failed: The connection is aborted. This ensures data is never sent in cleartext. Best Practice: Use this for secure connections.
ftpProtocolPreferTLS 

Explicit TLS (Opportunistic).

The client sends AUTH TLS.

  • If Successful: The connection is encrypted.
  • If Failed: The client falls back to standard unencrypted FTP. Warning: This mode is vulnerable to "SSL Stripping" attacks where a malicious actor blocks the AUTH TLS command to force a plaintext connection.

◆ GSSAPIMethod

Enumerator
ftpGSSAPIMethodUnknown 

Unknown or unspecified GSSAPI method.

ftpGSSAPIMethodMITKerberos 

MIT Kerberos (GSSAPI).

The Library: Explicitly loads the MIT Kerberos library (gssapi32.dll, gssapi64.dll).

Usage: Use this method when you have the official MIT Kerberos for Windows installed, or when operating in a cross-platform environment where the Microsoft SSPI provider is insufficient or unavailable.

ftpGSSAPIMethodMicrosoftKerberos 

Microsoft SSPI (Security Support Provider Interface) Kerberos.

Windows Integration: Specifically targets the Microsoft Windows SSPI implementation (Secur32.dll) to perform Kerberos authentication.

Single Sign-On (SSO): This method is ideal for Windows domain environments. It allows the application to authenticate using the currently logged-in user's credentials (ticket-granting ticket) without prompting for a password, provided the machine is joined to the domain.

◆ HashAlgo

enum HashAlgo
Enumerator
ftpHashAlgoUnknown 
ftpHashAlgoCRC32 

CRC32. Length: 32 bit.

ftpHashAlgoMD5 

MD5. Length: 128 bit. Reference: RFC 1321.

ftpHashAlgoSHA1 

SHA1. Length: 168 bit. Reference: RFC 3174.

ftpHashAlgoSHA256 

SHA256.

ftpHashAlgoSHA384 

SHA384.

ftpHashAlgoSHA512 

SHA512.

ftpHashAlgoMicrosoftQuickXorHash 

Microsoft QuickXorHash Reference: Code Snippets: QuickXorHash Algorithm.

◆ HMAC

enum HMAC

Defines the Message Authentication Code (HMAC) algorithms available for data integrity.

These algorithms ensure that the data packets sent between client and server have not been tampered with in transit.

The "Encrypt-then-MAC" (EtM) Advantage: Standard SSH (RFC 4253) uses "Encrypt-and-MAC": the packet is encrypted, and the MAC is calculated on the plaintext. This requires the receiver to decrypt potentially malicious data before verifying it. EtM (RFC 7366) calculates the MAC on the ciphertext. This allows the receiver to discard tampered packets before decryption, preventing "Padding Oracle" attacks.

Recommendation: Prioritize EtM algorithms (ftpHMACSHA2256Etm) whenever possible.

Enumerator
ftpHMACUnknown 
ftpHMACSHA1 

HMAC-SHA1 (160-bit).

Legacy algorithm (RFC 4253).

ftpHMACNone 

Null MAC (No integrity).

Security Risk: Disables integrity checks. Debugging only.

ftpHMACSHA2256 

HMAC-SHA2-256.

Standard SHA-2 implementation (RFC 6668).

ftpHMACSHA2512 

HMAC-SHA2-512.

High-strength SHA-2 implementation (RFC 6668).

ftpHMACSHA2256Etm 

HMAC-SHA2-256 EtM.

Encrypt-then-MAC implementation (RFC 7366).

ftpHMACSHA2512Etm 

HMAC-SHA2-512 EtM.

Encrypt-then-MAC implementation (RFC 7366).

◆ ItemType

enum ItemType

Categorizes the type of a filesystem object (file, directory, link, etc.).

The Context: Unlike Windows, which primarily deals with Files and Directories, Unix-like systems (Linux, macOS, BSD) treat almost everything as a "file", including hardware devices and communication channels.

Protocol Mapping: These integer values correspond directly to the SSH_FILEXFER_TYPE_* constants defined in the SFTP protocol's ATTRS data structure.

Enumerator
ftpItemTypeRegularFile 

A standard data file.

Examples: .txt, .jpg, .exe, binary data.

ftpItemTypeDirectory 

A directory (folder) containing other items.

ftpItemTypeSymbolicLink 

A symbolic link (symlink).

A special file that points to another file or directory.

ftpItemTypeSpecial 

A special system file not covered by other categories.

ftpItemTypeUnknown 

The type could not be determined.

Occurs if the server sends an invalid attribute block or a type not recognized by the component.

ftpItemTypeFIFO 

A FIFO (First In, First Out) named pipe.

Used for inter-process communication (IPC) on Unix systems.

ftpItemTypeCharacterDevice 

A Character Device.

Represents unbuffered hardware devices like serial ports, terminals, or sound cards (e.g., /dev/ttyS0, /dev/null).

ftpItemTypeBlockDevice 

A Block Device.

Represents buffered hardware devices like hard drives, USB sticks, or CD-ROMs (e.g., /dev/sda).

ftpItemTypeSocket 

A Unix Domain Socket.

A communication endpoint used for local inter-process communication.

◆ KeyAlgo

enum KeyAlgo
Enumerator
ftpKeyAlgoUnknown 

Unknown or uninitialized algorithm.

ftpKeyAlgoRSA 

RSA (Rivest–Shamir–Adleman).

The Classic: The most widely deployed public-key algorithm. Security depends heavily on key size (typically 2048, 3072, or 4096 bits).

ftpKeyAlgoDSA 

DSA (Digital Signature Algorithm).

Legacy Status: An older government standard (FIPS 186).

Security Warning: largely considered obsolete.

ftpKeyAlgoECDSAP256 

ECDSA with NIST P-256 Curve.

The Standard: A FIPS-compliant elliptic curve algorithm

Performance: Offers 128-bit security strength with much faster performance and smaller keys than RSA-3072.

ftpKeyAlgoECDSAP384 

ECDSA with NIST P-384 Curve.

High Security: A FIPS-compliant elliptic curve offering approximately 192 bits of security strength. Commonly used in Top Secret classification contexts (Suite B).

ftpKeyAlgoECDSAP521 

ECDSA with NIST P-521 Curve.

Maximum Conventional Security: A FIPS-compliant elliptic curve offering 256 bits of security strength. Note: The "521" refers to the Mersenne prime used, not an arbitrary choice.

ftpKeyAlgoEd25519 

Ed25519 (Edwards-curve Digital Signature Algorithm).

It uses the Curve25519 twisted Edwards curve.

ftpKeyAlgoEd448 

Ed448 (Edwards-curve Digital Signature Algorithm).

The "Goldilocks" Curve:

ftpKeyAlgoMlDsa44 

ML-DSA-44 (Module-Lattice-Based Digital Signature Standard).

Post-Quantum Cryptography (PQC): Based on the NIST FIPS 204 standard (formerly CRYSTALS-Dilithium).

Security Level: NIST Security Level 2. Roughly equivalent to SHA-256 / AES-128 in brute-force difficulty, but resistant to attacks from Quantum Computers.

ftpKeyAlgoMlDsa65 

ML-DSA-65 (Module-Lattice-Based Digital Signature Standard).

Post-Quantum Cryptography (PQC): Based on the NIST FIPS 204 standard.

Security Level: NIST Security Level 3. Roughly equivalent to SHA-384 / AES-192. Recommended for systems requiring high security assurance against future threats.

ftpKeyAlgoMlDsa87 

ML-DSA-87 (Module-Lattice-Based Digital Signature Standard).

Post-Quantum Cryptography (PQC): Based on the NIST FIPS 204 standard.

Security Level: NIST Security Level 5. Roughly equivalent to SHA-512 / AES-256. Offers the highest security margin but with larger signature sizes and slower performance.

◆ KeyExchange

Identifies the Key Exchange (KEX) algorithms supported by the SSH client.

These values are used in the ISSHConnection::KeyExchanges property. The KEX algorithm is the first cryptographic negotiation in the SSH connection. It allows the client and server to safely agree on a shared secret session key over an insecure network.

Enumerator
ftpKeyExchangeUnknown 
ftpKeyExchangeDiffieHellmanGroup14SHA1 

Diffie-Hellman Group 14 (2048-bit) with SHA-1.

Protocol String: diffie-hellman-group14-sha1 Status: Legacy. Use Case: Required for compatibility with older network equipment (Cisco IOS, older Linux). Security: 2048-bit MODP is considered secure, but SHA-1 is cryptographically weak.

ftpKeyExchangeDiffieHellmanGroupExchangeSHA1 

Diffie-Hellman Group Exchange with SHA-1.

Protocol String: diffie-hellman-group-exchange-sha1 RFC: 4419 Mechanism: The client requests a group size, and the server provides one. Security: Weak due to SHA-1 usage.

ftpKeyExchangeDiffieHellmanGroupExchangeSHA256 

Diffie-Hellman Group Exchange with SHA-256.

Protocol String: diffie-hellman-group-exchange-sha256 RFC: 4419 Security: Strong. Uses SHA-256 for integrity.

ftpKeyExchangeDiffieHellmanGroup14SHA256 

Diffie-Hellman Group 14 (2048-bit) with SHA-256.

Protocol String: diffie-hellman-group14-sha256 Status: Standard. Security: Good balance of compatibility and security.

ftpKeyExchangeDiffieHellmanGroup16SHA512 

Diffie-Hellman Group 16 (4096-bit) with SHA-512.

Protocol String: diffie-hellman-group16-sha512 Status: High Security. Pros: Very strong against brute force. Cons: Significantly slower handshake due to large prime calculations.

ftpKeyExchangeECDH256 

Elliptic Curve Diffie-Hellman (NIST P-256).

Protocol String: ecdh-sha2-nistp256 Security: Standard NSA Suite B curve.

ftpKeyExchangeECDH384 

Elliptic Curve Diffie-Hellman (NIST P-384).

Protocol String: ecdh-sha2-nistp384

ftpKeyExchangeECDH521 

Elliptic Curve Diffie-Hellman (NIST P-521).

Protocol String: ecdh-sha2-nistp521

ftpKeyExchangeCurve25519 

Curve25519 (X25519) with SHA-256.

Protocol String: curve25519-sha256 Status: Recommended. Pros: Extremely fast and secure. Immune to timing attacks.

ftpKeyExchangeCurve25519libssh 

Legacy libssh-specific Curve25519 identifier.

Protocol String: curve25519-sha256@libssh.org Status: Deprecated. Use ftpKeyExchangeCurve25519 instead.

ftpKeyExchangeMlKem768x25519 

Hybrid Post-Quantum Key Exchange (ML-KEM-768 + X25519).

Algorithm: mlkem768x25519-sha256 Status: Cutting Edge. Purpose: Combines standard Elliptic Curve (X25519) with Post-Quantum Cryptography (Kyber/ML-KEM). This ensures that traffic captured today cannot be decrypted by quantum computers in the future ("Harvest Now, Decrypt Later").

◆ KeyFileFormat

Enumerator
ftpKeyFileFormatUnknown 
ftpKeyFileFormatPKCS8 

Support: Load Private (Yes), Load Public (N/A), Save Private (No), Save Public (N/A).

ftpKeyFileFormatPKCS12 

Support: Load Private (Yes), Load Public (N/A), Save Private (Yes), Save Public (N/A).

ftpKeyFileFormatVanDyke 

Support: Load Private (Yes), Load Public (N/A), Save Private (No), Save Public (N/A).

ftpKeyFileFormatSSH 

Support: Load Private (Yes), Load Public (Yes), Save Private (Yes), Save Public (Yes).

ftpKeyFileFormatOpenSSL 

Support: Load Private (Yes), Load Public (N/A), Save Private (No), Save Public (N/A).

ftpKeyFileFormatPutty 

Support: Load Private (Yes), Load Public (N/A), Save Private (No), Save Public (N/A).

ftpKeyFileFormatOpenSSH 

Support: Load Private (N/A), Load Public (Yes), Save Private (N/A), Save Public (Yes).

◆ KeyType

enum KeyType
Enumerator
ftpKeyTypeUnknown 
ftpKeyTypePublicKey 

Private Key.

ftpKeyTypePrivateKey 

Public Key.

◆ LogFormat

enum LogFormat
Enumerator
ftpLogFormatUnicode 

UTF-16 (little endian).

ftpLogFormatUTF8 

UTF-8.

◆ OperatingSystem

Enumerator
ftpOperatingSystemUnknown 

The operating system is unknown.

  • The connection has not yet been established.
  • Or, the server's environment could not be automatically detected.
ftpOperatingSystemWindows 

The server is running a Windows-based operating system.

ftpOperatingSystemUnix 

The server is running a Unix-like OS (Linux, BSD, macOS, Solaris).

ftpOperatingSystemVMS 

The server is running OpenVMS.

A legacy operating system found in mainframe environments.

  • Path Syntax: Uses specialized syntax like [DIR.SUBDIR]FILE.TXT;1.
  • Relevance: Rare in modern SFTP scenarios but still encountered in legacy FTP integrations.

◆ ParserFormat

Enumerator
ftpParserFormatUnknown 
ftpParserFormatUnix 
ftpParserFormatMLST 
ftpParserFormatVMS 
ftpParserFormatVxWorks 
ftpParserFormatDOS 
ftpParserFormatTandem 
ftpParserFormatVOS 
ftpParserFormatMVS 
ftpParserFormatAS400 
ftpParserFormatOS2 
ftpParserFormatNetware 
ftpParserFormatpSOSystem 
ftpParserFormatNT 
ftpParserFormatMD11 
ftpParserFormatBS2000 
ftpParserFormatVM 
ftpParserFormatConnectEnterprise 
ftpParserFormatGrassValley 
ftpParserFormatSimple 
ftpParserFormatGXSEnterprise 
ftpParserFormatGXSInformationExchangeFTPGateway 
ftpParserFormatSecurePortal2000 
ftpParserFormatMeditech 

◆ PassiveMode

Specifies how the client handles the IP address returned in the FTP server's PASV response.

Enumerator
ftpPassiveModeUseIPFromReply 

Trust the server's PASV response (Standard Protocol Behavior).

The client connects to the exact IP address specified inside the server's 227 Entering Passive Mode (a,b,c,d,p1,p2) response.

  • Best for: Intranets, simple networks, or FXP (Server-to-Server) transfers where the data destination is actually a different machine.
  • Risk: Fails if the server is behind a NAT and reports a private IP.
ftpPassiveModeUseHostIP 

Ignore the server's IP; use the Control Connection IP.

The client ignores the IP address inside the PASV reply and forces the data connection to go to the same IP address used for the Control Channel (port 21).

  • Best for: Connecting to servers hosted in the cloud (AWS/Azure) or behind firewalls.
  • Benefit: Resolves the "hanging directory listing" issue caused by NAT.
ftpPassiveModeAuto 

Intelligent automatic detection (Recommended).

The component analyzes the network conditions to choose the best method:

  • If the PASV reply contains a private IP (e.g., 192.168.x.x, 10.x.x.x) but the Control Connection is to a public IP, it automatically switches to UseHostIP.
  • Otherwise, it defaults to standard behavior (UseIPFromReply).

◆ PortMode

enum PortMode

Specifies how the client determines the IP address sent in the PORT command (Active Mode).

The Problem: In Active Mode (IFTPConnection::Passive = FALSE), the client must tell the server its own IP address so the server can open a connection back to the client.

  • If the client is behind a NAT router, its local IP (e.g., 192.168.1.5) is useless to the public server.
  • The client must instead report its Public IP (the WAN IP of the router).

Usage: Use this enum to set the IFTPConnection::PortMode property. It determines whether the component automatically uses the local machine's IP or uses a manually specified override.

Enumerator
ftpPortModeDefault 

Use the local machine's IP address.

The component detects the local network interface's IP address and sends it in the PORT command. Use Case: Works for Intranets or when the client has a direct public IP. Fails behind NAT.

ftpPortModeManual 

Use the custom IP address defined in the IFTPConnection::PortIP property.

The component sends the specific string found in the IFTPConnection::PortIP property. If IFTPConnection::PortIP is empty, this falls back to ftpPortModeDefault. Use Case: Essential for clients behind NAT. You must set IFTPConnection::PortIP to your router's WAN IP so the server knows the correct return address.

◆ ProtocolFamily

Enumerator
ftpProtocolFamilyUNSPEC 

The protocol family is unspecified (Default).

ftpProtocolFamilyINET4 

Internet Protocol version 4 (IPv4).

ftpProtocolFamilyINET6 

Internet Protocol version 6 (IPv6).

◆ ProxyType

enum ProxyType
Enumerator
ftpProxyTypeNone 

Direct connection (No Proxy).

The client attempts to connect directly to the target server's IP and port.

ftpProxyTypeSOCKS5 

SOCKS5 Proxy (RFC 1928).

A versatile proxy protocol that supports authentication (username/password). It is the recommended standard for general-purpose proxying.

ftpProxyTypeSOCKS4 

SOCKS4 Proxy.

An older protocol that only supports TCP. Limitation: It cannot resolve hostnames remotely; the client must resolve the target's hostname to an IP address before sending it to the proxy.

ftpProxyTypeSOCKS4A 

SOCKS4A Proxy (SOCKS4 + Domain Names).

An extension of SOCKS4 that allows the proxy server to resolve the hostname. This is useful if the client cannot resolve the target DNS name locally.

ftpProxyTypeHTTP 

HTTP Tunneling (CONNECT method).

Uses the HTTP CONNECT verb to create a transparent TCP tunnel through a web proxy. This is commonly used in corporate environments to allow non-HTTP traffic (like FTP/SFTP) to pass through standard web ports (80/443).

◆ ServerCapability

Enumerator
ftpServerCapabilityGetFileSize 
ftpServerCapabilityGetModifyTime 
ftpServerCapabilityGetCreateTime 
ftpServerCapabilitySetModifyTime 
ftpServerCapabilitySetCreateTime 
ftpServerCapabilityCopyFile 
ftpServerCapabilityFXPFile 
ftpServerCapabilityStat 
ftpServerCapabilityGetMLST 
ftpServerCapabilitySetUnixPermissions 
ftpServerCapabilityRestart 
ftpServerCapabilityUTF8 
ftpServerCapabilityCompression 
ftpServerCapabilityRange 
ftpServerCapabilityMachineReadableList 

◆ ServerCapabilityState

Enumerator
ftpServerCapabilityStateUnavailable 
ftpServerCapabilityStateAvailable 
ftpServerCapabilityStateUnknown 

◆ ServerSoftware

server software running on the remote server

Detected from the welcome line or FEAT reply. Not reliable.

Enumerator
ftpServerSoftwareUnknown 
ftpServerSoftwareRaidenFTPd 
ftpServerSoftwareServU 
ftpServerSoftwareGSFTPS 
ftpServerSoftwareWSFTP 
ftpServerSoftwarePureFTPd 
ftpServerSoftwareGuildFTPd 
ftpServerSoftwareTitan 
ftpServerSoftwareOrenosv 
ftpServerSoftwareDrFTPd 
ftpServerSoftwaremoftpd 
ftpServerSoftwareglftpd 
ftpServerSoftwareNcFTPd 
ftpServerSoftwareSurgeFTP 
ftpServerSoftwareBlackmoon 
ftpServerSoftwareWarFTPd 
ftpServerSoftwareWFTPD 
ftpServerSoftwareShareIt 
ftpServerSoftwareGene6 
ftpServerSoftwareNoFeel 
ftpServerSoftwareMOVEit 
ftpServerSoftwareiNEWS 
ftpServerSoftwareFastream 
ftpServerSoftwareConnectEnterprise 
ftpServerSoftwareMicrosoftFTP 
ftpServerSoftwareOracleXMLDB 
ftpServerSoftwareFileZilla 
ftpServerSoftwareProFTPD 
ftpServerSoftwareSnapOS 
ftpServerSoftwareMacOSX 
ftpServerSoftwarecuftpd 
ftpServerSoftwareCerberusFTPServer 
ftpServerSoftwarezOS 
ftpServerSoftwareHumaxiCord 
ftpServerSoftwareMtcp 
ftpServerSoftwarePs3 
ftpServerSoftwareMeditech 
ftpServerSoftwareCleoVLTrader 
ftpServerSoftwareWebMethods 
ftpServerSoftwareJustCloud 
ftpServerSoftwareMultiNet 
ftpServerSoftwareTransCore 
ftpServerSoftwareTopfieldPVR 

◆ ServerType

enum ServerType

Identifies the operating system or server software type of the remote host.

The Mechanism: Upon connecting, the component sends the SYST command. The server responds with a string identifying its system type (RFC 959). The component parses this string to determine how to handle file paths and directory listings.

Why it matters:

  • Path Separators: Unix uses /, Windows uses \\endiskip, VMS uses [].
  • Listing Formats: Unix typically uses ls -l format; Windows/DOS uses a different column layout.
  • File Versioning: Systems like VMS support file version numbers (e.g., file.txt;1).
Enumerator
ftpServerTypeUnknown 

The system type could not be determined or is not supported.

ftpServerTypeUnix 

Standard Unix-like system (Linux, BSD, AIX, Solaris).

  • Paths: Forward slash (/).
  • Case Sensitivity: Usually Yes.
  • Prevalence: The vast majority of FTP servers, including many running on Windows.
ftpServerTypePeterLewis 

Peter Lewis (Stairways Software) FTP Server.

Legacy Macintosh server software.

ftpServerTypeVMS 

OpenVMS (Virtual Memory System).

  • Paths: Distinctive syntax DEVICE:[DIRECTORY]FILE.EXT;VERSION.
  • Versioning: Supports multiple versions of the same file.
ftpServerTypeNT 

Microsoft Windows NT/2000/XP/Server.

  • Paths: Often uses backslash (\\endiskip) or forward slash (/) depending on configuration.
  • Case Sensitivity: No.
  • Note: Native IIS FTP often reports as this type.
ftpServerTypeAmiga 

Commodore Amiga OS.

ftpServerTypeMacOS 

Legacy Classic Mac OS (pre-OS X).

ftpServerTypeMVS 

IBM MVS (Multiple Virtual Storage) / z/OS.

Mainframe environment. Files are often datasets (Partitioned or Sequential).

ftpServerTypeAS400 

IBM AS/400 (iSeries / OS/400).

Uses a library/file member system (e.g., LIBRARY/FILE(MEMBER)).

ftpServerTypeOS2 

IBM OS/2.

ftpServerTypeTandem 

HP NonStop (Tandem).

ftpServerTypeVOS 

Stratus VOS (Virtual Operating System).

ftpServerTypeMD11 

McDonnell Douglas MD-11 Avionics system.

ftpServerTypepSOSystem 

pSOSystem (Real-time OS).

ftpServerTypeNetware 

Novell NetWare.

Legacy network operating system using volume/directory syntax.

ftpServerTypeTNTEmbeddedToolSuite 
ftpServerTypeBS2000 
ftpServerTypeVM 
ftpServerTypeVxWorks 
ftpServerTypeWindowsCE 
ftpServerTypeGXSEnterprise 
ftpServerTypeICS 
ftpServerTypeGrassValley 
ftpServerTypeGXSInformationExchangeFTPGateway 
ftpServerTypeSecurePortal2000 
ftpServerTypeMudOS 

Multi-User Dungeon Object System (LPMud).

◆ SFTPConnectionStatus

Enumerator
ftpSFTPConnectionStatusUnknown 

The SFTP subsystem is not active or is in an indeterminate state.

ftpSFTPConnectionStatusInit 

The SFTP subsystem is initializing.

The Handshake: The component has sent the subsystem request to the server and is currently performing the Protocol Version Exchange (sending SSH_FXP_INIT and waiting for SSH_FXP_VERSION).

ftpSFTPConnectionStatusClosing 

The SFTP subsystem is shutting down.

The Teardown: The component is actively sending close messages (closing file handles, sending SSH_FXP_CLOSE) or waiting for the server to acknowledge the channel closure.

◆ SFTPStatus

enum SFTPStatus
Enumerator
ftpSFTPStatusOk 

Success.

The operation completed successfully (SSH_FX_OK).

ftpSFTPStatusEOF 

End of File.

Returned when reading from a file and the end has been reached. This is not an error condition but a state indicator (SSH_FX_EOF).

ftpSFTPStatusFailure 

Generic Failure.

The "Catch-All" Error: * Used when the server cannot perform the operation but no specific error code applies. OpenSSH (SFTP v3) often uses this for various issues (like full disks) that have specific codes in later versions.

ftpSFTPStatusBadMessage 

Bad Message.

The server received a malformed packet or a command that violated the protocol structure.

ftpSFTPStatusOpUnsupported 

Operation Unsupported.

The requested file operation or extension is not supported by this server implementation.

ftpSFTPStatusNoConnection 

No Connection.

The client is not currently connected to an SSH server.

ftpSFTPStatusConnectionLost 

Connection Lost.

The network connection to the server was dropped during the operation.

ftpSFTPStatusNoSuchFile 

No Such File.

The requested filename does not exist. In SFTP v3, this is also used for missing directories.

ftpSFTPStatusNoSuchPath 

No Such Path (SFTP v4+).

The file path does not exist. Used to distinguish between a missing final component and a missing parent directory.

ftpSFTPStatusFileAlreadyExists 

File Already Exists.

A file creation request failed because the destination already exists and the Overwrite flag was not set.

ftpSFTPStatusNotADirectory 

Not a Directory.

The path specified is a file, but the operation requires a directory (e.g., trying to cd into a text file).

ftpSFTPStatusFileIsADirectory 

File Is a Directory.

The path specified is a directory, but the operation requires a file (e.g., trying to delete a folder instead of rmdir).

ftpSFTPStatusInvalidFilename 

Invalid Filename.

The filename contains invalid characters (e.g., control characters or / in a name).

ftpSFTPStatusLinkLoop 

Link Loop.

Too many symbolic links were encountered while resolving the path (circular symlink).

ftpSFTPStatusPermissionDenied 

Permission Denied.

The user does not have sufficient privileges (read/write/execute) to perform the operation.

ftpSFTPStatusWriteProtect 

Write Protect.

The media is physically write-protected (e.g., read-only USB switch, CD-ROM).

ftpSFTPStatusCannotDelete 

Cannot Delete.

The file could not be deleted (generic permission or locking issue).

ftpSFTPStatusDirNotEmpty 

Directory Not Empty.

Attempted to remove a directory that still contains files (SSH_FX_DIR_NOT_EMPTY).

ftpSFTPStatusInvalidHandle 

Invalid Handle.

The file handle provided is invalid, closed, or stale.

ftpSFTPStatusInvalidParameter 

Invalid Parameter.

One of the parameters in the request was out of range or malformed.

ftpSFTPStatusNoMedia 

No Media.

There is no media in the drive (e.g., card reader is empty).

ftpSFTPStatusNoSpaceOnFilesystem 

No Space on Filesystem.

The disk is full.

ftpSFTPStatusQuotaExceeded 

Quota Exceeded.

The user has exhausted their assigned disk quota.

ftpSFTPStatusUnknownPrincipal 

Unknown Principal.

The user or group name specified in an ACL or owner command is not recognized.

ftpSFTPStatusLocalConflict 

Local Conflict.

The file is locked by another local process on the server OS.

ftpSFTPStatusByteRangeLockConflict 

Byte Range Lock Conflict.

The read/write operation overlaps with an existing mandatory lock held by another peer.

ftpSFTPStatusByteRangeLockRefused 

Byte Range Lock Refused.

A request to acquire a lock was refused (e.g., conflicting lock already exists).

ftpSFTPStatusDeletePending 

Delete Pending.

The file is marked for deletion and cannot be opened.

ftpSFTPStatusFileCorrupt 

File Corrupt.

The server detected filesystem corruption regarding this file.

ftpSFTPStatusOwnerInvalid 

Owner Invalid.

The specified owner is invalid for this file context.

ftpSFTPStatusGroupdInvalid 

Group Invalid.

The specified group is invalid for this file context.

ftpSFTPStatusNoMatchingByteRangeLock 

No Matching Byte Range Lock.

Attempted to unlock a region that was not currently locked.

◆ SSHCompression

Identifies the compression algorithms available for the SSH connection.

These values are used to negotiate the data compression method during the SSH handshake.

Enumerator
ftpSSHCompressionUnknown 
ftpSSHCompressionNone 

No compression ("none").

ftpSSHCompressionzlibopenssh 

Delayed zlib compression ("zlib@openssh.com").

This is the standard compression method used by OpenSSH.

Difference from standard zlib:

  • Standard zlib: Compresses the stream immediately, including the authentication packets.
  • **zlib@openssh.com:** Delays compression until after the user has successfully authenticated.

◆ SSHPublicKeyAlgo

Defines the public key algorithms used for server host keys and client authentication.

These algorithms are used during the SSH handshake to verify the identity of the server (Host Key) and to authenticate the user (Public Key Authentication).

Enumerator
ftpSSHPublicKeyAlgoUnknown 
ftpSSHPublicKeyAlgoRSA 

RSA with SHA-1.

Deprecated
Most modern SSH servers (OpenSSH 8.8+) disable this by default due to SHA-1 weaknesses.
ftpSSHPublicKeyAlgoRSASHA2256 

RSA with SHA-256 (RFC 8332). Recommended RSA variant.

ftpSSHPublicKeyAlgoRSASHA2512 

RSA with SHA-512 (RFC 8332). Strongest RSA variant.

ftpSSHPublicKeyAlgoECDSA256 

NIST P-256 Curve. Standard balance of speed and security.

ftpSSHPublicKeyAlgoECDSA384 

NIST P-384 Curve. Increased security strength over P-256.

ftpSSHPublicKeyAlgoECDSA521 

NIST P-521 Curve. Maximum security strength among standard NIST curves.

ftpSSHPublicKeyAlgoEd25519 

Edwards-curve Digital Signature Algorithm (Curve25519). Highly recommended: Immune to many side-channel attacks and significantly faster than ECDSA.

ftpSSHPublicKeyAlgoEd448 

Ed448 (Goldilocks curve). Higher security level than Ed25519.

ftpSSHPublicKeyAlgoMlDsa44 

NIST Post-Quantum standard (Module-Lattice-Based Digital Signature). Designed to be secure against future quantum computer attacks.

ftpSSHPublicKeyAlgoMlDsa65 

NIST Post-Quantum standard. Increased security strength (Category 3).

ftpSSHPublicKeyAlgoMlDsa87 

NIST Post-Quantum standard. Maximum security strength (Category 5).

ftpSSHPublicKeyAlgox509v3RSA 

RSA key wrapped in an X.509 certificate.

ftpSSHPublicKeyAlgox509v3ECDSA256 

ECDSA P-256 key wrapped in an X.509 certificate.

ftpSSHPublicKeyAlgox509v3ECDSA384 

ECDSA P-384 key wrapped in an X.509 certificate.

ftpSSHPublicKeyAlgox509v3ECDSA521 

ECDSA P-521 key wrapped in an X.509 certificate.

ftpSSHPublicKeyAlgox509v3RSA2048SHA256 

RSA-2048 key with SHA-256 wrapped in an X.509 certificate.

ftpSSHPublicKeyAlgoRSASHA2256CertOpenSSH 

OpenSSH Certificate using RSA key with SHA-256 signature.

ftpSSHPublicKeyAlgoRSASHA2512CertOpenSSH 

OpenSSH Certificate using RSA key with SHA-512 signature.

ftpSSHPublicKeyAlgoEd25519CertOpenSSH 

OpenSSH Certificate using Ed25519 key. Modern, high-speed standard.

ftpSSHPublicKeyAlgoRSACertOpenSSH 

Legacy OpenSSH Certificate using RSA key (SHA-1). Deprecated.

ftpSSHPublicKeyAlgoDSACertOpenSSH 

Legacy OpenSSH Certificate using DSA key. Deprecated.

ftpSSHPublicKeyAlgoECDSA256CertOpenSSH 

OpenSSH Certificate using ECDSA P-256 key.

ftpSSHPublicKeyAlgoECDSA384CertOpenSSH 

OpenSSH Certificate using ECDSA P-384 key.

ftpSSHPublicKeyAlgoECDSA521CertOpenSSH 

OpenSSH Certificate using ECDSA P-521 key.

ftpSSHPublicKeyAlgoDSA 

Digital Signature Algorithm.

Deprecated
Limited to 1024-bit keys; considered insecure by modern standards.

◆ SSHServerSoftware

Enumerator
ftpSSHServerSoftwareUnknown 
ftpSSHServerSoftwareVShell 
ftpSSHServerSoftwareSSHTectia 
ftpSSHServerSoftwareOpenSSH 
ftpSSHServerSoftwareTitan 
ftpSSHServerSoftwareGSFTPS 
ftpSSHServerSoftwareWinSSHD 
ftpSSHServerSoftwareWSFTP 
ftpSSHServerSoftwareFTPShell 
ftpSSHServerSoftwareWeOnlyDo 
ftpSSHServerSoftwarePragmaFortressSSH 
ftpSSHServerSoftwareJSCAPE 
ftpSSHServerSoftwareCoreFTP 
ftpSSHServerSoftwareOpenVMS 
ftpSSHServerSoftwareFSecure 
ftpSSHServerSoftwareSSHcomOld 
ftpSSHServerSoftwareSun 
ftpSSHServerSoftwareServU 
ftpSSHServerSoftwaredropbear 
ftpSSHServerSoftwareReflectionForSecureIT 
ftpSSHServerSoftwareSSHTools 
ftpSSHServerSoftwareGXSSSHD 
ftpSSHServerSoftwareProFTPD 
ftpSSHServerSoftwarezFTPServer 
ftpSSHServerSoftwareMaverick 
ftpSSHServerSoftwareSecureTransport 
ftpSSHServerSoftwareXlight 

◆ StatusEventType

Enumerator
ftpStatusEventTypeLocalCommand 

Local Command.

ftpStatusEventTypeLocalInfo 

Local Info.

ftpStatusEventTypeLocalError 

Local Error.

ftpStatusEventTypeRemote 

Remote/Server reply.