sgcIndy 功能
增强型 Indy TCP/IP 组件,支持 OpenSSL 1.1/3.0、XOAuth2 身份验证,以及为 Delphi 和 Free Pascal 改进的网络功能。
增强型 Indy TCP/IP 组件,支持 OpenSSL 1.1/3.0、XOAuth2 身份验证,以及为 Delphi 和 Free Pascal 改进的网络功能。
使用最新的 OpenSSL 库和 TLS 标准,让您的 Indy 应用程序与时俱进。
全面支持 OpenSSL 1.1.x,具备 TLS 1.2 和 TLS 1.3 功能。可直接替换旧版 Indy OpenSSL 集成。
支持最新的 OpenSSL 3.x 系列,采用全新提供程序架构,符合 FIPS 规范,并改进了密码套件管理。
一流的 TLS 1.3 支持,包含 0-RTT 恢复、改进的握手性能和现代密码套件。
内置针对 Gmail、Outlook 及其他 OAuth 2.0 提供商的 XOAuth2 支持。通过现代 OAuth 流程对 SMTP、IMAP 和 POP3 连接进行身份验证。
相比标准 Indy 组件,改进了连接处理、保活管理、超时控制和缓冲区管理。
sgcIndy 免费使用。兼容 Delphi 7 至 RAD Studio 13 以及 Free Pascal/Lazarus。无许可费用或版税。
功能完整的 SSH 2.0 客户端,用于安全的远程连接。通过加密通道执行命令、打开交互式 Shell 并设置端口转发。
TIdSSHClient 处理完整的 SSH 生命周期:版本交换、密钥协商、用户身份验证和通道管理。通过简洁的 Delphi 组件 API 连接到任何 SSH 服务器,运行命令、打开 Shell 或转发端口。
var
SSH: TIdSSHClient;
Output: string;
begin
SSH := TIdSSHClient.Create(nil);
try
SSH.Host := 'server.example.com';
SSH.Port := 22;
SSH.Authentication.Username := 'admin';
SSH.Authentication.Password := 'secret';
SSH.Connect;
// Execute a command and get output
Output := SSH.Execute('ls -la /var/log');
Memo1.Text := Output;
SSH.Disconnect;
finally
SSH.Free;
end;
end;
支持密码、公钥(RSA、ECDSA、ED25519)和键盘交互式方法。从 PEM 文件加载私钥,可选设置密码短语。通过 OnSSHHostKey 事件进行主机密钥验证。
Curve25519、ECDH 和 Diffie-Hellman 密钥交换。AES-CTR 和 AES-GCM 密码。HMAC-SHA2 消息身份验证。通过 Algorithms 属性配置算法偏好。
通过 OpenChannel 在单个连接上打开多个通道。为每个通道请求 exec、shell 或子系统(如 SFTP)。独立地为每个通道发送数据、信号和 EOF。
可配置的保活间隔和最大计数,用于检测失效连接。通过 SSHOptions 设置连接和读取超时。通过 Rekey() 支持自动重新密钥协商。
通过 OpenDirectTCPIP 实现本地到远程的隧道传输。通过 RequestForwarding 和 CancelForwarding 实现远程到本地的转发。通过加密 SSH 连接隧道传输任何 TCP 流量。
OnSSHChannelData 用于接收数据,OnSSHChannelExitStatus 用于命令结果,OnSSHAuthBanner 用于服务器横幅,OnSSHError 用于错误处理。完整的事件驱动架构。
基于 SSH 的安全文件传输。通过进度跟踪和完整属性支持,上传、下载和管理远程文件及目录。
TIdSFTPClient 基于 TIdSSHClient 构建,自动处理 SFTP 子系统。它为所有常见文件操作提供高级 API,无需手动管理 SSH 通道或 SFTP 协议。
var
SFTP: TIdSFTPClient;
Items: TIdSFTPDirectoryItems;
i: Integer;
begin
SFTP := TIdSFTPClient.Create(nil);
try
SFTP.Host := 'sftp.example.com';
SFTP.Authentication.Username := 'admin';
SFTP.Authentication.PrivateKeyFile :=
'C:\Keys\id_rsa';
SFTP.Connect;
// Upload a file
SFTP.Put('C:\local\report.pdf',
'/remote/reports/report.pdf');
// List directory
Items := SFTP.ListDirectory('/remote/reports');
for i := 0 to Items.Count - 1 do
Memo1.Lines.Add(Items[i].FileName);
// Download a file
SFTP.Get('/remote/data.csv',
'C:\local\data.csv');
SFTP.Disconnect;
finally
SFTP.Free;
end;
end;
Get() 将远程文件下载到本地路径或 TStream。Put() 从本地路径或 TStream 上传。通过 SFTPBufferSize 配置缓冲区大小以获得最佳吞吐量。传输过程中 OnSFTPProgress 触发,包含已传输字节数、总大小和 Cancel 标志。
ListDirectory() 返回 TIdSFTPDirectoryItems,包含每个条目的文件名、大小、权限、时间戳和类型。MakeDirectory() 和 RemoveDirectory() 用于文件夹管理。GetCurrentDirectory() 返回远程工作路径。
Stat() 和 LStat() 获取大小、权限、UID/GID 和时间戳。SetStat() 修改远程属性。FileExists()、DirectoryExists() 和 FileSize() 用于快速检查。通过 Symlink() 和 ReadLink() 支持符号链接。
GetFileAsString() 将远程文件直接读入 Delphi 字符串。PutFileFromString() 将字符串写入远程文件。RealPath() 将相对路径或符号路径解析为服务器上的绝对位置。
继承 TIdSSHClient 的所有 SSH 身份验证:密码、公钥(RSA、ECDSA、ED25519)和键盘交互式。通过 Authentication 属性设置凭据。OnSSHHostKey 事件用于服务器验证。
OnSFTPProgress 跟踪已传输字节数和总大小,带有 Cancel 标志可中止传输。OnSFTPError 提供错误代码和消息。OnSFTPStatus 用于状态更新。OnSFTPDirectoryList 在目录列表完成时触发。