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.
Componenti Indy TCP/IP avanzati con supporto OpenSSL 1.1/3.0, autenticazione XOAuth2 e rete migliorata per Delphi e Free Pascal.
Aggiorna le tue applicazioni Indy con le librerie OpenSSL e gli standard TLS più recenti.
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.
Supporto per l'ultima serie OpenSSL 3.x con la nuova architettura basata su provider, conformità FIPS e gestione migliorata delle cipher suite.
Supporto TLS 1.3 di prima classe con ripresa 0-RTT, prestazioni migliorate dell'handshake e cipher suite moderne.
Supporto XOAuth2 integrato per Gmail, Outlook e altri provider OAuth 2.0. Autentica connessioni SMTP, IMAP e POP3 con flussi OAuth moderni.
Gestione migliorata delle connessioni, gestione keep-alive, controllo dei timeout e gestione dei buffer rispetto ai componenti Indy standard.
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 2.0 completo per connessioni remote sicure. Esegui comandi, apri shell interattive e configura il port forwarding — tutto su canali crittografati.
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.
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;
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.
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.
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.
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().
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.
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.
Trasferimento sicuro di file su SSH. Carica, scarica e gestisci file e directory remote con tracciamento dell'avanzamento e supporto completo degli attributi.
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.
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;
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.
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.
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().
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.
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.
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.
Protezioni opzionali che difendono i componenti server TCP, TLS e HTTP dagli attacchi più comuni. Ogni opzione mantiene per impostazione predefinita il comportamento precedente, quindi le applicazioni esistenti non vengono modificate finché non le abilita.
Il callback di verifica del peer TLS non fallisce più in modalità permissiva. Abiliti TIdSSLOptions.StrictVerify e il risultato della verifica OpenSSL viene applicato, in modo che un callback personalizzato possa solo restringerlo ulteriormente, senza mai accettare un certificato non attendibile.
DisableCompression mitiga CRIME, DisableRenegotiation blocca gli attacchi DoS di rinegoziazione avviati dal client e ServerCipherPreference fa prevalere l'ordine dei cifrari del server nella negoziazione.
RequestReadTimeout limita il tempo per ricevere una richiesta, mentre il nuovo TIdIOHandler.SetReadDeadline aggiunge una scadenza di lettura totale che neutralizza i client a flusso lento che continuano a reimpostare un semplice timeout di inattività.
MaxRequestBodySize limita la Content-Length e il corpo suddiviso in chunk (risponde con 413), MaxHeaderTotalSize limita il totale dei byte di intestazione (risponde con 431) e TIdIOHandler.MaxInputBufferSize limita il buffer di input per fermare le letture che esauriscono la memoria.
StrictRequestParsing rifiuta le richieste ambigue che contengono sia Content-Length sia Transfer-Encoding, oltre alle dimensioni di chunk negative, e il ciclo delle intestazioni del trailer suddiviso in chunk è ora limitato per prevenire un attacco DoS che esaurisce memoria e CPU.
Tutto il rafforzamento è opzionale e mantiene per impostazione predefinita il comportamento precedente, senza modifiche che compromettano la compatibilità. Abiliti esattamente le protezioni di cui la sua distribuzione ha bisogno, da Delphi 7 a RAD Studio 13 e Free Pascal.