sgcIndy の機能

OpenSSL 1.1/3.0 サポート、XOAuth2 認証、改良されたネットワーク機能を備えた、Delphi と Free Pascal 向けの拡張 Indy TCP/IP コンポーネント。

最新の OpenSSL サポート

最新の OpenSSL ライブラリと TLS 標準で、Indy アプリケーションを最新の状態に保ちましょう。

OpenSSL 1.1

TLS 1.2 と TLS 1.3 を含む OpenSSL 1.1.x に完全対応。従来の Indy OpenSSL 統合をそのまま置き換えられます。

OpenSSL 3.0

新しいプロバイダーアーキテクチャ、FIPS 準拠、改善された暗号スイート管理を含む、最新の OpenSSL 3.x シリーズに対応します。

TLS 1.3

0-RTT 再開、改善されたハンドシェイク性能、最新の暗号スイートを含む、ファーストクラスの TLS 1.3 サポートです。

XOAuth2 と拡張 TCP/IP

XOAuth2 認証

Gmail、Outlook、その他の OAuth 2.0 プロバイダー向けに XOAuth2 を標準対応。SMTP、IMAP、POP3 接続を最新の OAuth フローで認証できます。

拡張 TCP/IP

標準の Indy コンポーネントよりも改善された接続処理、キープアライブ管理、タイムアウト制御、バッファ管理を提供します。

無料・オープン

sgcIndy は無料で利用できます。Delphi 7 から RAD Studio 13、Free Pascal/Lazarus に対応します。ライセンス料もロイヤリティもありません。

SSH クライアント — TIdSSHClient

安全なリモート接続のためのフル機能 SSH 2.0 クライアントです。コマンド実行、対話シェル、ポート転送まで、すべて暗号化チャネル上で行えます。

安全なリモート実行

TIdSSHClient は SSH のライフサイクル全体 (バージョン交換、鍵ネゴシエーション、ユーザー認証、チャネル管理) を扱います。任意の SSH サーバーに接続し、クリーンな Delphi コンポーネント API でコマンド実行、シェル起動、ポート転送を行えます。

  • パスワード、公開鍵、キーボードインタラクティブの各種認証
  • Execute() — リモートコマンドを実行し、1 回の呼び出しで出力を取得
  • RequestShell / RequestPTY — 対話的なターミナルセッションを開始
  • ポート転送 — OpenDirectTCPIP と RequestForwarding によるローカル・リモート TCP/IP トンネリング
  • マルチチャネル — 単一接続上で複数の同時セッションを開始
SSH_Example.pas
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 を提供します。完全なイベント駆動アーキテクチャです。

SFTP クライアント — TIdSFTPClient

SSH 上での安全なファイル転送です。リモートのファイルとディレクトリをアップロード、ダウンロード、管理でき、進捗追跡と完全な属性サポートを備えています。

安全なファイル操作

TIdSFTPClient は TIdSSHClient の上に構築されており、SFTP サブシステムを自動的に処理します。一般的なファイル操作向けの高レベル API を提供し、SSH チャネルや SFTP プロトコルを手動で扱う必要はありません。

  • Get / Put — パスまたはストリーム経由でファイルをダウンロード・アップロード
  • ListDirectory — リモートディレクトリの内容をファイル属性付きで一覧表示
  • Delete / Rename — リモートファイル・ディレクトリの管理
  • MakeDirectory / RemoveDirectory — フォルダーの作成・削除
  • OnSFTPProgress — 転送済みバイト数、合計サイズ、キャンセル対応で転送進捗を追跡
SFTP_Example.pas
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() は相対パスやシンボリックパスをサーバー上の絶対位置に解決します。

SSH 認証

TIdSSHClient のすべての SSH 認証 (パスワード、公開鍵 (RSA、ECDSA、ED25519)、キーボードインタラクティブ) を継承します。資格情報は Authentication プロパティで設定します。OnSSHHostKey イベントでサーバーの検証を行います。

イベントと進捗

OnSFTPProgress は転送済みバイト数と合計サイズを追跡し、Cancel フラグで転送を中止できます。OnSFTPError はエラーコードとメッセージを通知します。OnSFTPStatus はステータス更新用、OnSFTPDirectoryList はディレクトリ一覧の取得完了時に発生します。

Indy コンポーネントをアップグレード

sgcIndy を無料でダウンロードして、アプリケーションに最新の TLS サポートをもたらしましょう。