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.

Actualiza tus componentes Indy

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