Funzionalità di sgcIndy

Componenti Indy TCP/IP avanzati con supporto OpenSSL 1.1/3.0, autenticazione XOAuth2 e rete migliorata per Delphi e Free Pascal.

Supporto OpenSSL moderno

Aggiorna le tue applicazioni Indy con le librerie OpenSSL e gli standard TLS più recenti.

OpenSSL 1.1

Supporto completo per OpenSSL 1.1.x con TLS 1.2 e TLS 1.3. Sostituzione drop-in per l'integrazione OpenSSL legacy di Indy.

OpenSSL 3.0

Supporto per l'ultima serie OpenSSL 3.x con la nuova architettura basata su provider, conformità FIPS e gestione migliorata delle cipher suite.

TLS 1.3

Supporto TLS 1.3 di prima classe con ripresa 0-RTT, prestazioni migliorate dell'handshake e cipher suite moderne.

XOAuth2 e TCP/IP avanzato

Autenticazione XOAuth2

Supporto XOAuth2 integrato per Gmail, Outlook e altri provider OAuth 2.0. Autentica connessioni SMTP, IMAP e POP3 con flussi OAuth moderni.

TCP/IP avanzato

Gestione migliorata delle connessioni, gestione keep-alive, controllo dei timeout e gestione dei buffer rispetto ai componenti Indy standard.

Gratuito e aperto

sgcIndy è gratuito da usare. Compatibile da Delphi 7 fino a RAD Studio 13 e Free Pascal/Lazarus. Nessun costo di licenza o royalty.

Client SSH — TIdSSHClient

Client SSH 2.0 completo per connessioni remote sicure. Esegui comandi, apri shell interattive e configura il port forwarding — tutto su canali crittografati.

Esecuzione remota sicura

TIdSSHClient gestisce l'intero ciclo di vita SSH: scambio di versioni, negoziazione delle chiavi, autenticazione utente e gestione dei canali. Connettiti a qualsiasi server SSH ed esegui comandi, apri shell o inoltra porte con un'API di componenti Delphi pulita.

  • Autenticazione tramite password, chiave pubblica e keyboard-interactive
  • Execute() — esegui un comando remoto e ottieni l'output in una sola chiamata
  • RequestShell / RequestPTY — apri sessioni di terminale interattive
  • Port forwarding — tunneling TCP/IP locale e remoto tramite OpenDirectTCPIP e RequestForwarding
  • Multi-canale — apri più sessioni simultanee su una singola connessione
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;

    // Esegui un comando e ottieni l'output
    Output := SSH.Execute('ls -la /var/log');
    Memo1.Text := Output;

    SSH.Disconnect;
  finally
    SSH.Free;
  end;
end;

Autenticazione

Metodi tramite password, chiave pubblica (RSA, ECDSA, ED25519) e keyboard-interactive. Carica chiavi private da file PEM con passphrase opzionale. Verifica della chiave host tramite l'evento OnSSHHostKey.

Crittografia moderna

Scambio di chiavi Curve25519, ECDH e Diffie-Hellman. Cipher AES-CTR e AES-GCM. Autenticazione dei messaggi HMAC-SHA2. Preferenze algoritmiche configurabili tramite la proprietà Algorithms.

Canali e sottosistemi

Apri più canali su una singola connessione con OpenChannel. Richiedi exec, shell o sottosistema (come SFTP) per canale. Invia dati, segnali e EOF in modo indipendente per ciascun canale.

Keep-alive e timeout

Intervallo di keep-alive e numero massimo configurabili per rilevare connessioni inattive. Timeout di connessione e lettura tramite SSHOptions. Supporto per re-keying automatico tramite Rekey().

Port forwarding

Tunneling da locale a remoto con OpenDirectTCPIP. Forwarding da remoto a locale con RequestForwarding e CancelForwarding. Inoltra qualsiasi traffico TCP attraverso la connessione SSH crittografata.

Eventi ricchi

OnSSHChannelData per i dati in arrivo, OnSSHChannelExitStatus per i risultati dei comandi, OnSSHAuthBanner per i banner del server e OnSSHError per la gestione degli errori. Architettura completamente basata su eventi.

Client SFTP — TIdSFTPClient

Trasferimento sicuro di file su SSH. Carica, scarica e gestisci file e directory remote con tracciamento dell'avanzamento e supporto completo degli attributi.

Operazioni sicure sui file

TIdSFTPClient è costruito sopra TIdSSHClient e gestisce automaticamente il sottosistema SFTP. Fornisce un'API di alto livello per tutte le operazioni comuni sui file — senza bisogno di gestire manualmente canali SSH o il protocollo SFTP.

  • Get / Put — scarica e carica file tramite percorso o stream
  • ListDirectory — elenca i contenuti delle directory remote con gli attributi dei file
  • Delete / Rename — gestisci file e directory remote
  • MakeDirectory / RemoveDirectory — crea e rimuovi cartelle
  • OnSFTPProgress — traccia l'avanzamento del trasferimento con byte trasferiti, dimensione totale e supporto all'annullamento
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;

    // Carica un file
    SFTP.Put('C:\local\report.pdf',
      '/remote/reports/report.pdf');

    // Elenca la directory
    Items := SFTP.ListDirectory('/remote/reports');
    for i := 0 to Items.Count - 1 do
      Memo1.Lines.Add(Items[i].FileName);

    // Scarica un file
    SFTP.Get('/remote/data.csv',
      'C:\local\data.csv');

    SFTP.Disconnect;
  finally
    SFTP.Free;
  end;
end;

Trasferimenti di file

Get() scarica file remoti in un percorso locale o TStream. Put() carica da un percorso locale o TStream. Dimensione del buffer configurabile tramite SFTPBufferSize per un throughput ottimale. OnSFTPProgress si attiva durante il trasferimento con byte trasferiti, dimensione totale e un flag Cancel.

Operazioni sulle directory

ListDirectory() restituisce TIdSFTPDirectoryItems con nome file, dimensione, permessi, timestamp e tipo per ogni voce. MakeDirectory() e RemoveDirectory() per la gestione delle cartelle. GetCurrentDirectory() restituisce il percorso di lavoro remoto.

Attributi dei file

Stat() e LStat() recuperano dimensione, permessi, UID/GID e timestamp. SetStat() modifica gli attributi remoti. FileExists(), DirectoryExists() e FileSize() per controlli rapidi. Supporto ai symlink tramite Symlink() e ReadLink().

Helper per stringhe

GetFileAsString() legge un file remoto direttamente in una stringa Delphi. PutFileFromString() scrive una stringa in un file remoto. RealPath() risolve percorsi relativi o simbolici nella loro posizione assoluta sul server.

Autenticazione SSH

Eredita tutta l'autenticazione SSH da TIdSSHClient: password, chiave pubblica (RSA, ECDSA, ED25519) e keyboard-interactive. Imposta le credenziali tramite la proprietà Authentication. Evento OnSSHHostKey per la verifica del server.

Eventi e avanzamento

OnSFTPProgress traccia i byte trasferiti e la dimensione totale con un flag Cancel per interrompere i trasferimenti. OnSFTPError fornisce codice di errore e messaggio. OnSFTPStatus per gli aggiornamenti di stato. OnSFTPDirectoryList si attiva al completamento dell'elenco delle directory.

Aggiorna i tuoi componenti Indy

Scarica gratuitamente sgcIndy e porta il supporto TLS moderno nelle tue applicazioni.