Fonctionnalités sgcIndy
Composants Indy TCP/IP améliorés avec support OpenSSL 1.1/3.0, authentification XOAuth2 et réseau amélioré pour Delphi et Free Pascal.
Composants Indy TCP/IP améliorés avec support OpenSSL 1.1/3.0, authentification XOAuth2 et réseau amélioré pour Delphi et Free Pascal.
Mets tes applications Indy à jour avec les dernières bibliothèques OpenSSL et standards TLS.
Support complet d'OpenSSL 1.1.x avec TLS 1.2 et TLS 1.3. Remplacement prêt à l'emploi pour l'intégration OpenSSL Indy héritée.
Support de la dernière série OpenSSL 3.x avec la nouvelle architecture de providers, la conformité FIPS et une gestion améliorée des suites de chiffrement.
Support TLS 1.3 de premier ordre avec reprise 0-RTT, performances de handshake améliorées et suites de chiffrement modernes.
Support XOAuth2 intégré pour Gmail, Outlook et d'autres fournisseurs OAuth 2.0. Authentifie les connexions SMTP, IMAP et POP3 avec des flux OAuth modernes.
Gestion améliorée des connexions, du keep-alive, des timeouts et des buffers par rapport aux composants Indy standard.
sgcIndy est libre d'utilisation. Compatible avec Delphi 7 à RAD Studio 13 et Free Pascal/Lazarus. Pas de frais de licence ni de redevances.
Client SSH 2.0 complet pour des connexions distantes sécurisées. Exécute des commandes, ouvre des shells interactifs et configure la redirection de port — le tout sur des canaux chiffrés.
TIdSSHClient gère le cycle de vie SSH complet : échange de versions, négociation de clés, authentification utilisateur et gestion des canaux. Connecte-toi à n'importe quel serveur SSH et exécute des commandes, ouvre des shells ou redirige des ports avec une API de composants Delphi propre.
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;
// Exécuter une commande et obtenir la sortie
Output := SSH.Execute('ls -la /var/log');
Memo1.Text := Output;
SSH.Disconnect;
finally
SSH.Free;
end;
end;
Méthodes par mot de passe, clé publique (RSA, ECDSA, ED25519) et clavier interactif. Charge les clés privées depuis des fichiers PEM avec phrase de passe optionnelle. Vérification de la clé d'hôte via l'événement OnSSHHostKey.
Échange de clés Curve25519, ECDH et Diffie-Hellman. Chiffrements AES-CTR et AES-GCM. Authentification de message HMAC-SHA2. Préférences d'algorithmes configurables via la propriété Algorithms.
Ouvre plusieurs canaux sur une seule connexion avec OpenChannel. Demande exec, shell ou sous-système (comme SFTP) par canal. Envoie données, signaux et EOF indépendamment par canal.
Intervalle de keep-alive et nombre max configurables pour détecter les connexions mortes. Timeouts de connexion et de lecture via SSHOptions. Support du re-keying automatique via Rekey().
Tunneling local-vers-distant avec OpenDirectTCPIP. Redirection distant-vers-local avec RequestForwarding et CancelForwarding. Tunnelise n'importe quel trafic TCP via la connexion SSH chiffrée.
OnSSHChannelData pour les données entrantes, OnSSHChannelExitStatus pour les résultats des commandes, OnSSHAuthBanner pour les bannières serveur et OnSSHError pour la gestion d'erreurs. Architecture complètement orientée événements.
Transfert de fichiers sécurisé sur SSH. Upload, download et gestion des fichiers et répertoires distants avec suivi de la progression et support complet des attributs.
TIdSFTPClient est construit par-dessus TIdSSHClient et gère le sous-système SFTP automatiquement. Il fournit une API de haut niveau pour toutes les opérations de fichiers courantes — pas besoin de gérer les canaux SSH ou le protocole SFTP manuellement.
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;
// Téléverser un fichier
SFTP.Put('C:\local\report.pdf',
'/remote/reports/report.pdf');
// Lister le répertoire
Items := SFTP.ListDirectory('/remote/reports');
for i := 0 to Items.Count - 1 do
Memo1.Lines.Add(Items[i].FileName);
// Télécharger un fichier
SFTP.Get('/remote/data.csv',
'C:\local\data.csv');
SFTP.Disconnect;
finally
SFTP.Free;
end;
end;
Get() télécharge les fichiers distants vers un chemin local ou un TStream. Put() téléverse depuis un chemin local ou un TStream. Taille de buffer configurable via SFTPBufferSize pour un débit optimal. OnSFTPProgress se déclenche pendant le transfert avec les octets transférés, la taille totale et un flag Cancel.
ListDirectory() renvoie un TIdSFTPDirectoryItems avec le nom de fichier, la taille, les permissions, les timestamps et le type pour chaque entrée. MakeDirectory() et RemoveDirectory() pour la gestion des dossiers. GetCurrentDirectory() renvoie le chemin de travail distant.
Stat() et LStat() récupèrent la taille, les permissions, UID/GID et les timestamps. SetStat() modifie les attributs distants. FileExists(), DirectoryExists() et FileSize() pour des vérifications rapides. Support des symlinks via Symlink() et ReadLink().
GetFileAsString() lit un fichier distant directement dans une chaîne Delphi. PutFileFromString() écrit une chaîne dans un fichier distant. RealPath() résout les chemins relatifs ou symboliques vers leur emplacement absolu sur le serveur.
Hérite de toutes les authentifications SSH de TIdSSHClient : mot de passe, clé publique (RSA, ECDSA, ED25519) et clavier interactif. Configure les identifiants via la propriété Authentication. Événement OnSSHHostKey pour la vérification du serveur.
OnSFTPProgress suit les octets transférés et la taille totale avec un flag Cancel pour annuler les transferts. OnSFTPError fournit le code d'erreur et le message. OnSFTPStatus pour les mises à jour de statut. OnSFTPDirectoryList se déclenche quand le listage du répertoire se termine.
Des protections optionnelles qui protègent les composants serveur TCP, TLS et HTTP contre les attaques courantes. Chaque option conserve par défaut le comportement précédent, de sorte que vos applications existantes ne sont pas affectées tant que vous ne les activez pas.
Le callback de vérification du pair TLS n'échoue plus en mode ouvert. Activez TIdSSLOptions.StrictVerify et le résultat de vérification d'OpenSSL est appliqué, de sorte qu'un callback personnalisé ne peut que le restreindre davantage, jamais accepter un certificat non fiable.
DisableCompression atténue CRIME, DisableRenegotiation bloque le DoS par renégociation initiée par le client, et ServerCipherPreference fait en sorte que l'ordre des chiffrements du serveur l'emporte dans la négociation.
RequestReadTimeout limite le temps de réception d'une requête, tandis que la nouvelle méthode TIdIOHandler.SetReadDeadline ajoute un délai de lecture total qui déjoue les clients à débit lent qui réinitialisent sans cesse un simple délai d'inactivité.
MaxRequestBodySize plafonne le corps Content-Length et le corps en chunks (répond 413), MaxHeaderTotalSize plafonne le nombre total d'octets d'en-tête (répond 431), et TIdIOHandler.MaxInputBufferSize borne le tampon d'entrée pour stopper les lectures provoquant un épuisement de la mémoire.
StrictRequestParsing rejette les requêtes ambiguës qui portent à la fois Content-Length et Transfer-Encoding, ainsi que les tailles de chunk négatives, et la boucle des en-têtes de trailer en chunks est désormais bornée pour empêcher un DoS par épuisement de la mémoire et du CPU.
Tout le renforcement est optionnel et conserve par défaut le comportement précédent, sans changement cassant. Activez exactement les protections dont votre déploiement a besoin, de Delphi 7 à RAD Studio 13 et Free Pascal.