Complemento para o sgcWebSockets Core Delphi 7 ao 13 & C++ Builder

sgcCustomIndy: a biblioteca Indy personalizada para o sgcWebSockets Core

O Indy é a biblioteca open source de comunicação cliente e servidor que o sgcWebSockets usa como base para alguns de seus componentes. A biblioteca Indy padrão não suporta ALPN, e também não suporta TLS 1.3 através do OpenSSL 1.1.1 ou 3.x, por isso o sgcWebSockets Enterprise vem com uma build personalizada do Indy que suporta. O sgcCustomIndy leva essa mesma build personalizada ao sgcWebSockets Core, que de outra forma exigiria subir para a edição Enterprise para obtê-la.

Código-fonte completo
Nada para desinstalar
Instalados lado a lado Uma única IDE As units personalizadas levam o prefixo sgc, então as duas bibliotecas convivem na mesma IDE
Indy padrão IdGlobal.pas
Indy personalizado sgcIdGlobal.pas
0 Bibliotecas Indy para desinstalar O Indy que já está na sua IDE continua instalado
0 Instalações do Indy 10 no Delphi 7 A biblioteca vem junto com o pacote
3 Recursos que faltam ao Indy padrão ALPN, TLS 1.3 sobre OpenSSL 1.1.1 e 3.x, linkagem estática
1 Unit para o OpenSSL estático sgcIdSSLOpenSSL_Static na cláusula uses
2 Alvos de linkagem estática Windows 32 bits e 64 bits, Delphi XE2 ou superior

Duas coisas que vale a pena saber primeiro

Para quem é este pacote, e quem já o tem. As duas respostas são curtas.

É um complemento, não um pedido separado

O sgcCustomIndy é vinculado a uma licença do sgcWebSockets Core. Ele não é pedido sozinho: aparece como o primeiro complemento recomendado dentro de um pedido do Core, que é o mesmo pedido pelo qual passam os pacotes sgcAI, sgcMQ, sgcSocial, sgcAuth e sgcHTTP.

O código-fonte completo acompanha a licença, então as units do Indy compilam e podem ser depuradas passo a passo no seu próprio projeto exatamente como o restante da biblioteca.

Confira antes

O Enterprise e o All-Access já incluem

A biblioteca Indy personalizada faz parte do sgcWebSockets Enterprise e do eSeGeCe All-Access, onde vem habilitada por padrão pelo define de compilação SGC_CUSTOM_INDY em sgcVer.inc. Se você tem uma dessas duas, já possui tudo o que está nesta página e não há nada a acrescentar.

As edições Standard e Professional usam a biblioteca Indy padrão. Veja de qual edição você precisa se estiver comparando um upgrade de edição com este pacote.

Três coisas que a biblioteca Indy padrão não consegue fazer

Cada item abaixo é um recurso da própria camada Indy, e não de um componente que fica acima dela. É por isso que trocar a biblioteca Indy é o que os liga.

ALPNNegociação de protocolo

A extensão sobre a qual o HTTP/2 é construído

O HTTP/2 é negociado durante o handshake TLS: o cliente anuncia os protocolos que sabe falar e o servidor escolhe um. Essa negociação é o Application-Layer Protocol Negotiation, e acontece dentro da camada TLS, abaixo de qualquer coisa que um componente HTTP consiga alcançar. A biblioteca Indy padrão não oferece suporte a ela, então é a biblioteca Indy personalizada que torna o ALPN, e com ele o HTTP/2, disponível.

ALPN HTTP/2
TLS 1.3OpenSSL 1.1.1 e 3.x

Os ramos modernos do OpenSSL, enfim ao seu alcance

O TLS 1.3 precisa do OpenSSL 1.1.1 ou do OpenSSL 3.0.0, e a biblioteca Indy padrão não oferece suporte a esses ramos. A biblioteca Indy personalizada oferece, então um cliente ou servidor construído sobre ela negocia TLS 1.3 com os endpoints que o exigem, em vez de ficar limitado ao que a API mais antiga do OpenSSL entrega.

TLS 1.3 OpenSSL 1.1.1 OpenSSL 3.x
OpenSSL estáticoWindows, Delphi XE2 ou superior

O OpenSSL dentro do executável

O OpenSSL pode ser linkado diretamente na sua aplicação, em vez de ser carregado em tempo de execução a partir das DLLs libcrypto e libssl, de modo que uma aplicação TLS é distribuída como um único arquivo. Isso só tem efeito quando a biblioteca Indy personalizada está em uso, que é justamente o que este pacote entrega. O alcance é Windows 32 bits e 64 bits no Delphi XE2 ou superior, detalhado mais abaixo.

sgcIdSSLOpenSSL_Static Somente Windows Delphi XE2+

Ele fica ao lado do Indy que você já tem

Substituir a biblioteca Indy de uma IDE é a parte que ninguém quer fazer, então este pacote não pede isso. Os arquivos do Indy personalizado são renomeados com o prefixo sgc, IdGlobal vira sgcIdGlobal, e as duas versões convivem sem problemas.

Indy padrão, já na sua IDEIndy personalizado, adicionado por este pacoteO que isso significa
IdGlobal.passgcIdGlobal.pasNomes de unit diferentes, então nada colide no search path
IdTCPClient.passgcIdTCPClient.pasAs duas bibliotecas compilam na mesma IDE e no mesmo projeto
IdSSLOpenSSL.passgcIdSSLOpenSSL.pasO seu código TLS existente continua usando a unit que já usa
Nada para desinstalar

O Indy que a sua IDE já tem continua instalado e continua registrado. Não existe uma etapa em que você remove um package, restaura depois, ou mantém dois perfis de IDE por perto.

Os projetos existentes ficam intactos

Tudo o que você já compila com a biblioteca Indy padrão continua compilando com ela, byte a byte com as mesmas units. A build personalizada é adicional, não é uma substituição e não é uma atualização aplicada à sua IDE.

Um único define de compilação

O uso da biblioteca Indy personalizada é controlado por SGC_CUSTOM_INDY em sgcVer.inc, na pasta de fontes. É um único define, então desligar a build personalizada de novo é uma mudança de uma linha.

Código-fonte completo, como sempre

As units renomeadas do Indy vêm como fonte junto com a licença, então elas compilam com as configurações do seu projeto e são depuradas passo a passo no seu depurador como o restante da biblioteca.

Sem instalação separada do Indy 10

O Delphi 7 vem com um Indy mais antigo. Usar o sgcWebSockets ali significaria, de outra forma, instalar o Indy 10 na IDE por conta própria antes de tudo, que é justamente a etapa que trava muita gente antes de escrever a primeira linha de código. Com a biblioteca Indy personalizada incluída, essa etapa desaparece.

Como era o pré-requisito

Conseguir o Indy 10, instalá-lo em uma IDE Delphi 7 que nunca foi distribuída com ele, fazer os packages compilarem, e só então voltar e começar com o sgcWebSockets. É um trabalho inteiramente separado, feito antes da parte que você realmente queria fazer.

Para uma equipe que ainda mantém código em Delphi 7, esse pré-requisito costuma ser o que decide se uma biblioteca de componentes chega a ser avaliada.

Como fica com este pacote

A biblioteca Indy personalizada vem junto com o pacote, na mesma pasta de fontes que todo o resto. Não há Indy 10 para procurar, não há Indy 10 para instalar na IDE, e não há versão do Indy 10 para manter alinhada com os componentes.

Este ponto trata apenas do pré-requisito do Indy 10. A linkagem estática do OpenSSL é um recurso separado, com o seu próprio alcance, Windows e Delphi XE2 ou superior, portanto não se aplica ao Delphi 7.

Uma unit, um arquivo para distribuir

Não há nada para configurar. Adicione sgcIdSSLOpenSSL_Static à cláusula uses do seu projeto, por exemplo no .dpr principal, e a aplicação passa a usar o OpenSSL linkado no executável na próxima execução, tanto nos componentes cliente quanto nos componentes servidor.

// Project1.dpr
uses
  sgcIdSSLOpenSSL_Static;

// Essa é toda a configuração. Nenhuma diretiva de compilação para habilitar,
// nenhuma versão da API do OpenSSL para escolher. Remova a unit de novo e a
// aplicação volta a carregar as DLLs do OpenSSL exatamente como antes.
Plataformas Onde um arquivo objeto neste formato pode ser linkado
Windows 32 bits Windows 64 bits macOS iOS Android
Compilador Versões mais antigas reportam E2045 Bad object file format
Delphi XE2 e superiores Delphi 7 até XE
Pré-requisito Sem ele a linkagem estática não tem efeito
Biblioteca Indy personalizada em uso SGC_CUSTOM_INDY definido
OpenSSL linkado Atualizado de tempos em tempos para incorporar as correções mais recentes do OpenSSL
OpenSSL 3.5.7

Em uma versão ou plataforma onde a linkagem estática não está disponível, nada quebra. A aplicação continua carregando as DLLs do OpenSSL como fazia antes, então o mesmo código compila em todo lugar.

Qual Indy cada edição usa

A biblioteca Indy personalizada não é novidade. É sobre ela que o sgcWebSockets Enterprise é construído, e este pacote é o caminho até ela para o Core.

O que você temBiblioteca IndyObservações
sgcWebSockets StandardPadrãoSem ALPN, sem TLS 1.3 sobre OpenSSL 1.1.1 ou 3.x
sgcWebSockets ProfessionalPadrãoSem ALPN, sem TLS 1.3 sobre OpenSSL 1.1.1 ou 3.x
sgcWebSockets EnterprisePersonalizadaIncluída, habilitada por padrão
eSeGeCe All-AccessPersonalizadaIncluída, habilitada por padrão
sgcWebSockets Core sozinhoPadrãoÉ isto que o pacote muda
sgcWebSockets Core com sgcCustomIndyPersonalizadaA mesma build personalizada que o Enterprise usa

Não é a mesma coisa que o sgcIndy

O sgcCustomIndy é a build com prefixo sgc que fica ao lado do Indy que você já tem e é usada pelos componentes do sgcWebSockets. O sgcIndy é o package Indy completo e separado, com as units sob os nomes originais, que você instala no lugar do Indy da sua IDE para que componentes Indy padrão como SMTP e FTP também recebam o mesmo TLS moderno. Produtos diferentes, funções diferentes.

Adicionado durante um pedido do Core

O sgcCustomIndy começa em €149 para um único desenvolvedor. Todas as licenças incluem código-fonte completo, 1 ano de atualizações e de 50% a 70% de desconto na renovação: 50% ao renovar um pacote, 60% para dois, 70% para três ou mais. sgcAI, sgcMQ, sgcSocial, sgcCustomIndy, sgcAuth, sgcHTTP e sgcREST contam cada um como um pacote.

sgcCustomIndy

€149

Licenças Single €149, Team €249 e Site €399 disponíveis.

  • A biblioteca Indy personalizada que o sgcWebSockets Enterprise usa
  • ALPN e, com ele, HTTP/2
  • TLS 1.3 sobre OpenSSL 1.1.1 e 3.x
  • Linkagem estática do OpenSSL no Windows, Delphi XE2 ou superior
  • Units com prefixo sgc, então o Indy que você instalou fica intacto
  • Sem instalação separada do Indy 10 no Delphi 7
  • Código-fonte completo
  • 1 ano de atualizações

Não existe uma página de pedido separada do sgcCustomIndy, porque o pacote nunca é o item pelo qual você começa um pedido. Ele é oferecido como o primeiro complemento recomendado dentro de um pedido do sgcWebSockets Core, então você o adiciona com um clique enquanto pede o sgcAI, o sgcMQ ou o sgcSocial, e ele chega na mesma licença. Como o suporte a WebAuthn do sgcAuth e os clientes HTTP/2 e gRPC do sgcHTTP dependem dele, pedir qualquer um desses dois pacotes adiciona o sgcCustomIndy ao seu carrinho automaticamente. Você pode removê-lo se já o tiver pelo Enterprise ou pelo All-Access.

Já tem o sgcWebSockets Enterprise ou o eSeGeCe All-Access? A biblioteca Indy personalizada já é sua, veja os preços do sgcWebSockets para saber o que essas edições cobrem.

3,000+Desenvolvedores
20+Anos
761+Componentes
30+Integrações de API
5Plataformas
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

A camada Indy, trazida para o presente

ALPN e, com ele, HTTP/2, TLS 1.3 sobre OpenSSL 1.1.1 e 3.x, e o OpenSSL linkado dentro do executável no Windows. Tudo isso ao lado do Indy que você já tem, sem nada para desinstalar e sem Indy 10 para instalar no Delphi 7.

Outros produtos da eSeGeCe

Combine o sgcCustomIndy com as nossas outras bibliotecas de componentes para Delphi, C++ Builder e .NET.

sgcWebSockets

A biblioteca completa: clientes e servidores WebSocket, HTTP/2, IoT, P2P e componentes de IA. A edição Enterprise é construída sobre esta biblioteca Indy personalizada.

Saiba mais →

sgcIndy

O package Indy completo sob os nomes originais das units, instalado no lugar do Indy da sua IDE para que SMTP, FTP e o restante ganhem TLS moderno.

Saiba mais →

sgcAI

Componentes de IA, LLM e MCP. Um único componente de chat alcança OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok e Mistral.

Saiba mais →

sgcMQ

Clientes nativos de MQTT, AMQP 0.9.1, AMQP 1.0, Apache Kafka e STOMP. Autônomo, o runtime sgcWebSockets Core está incluído.

Saiba mais →

sgcSocial

Clientes de WhatsApp Business Cloud API e Telegram TDLib. Autônomo, o runtime sgcWebSockets Core está incluído.

Saiba mais →

sgcAuth

Cliente OAuth2, cliente JWT e suporte a WebAuthn. Autônomo, o runtime sgcWebSockets Core está incluído.

Saiba mais →

sgcHTTP

Cliente HTTP/2, cliente gRPC e clientes de Google Cloud Pub/Sub, Calendar e FCM. Autônomo, o runtime sgcWebSockets Core está incluído.

Saiba mais →

sgcQUIC

Componentes cliente e servidor QUIC (RFC 9000) e HTTP/3 (RFC 9114) construídos sobre o mecanismo QUIC nativo do OpenSSL 3.5.

Saiba mais →

sgcHTML

Componentes de HTML e interface do lado do servidor, com reconhecimento de dados, para Delphi, C++ Builder e .NET, com Bootstrap 5 e htmx.

Saiba mais →

sgcSign

Assinaturas digitais de nível empresarial. XAdES, PAdES, CAdES e ASiC com 10 provedores de chaves e 21 perfis por país da UE.

Saiba mais →

sgcOpenAPI

Parser e gerador de SDK para OpenAPI 3.0. Transforme qualquer especificação OpenAPI em um cliente Delphi fortemente tipado em segundos.

Saiba mais →