sgcIndy の機能
OpenSSL 1.1/3.0 サポート、XOAuth2 認証、改良されたネットワーク機能を備えた、Delphi と Free Pascal 向けの拡張 Indy TCP/IP コンポーネント。
OpenSSL 1.1/3.0 サポート、XOAuth2 認証、改良されたネットワーク機能を備えた、Delphi と Free Pascal 向けの拡張 Indy TCP/IP コンポーネント。
最新の OpenSSL ライブラリと TLS 標準で、Indy アプリケーションを最新の状態に保ちましょう。
TLS 1.2 と TLS 1.3 を含む OpenSSL 1.1.x に完全対応。従来の Indy OpenSSL 統合をそのまま置き換えられます。
新しいプロバイダーアーキテクチャ、FIPS 準拠、改善された暗号スイート管理を含む、最新の OpenSSL 3.x シリーズに対応します。
0-RTT 再開、改善されたハンドシェイク性能、最新の暗号スイートを含む、ファーストクラスの TLS 1.3 サポートです。
Gmail、Outlook、その他の OAuth 2.0 プロバイダー向けに XOAuth2 を標準対応。SMTP、IMAP、POP3 接続を最新の OAuth フローで認証できます。
標準の Indy コンポーネントよりも改善された接続処理、キープアライブ管理、タイムアウト制御、バッファ管理を提供します。
sgcIndy は無料で利用できます。Delphi 7 から RAD Studio 13、Free Pascal/Lazarus に対応します。ライセンス料もロイヤリティもありません。
安全なリモート接続のためのフル機能 SSH 2.0 クライアントです。コマンド実行、対話シェル、ポート転送まで、すべて暗号化チャネル上で行えます。
TIdSSHClient は SSH のライフサイクル全体 (バージョン交換、鍵ネゴシエーション、ユーザー認証、チャネル管理) を扱います。任意の SSH サーバーに接続し、クリーンな Delphi コンポーネント API でコマンド実行、シェル起動、ポート転送を行えます。
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 を使って、1 つの接続上で複数のチャネルを開けます。チャネルごとに 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 はディレクトリ一覧の取得完了時に発生します。