sgcIndy-Funktionen

Erweiterte Indy-TCP/IP-Komponenten mit OpenSSL-1.1/3.0-Unterstützung, XOAuth2-Authentifizierung und verbessertem Netzwerk-Stack für Delphi und Free Pascal.

Moderne OpenSSL-Unterstützung

Bring deine Indy-Anwendungen mit den neuesten OpenSSL-Bibliotheken und TLS-Standards auf den aktuellen Stand.

OpenSSL 1.1

Volle Unterstützung für OpenSSL 1.1.x mit TLS 1.2 und TLS 1.3. Drop-in-Ersatz für die alte Indy-OpenSSL-Integration.

OpenSSL 3.0

Unterstützung für die neueste OpenSSL-3.x-Serie mit neuer Provider-Architektur, FIPS-Konformität und verbesserter Cipher-Suite-Verwaltung.

TLS 1.3

Erstklassige TLS-1.3-Unterstützung mit 0-RTT-Resumption, verbesserter Handshake-Performance und modernen Cipher-Suites.

XOAuth2 & erweitertes TCP/IP

XOAuth2-Authentifizierung

Eingebaute XOAuth2-Unterstützung für Gmail, Outlook und andere OAuth-2.0-Anbieter. Authentifiziere SMTP-, IMAP- und POP3-Verbindungen mit modernen OAuth-Flows.

Erweitertes TCP/IP

Verbesserte Verbindungsverwaltung, Keep-Alive-Steuerung, Timeout-Kontrolle und Buffer-Management gegenüber den Standard-Indy-Komponenten.

Frei & offen

sgcIndy ist kostenlos nutzbar. Kompatibel mit Delphi 7 bis RAD Studio 13 sowie Free Pascal/Lazarus. Keine Lizenzgebühren oder Royalties.

SSH-Client — TIdSSHClient

Vollwertiger SSH-2.0-Client für sichere Remote-Verbindungen. Führe Befehle aus, öffne interaktive Shells und richte Port-Forwarding ein — alles über verschlüsselte Kanäle.

Sichere Remote-Ausführung

TIdSSHClient übernimmt den kompletten SSH-Lebenszyklus: Versionsaustausch, Schlüsselaushandlung, Benutzerauthentifizierung und Channel-Verwaltung. Verbinde dich mit jedem SSH-Server und führe Befehle aus, öffne Shells oder leite Ports weiter — mit einer sauberen Delphi-Komponenten-API.

  • Passwort, Public Key & Keyboard-Interactive Authentifizierung
  • Execute() — führe einen Remote-Befehl aus und erhalte die Ausgabe in einem Aufruf
  • RequestShell / RequestPTY — öffne interaktive Terminal-Sitzungen
  • Port-Forwarding — lokales und remote TCP/IP-Tunneling über OpenDirectTCPIP und RequestForwarding
  • Multi-Channel — öffne mehrere gleichzeitige Sitzungen über eine einzige Verbindung
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;

Authentifizierung

Methoden: Passwort, Public Key (RSA, ECDSA, ED25519) und Keyboard-Interactive. Lade private Schlüssel aus PEM-Dateien mit optionaler Passphrase. Host-Key-Verifizierung über das OnSSHHostKey-Ereignis.

Moderne Kryptografie

Curve25519-, ECDH- und Diffie-Hellman-Schlüsselaustausch. AES-CTR- und AES-GCM-Cipher. HMAC-SHA2-Message-Authentication. Konfigurierbare Algorithmus-Präferenzen über die Algorithms-Eigenschaft.

Channels & Subsysteme

Öffne mehrere Channels über eine Verbindung mit OpenChannel. Fordere exec, shell oder Subsystem (wie SFTP) pro Channel an. Sende Daten, Signale und EOF unabhängig pro Channel.

Keep-Alive & Timeouts

Konfigurierbare Keep-Alive-Intervalle und Max-Count zur Erkennung toter Verbindungen. Connect- und Read-Timeouts über SSHOptions. Automatische Re-Keying-Unterstützung über Rekey().

Port-Forwarding

Local-to-Remote-Tunneling mit OpenDirectTCPIP. Remote-to-Local-Forwarding mit RequestForwarding und CancelForwarding. Leite beliebigen TCP-Traffic durch die verschlüsselte SSH-Verbindung.

Umfangreiche Ereignisse

OnSSHChannelData für eingehende Daten, OnSSHChannelExitStatus für Befehlsergebnisse, OnSSHAuthBanner für Server-Banner und OnSSHError für Fehlerbehandlung. Vollständig ereignisgesteuerte Architektur.

SFTP-Client — TIdSFTPClient

Sichere Dateiübertragung über SSH. Lade Remote-Dateien und -Verzeichnisse hoch, herunter und verwalte sie — mit Fortschrittsanzeige und voller Attributunterstützung.

Sichere Dateioperationen

TIdSFTPClient setzt auf TIdSSHClient auf und verwaltet das SFTP-Subsystem automatisch. Er bietet eine High-Level-API für alle gängigen Dateioperationen — ohne dass du SSH-Channels oder das SFTP-Protokoll manuell verwalten musst.

  • Get / Put — lade Dateien per Pfad oder Stream herunter und hoch
  • ListDirectory — liste Inhalte von Remote-Verzeichnissen samt Dateiattributen
  • Delete / Rename — verwalte Remote-Dateien und -Verzeichnisse
  • MakeDirectory / RemoveDirectory — lege Ordner an und entferne sie
  • OnSFTPProgress — verfolge den Übertragungsfortschritt mit übertragenen Bytes, Gesamtgröße und Abbrechen-Unterstützung
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;

File Transfers

Get() lädt Remote-Dateien in einen lokalen Pfad oder einen TStream herunter. Put() lädt aus einem lokalen Pfad oder einem TStream hoch. Die Puffergröße lässt sich über SFTPBufferSize für optimalen Durchsatz konfigurieren. OnSFTPProgress wird während der Übertragung mit den übertragenen Bytes, der Gesamtgröße und einem Cancel-Flag ausgelöst.

Directory Operations

ListDirectory() liefert TIdSFTPDirectoryItems mit Dateiname, Größe, Berechtigungen, Zeitstempeln und Typ für jeden Eintrag. MakeDirectory() und RemoveDirectory() dienen der Ordnerverwaltung. GetCurrentDirectory() liefert den entfernten Arbeitspfad.

File Attributes

Stat() und LStat() ermitteln Größe, Berechtigungen, UID/GID und Zeitstempel. SetStat() ändert entfernte Attribute. FileExists(), DirectoryExists() und FileSize() ermöglichen schnelle Prüfungen. Symlinks werden über Symlink() und ReadLink() unterstützt.

String Helpers

GetFileAsString() liest eine Remote-Datei direkt in einen Delphi-String. PutFileFromString() schreibt einen String in eine Remote-Datei. RealPath() löst relative oder symbolische Pfade in ihren absoluten Speicherort auf dem Server auf.

SSH Authentication

Erbt die gesamte SSH-Authentifizierung von TIdSSHClient: Passwort, Public Key (RSA, ECDSA, ED25519) und Keyboard-Interactive. Setze die Zugangsdaten über die Eigenschaft Authentication. Das Ereignis OnSSHHostKey dient der Server-Verifizierung.

Events & Progress

OnSFTPProgress verfolgt die übertragenen Bytes und die Gesamtgröße und bietet ein Cancel-Flag zum Abbrechen von Übertragungen. OnSFTPError liefert Fehlercode und Meldung. OnSFTPStatus meldet Statusänderungen. OnSFTPDirectoryList wird ausgelöst, wenn die Verzeichnisliste vollständig ist.

Server-Sicherheitshärtung

Optionale Schutzmaßnahmen, die die TCP-, TLS- und HTTP-Serverkomponenten gegen verbreitete Angriffe absichern. Jede Option ist standardmäßig auf das bisherige Verhalten eingestellt, sodass bestehende Anwendungen nicht beeinträchtigt werden, bis Sie sie aktivieren.

Zertifikatsprüfung

Der Callback zur TLS-Gegenstellenprüfung schlägt nicht mehr fehlerhaft offen aus. Aktivieren Sie TIdSSLOptions.StrictVerify, und das Prüfergebnis von OpenSSL wird durchgesetzt, sodass ein benutzerdefinierter Callback es nur weiter einschränken kann und niemals ein nicht vertrauenswürdiges Zertifikat akzeptiert.

TLS-Härtung

DisableCompression mindert CRIME, DisableRenegotiation blockiert vom Client ausgelöste Renegotiation-DoS, und ServerCipherPreference sorgt dafür, dass die Cipher-Reihenfolge des Servers die Aushandlung gewinnt.

Slowloris-Abwehr

RequestReadTimeout begrenzt die Zeit für den Empfang einer Anfrage, während das neue TIdIOHandler.SetReadDeadline eine Gesamtlesefrist hinzufügt, die langsam tröpfelnde Clients abwehrt, die einen einfachen Inaktivitäts-Timeout immer wieder zurücksetzen.

Größenbeschränkungen für Anfragen

MaxRequestBodySize begrenzt die Content-Length und den Chunked-Body (antwortet mit 413), MaxHeaderTotalSize begrenzt die gesamten Header-Bytes (antwortet mit 431), und TIdIOHandler.MaxInputBufferSize beschränkt den Eingabepuffer, um speichererschöpfende Lesevorgänge zu verhindern.

Schutz vor Request Smuggling

StrictRequestParsing weist mehrdeutige Anfragen zurück, die sowohl Content-Length als auch Transfer-Encoding enthalten, sowie negative Chunk-Größen, und die Schleife für Chunked-Trailer-Header ist jetzt begrenzt, um eine Speicher- und CPU-erschöpfende DoS zu verhindern.

Optional & kompatibel

Sämtliche Härtung ist optional und standardmäßig auf das bisherige Verhalten eingestellt, ohne Breaking Changes. Aktivieren Sie genau die Schutzmaßnahmen, die Ihre Bereitstellung benötigt, über Delphi 7 bis RAD Studio 13 und Free Pascal hinweg.

Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Upgrade Your Indy Components

Lade sgcIndy kostenlos herunter und bringe moderne TLS-Unterstützung in deine Anwendungen.