Características — sgcIndy | eSeGeCe

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.

Soporte moderno de OpenSSL

Actualiza tus aplicaciones Indy con las últimas bibliotecas OpenSSL y los estándares TLS más recientes.

OpenSSL 1.1

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.

OpenSSL 3.0

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.

TLS 1.3

Soporte de primera clase de TLS 1.3 con reanudación 0-RTT, mejor rendimiento del handshake y suites de cifrado modernas.

XOAuth2 y TCP/IP mejorado

Autenticación XOAuth2

Soporte integrado de XOAuth2 para Gmail, Outlook y otros proveedores de OAuth 2.0. Autentica conexiones SMTP, IMAP y POP3 con flujos OAuth modernos.

TCP/IP mejorado

Mejor gestión de conexiones, control de keep-alive, control de timeouts y gestión de buffers respecto a los componentes Indy estándar.

Gratuito y abierto

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 — TIdSSHClient

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.

Ejecución remota segura

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.

  • Autenticación con contraseña, clave pública y teclado interactivo
  • Execute() — ejecuta un comando remoto y obtén la salida en una sola llamada
  • RequestShell / RequestPTY — abre sesiones interactivas de terminal
  • Reenvío de puertos — túneles TCP/IP locales y remotos mediante OpenDirectTCPIP y RequestForwarding
  • Multicanal — abre varias sesiones simultáneas sobre una sola conexión
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;

    // Ejecuta un comando y obtiene la salida
    Output := SSH.Execute('ls -la /var/log');
    Memo1.Text := Output;

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

Autenticación

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.

Criptografía moderna

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.

Canales y subsistemas

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.

Keep-Alive y timeouts

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().

Reenvío de puertos

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.

Eventos completos

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.

Cliente SFTP — TIdSFTPClient

Transferencia segura de archivos sobre SSH. Sube, descarga y gestiona archivos y directorios remotos con seguimiento del progreso y soporte completo de atributos.

Operaciones seguras con archivos

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.

  • Get / Put — descarga y sube archivos por ruta o stream
  • ListDirectory — lista el contenido del directorio remoto con los atributos de archivo
  • Delete / Rename — gestiona archivos y directorios remotos
  • MakeDirectory / RemoveDirectory — crea y elimina carpetas
  • OnSFTPProgress — rastrea el progreso de la transferencia con bytes transferidos, tamaño total y soporte de cancelación
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;

    // 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;

Transferencia de archivos

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.

Operaciones con directorios

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.

Atributos de archivos

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().

Helpers de cadenas

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.

Autenticación SSH

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.

Eventos y progreso

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.

Refuerzo de seguridad del servidor

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.

Verificación de certificados

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.

Refuerzo de TLS

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.

Mitigación de Slowloris

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.

Límites de tamaño de petición

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.

Protección contra request smuggling

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.

Opcional y compatible

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.

Actualiza tus componentes Indy

Descarga sgcIndy gratis y lleva el soporte moderno de TLS a tus aplicaciones.