Características de sgcIndy
Componentes Indy TCP/IP mejorados con soporte de OpenSSL 1.1/3.0, autenticación XOAuth2 y mejoras de red para Delphi y Free Pascal.
Componentes Indy TCP/IP mejorados con soporte de OpenSSL 1.1/3.0, autenticación XOAuth2 y mejoras de red para Delphi y Free Pascal.
Actualiza tus aplicaciones Indy con las últimas bibliotecas OpenSSL y los estándares TLS más recientes.
Soporte completo de OpenSSL 1.1.x con TLS 1.2 y TLS 1.3. Reemplazo directo de la integración heredada de OpenSSL en Indy.
Soporte de la última serie OpenSSL 3.x con la nueva arquitectura de proveedores, conformidad con FIPS y mejor gestión de las suites de cifrado.
Soporte de primera clase de TLS 1.3 con reanudación 0-RTT, mejor rendimiento del handshake y suites de cifrado modernas.
Soporte integrado de XOAuth2 para Gmail, Outlook y otros proveedores de OAuth 2.0. Autentica conexiones SMTP, IMAP y POP3 con flujos OAuth modernos.
Mejor gestión de conexiones, control de keep-alive, control de timeouts y gestión de buffers respecto a los componentes Indy estándar.
sgcIndy es de uso gratuito. Compatible con Delphi 7 hasta RAD Studio 13 y con Free Pascal/Lazarus. Sin tarifas de licencia ni regalías.
Cliente SSH 2.0 con todas las funciones para conexiones remotas seguras. Ejecuta comandos, abre shells interactivos y configura reenvío de puertos, todo sobre canales cifrados.
TIdSSHClient gestiona el ciclo de vida SSH completo: intercambio de versiones, negociación de claves, autenticación de usuario y gestión de canales. Conéctate a cualquier servidor SSH y ejecuta comandos, abre shells o reenvía puertos con una API de componentes Delphi limpia.
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;
// Ejecuta un comando y obtiene la salida
Output := SSH.Execute('ls -la /var/log');
Memo1.Text := Output;
SSH.Disconnect;
finally
SSH.Free;
end;
end;
Métodos de contraseña, clave pública (RSA, ECDSA, ED25519) y teclado interactivo. Carga claves privadas desde archivos PEM con frase de paso opcional. Verificación de clave de host mediante el evento OnSSHHostKey.
Intercambio de claves Curve25519, ECDH y Diffie-Hellman. Cifrados AES-CTR y AES-GCM. Autenticación de mensajes HMAC-SHA2. Preferencias de algoritmos configurables mediante la propiedad Algorithms.
Abre varios canales sobre una sola conexión con OpenChannel. Solicita exec, shell o un subsistema (como SFTP) por canal. Envía datos, señales y EOF de forma independiente por canal.
Intervalo y conteo máximo de keep-alive configurables para detectar conexiones muertas. Timeouts de conexión y lectura mediante SSHOptions. Soporte de re-keying automático con Rekey().
Túneles locales a remotos con OpenDirectTCPIP. Reenvío remoto a local con RequestForwarding y CancelForwarding. Tuneliza cualquier tráfico TCP a través de la conexión SSH cifrada.
OnSSHChannelData para datos entrantes, OnSSHChannelExitStatus para resultados de comandos, OnSSHAuthBanner para los banners del servidor y OnSSHError para la gestión de errores. Arquitectura totalmente basada en eventos.
Transferencia segura de archivos sobre SSH. Sube, descarga y gestiona archivos y directorios remotos con seguimiento del progreso y soporte completo de atributos.
TIdSFTPClient se construye sobre TIdSSHClient y gestiona el subsistema SFTP automáticamente. Proporciona una API de alto nivel para todas las operaciones comunes con archivos, sin necesidad de gestionar manualmente canales SSH ni el protocolo 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;
// Sube un archivo
SFTP.Put('C:\local\report.pdf',
'/remote/reports/report.pdf');
// Lista el directorio
Items := SFTP.ListDirectory('/remote/reports');
for i := 0 to Items.Count - 1 do
Memo1.Lines.Add(Items[i].FileName);
// Descarga un archivo
SFTP.Get('/remote/data.csv',
'C:\local\data.csv');
SFTP.Disconnect;
finally
SFTP.Free;
end;
end;
Get() descarga archivos remotos a una ruta local o TStream. Put() sube desde una ruta local o TStream. Tamaño de buffer configurable mediante SFTPBufferSize para un rendimiento óptimo. OnSFTPProgress se dispara durante la transferencia con bytes transferidos, tamaño total y una bandera Cancel.
ListDirectory() devuelve TIdSFTPDirectoryItems con nombre de archivo, tamaño, permisos, marcas de tiempo y tipo para cada entrada. MakeDirectory() y RemoveDirectory() para la gestión de carpetas. GetCurrentDirectory() devuelve la ruta de trabajo remota.
Stat() y LStat() obtienen tamaño, permisos, UID/GID y marcas de tiempo. SetStat() modifica los atributos remotos. FileExists(), DirectoryExists() y FileSize() para comprobaciones rápidas. Soporte de symlinks mediante Symlink() y ReadLink().
GetFileAsString() lee un archivo remoto directamente en una cadena Delphi. PutFileFromString() escribe una cadena en un archivo remoto. RealPath() resuelve rutas relativas o simbólicas a su ubicación absoluta en el servidor.
Hereda toda la autenticación SSH de TIdSSHClient: contraseña, clave pública (RSA, ECDSA, ED25519) y teclado interactivo. Establece credenciales mediante la propiedad Authentication. Evento OnSSHHostKey para la verificación del servidor.
OnSFTPProgress rastrea los bytes transferidos y el tamaño total con una bandera Cancel para abortar transferencias. OnSFTPError proporciona código y mensaje de error. OnSFTPStatus para actualizaciones de estado. OnSFTPDirectoryList se dispara cuando termina el listado del directorio.
Protecciones opcionales que blindan los componentes de servidor TCP, TLS y HTTP frente a ataques comunes. Cada opción mantiene por defecto el comportamiento anterior, por lo que las aplicaciones existentes no se ven afectadas hasta que las habilites.
El callback de verificación del par TLS ya no falla de forma permisiva. Habilita TIdSSLOptions.StrictVerify y se aplicará el resultado de verificación de OpenSSL, de modo que un callback personalizado solo podrá restringirlo aún más, nunca aceptar un certificado no confiable.
DisableCompression mitiga CRIME, DisableRenegotiation bloquea el DoS por renegociación iniciada por el cliente, y ServerCipherPreference hace que el orden de cifrados del servidor prevalezca en la negociación.
RequestReadTimeout limita el tiempo para recibir una petición, mientras que el nuevo TIdIOHandler.SetReadDeadline añade un plazo total de lectura que neutraliza a los clientes de goteo lento que reinician una y otra vez un simple tiempo de espera por inactividad.
MaxRequestBodySize limita el Content-Length y el cuerpo en fragmentos (responde 413), MaxHeaderTotalSize limita el total de bytes de cabecera (responde 431), y TIdIOHandler.MaxInputBufferSize acota el búfer de entrada para detener lecturas que agotan la memoria.
StrictRequestParsing rechaza las peticiones ambiguas que llevan a la vez Content-Length y Transfer-Encoding, así como los tamaños de fragmento negativos, y el bucle de cabeceras de trailer en fragmentos ahora está acotado para evitar un DoS por agotamiento de memoria y CPU.
Todo el refuerzo es opcional y mantiene por defecto el comportamiento anterior, sin cambios que rompan la compatibilidad. Habilita exactamente las protecciones que necesite tu despliegue en Delphi 7 hasta RAD Studio 13 y Free Pascal.