Servidor STUN para Delphi
Execute seu próprio servidor STUN (RFC 8489) em Delphi. Responda requisições binding com a resposta canônica XOR-MAPPED-ADDRESS — útil em redes privadas, implantações on-premise e bootstrapping de ICE.
Execute seu próprio servidor STUN (RFC 8489) em Delphi. Responda requisições binding com a resposta canônica XOR-MAPPED-ADDRESS — útil em redes privadas, implantações on-premise e bootstrapping de ICE.
Um servidor STUN RFC 8489 tipado — processa mensagens Binding / Indication, responde com XOR-MAPPED-ADDRESS e, opcionalmente, aplica MESSAGE-INTEGRITY para autenticação de longo prazo.
TsgcSTUNServer
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
Defina Port (padrão 3478), Active := True — seu servidor já responde requisições Binding com a resposta canônica XOR-MAPPED-ADDRESS da RFC 8489.
uses
sgcP2P, sgcP2P_STUN_Classes;
// TFormSTUNServer mantém FServer: TsgcSTUNServer e o handler
procedure TFormSTUNServer.StartServer;
begin
FServer := TsgcSTUNServer.Create(nil);
FServer.Port := 3478;
// opcional: credenciais de longo prazo
FServer.STUNOptions.Authentication.Enabled := True;
FServer.STUNOptions.Authentication.LongTermCredentials.Enabled := True;
FServer.STUNOptions.Authentication.LongTermCredentials.Realm :=
'example.com';
FServer.OnSTUNRequestAuthorization := OnSTUNRequestAuthorization;
FServer.Active := True;
end;
procedure TFormSTUNServer.OnSTUNRequestAuthorization(Sender: TObject;
const aRequest: TsgcSTUN_Message;
const aUsername, aRealm: string;
var Password: string);
begin
// retorne a senha desse usuário, vazio rejeita a requisição
Password := LookupPassword(aUsername);
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcSTUNServer *Server = new TsgcSTUNServer(this);
Server->Port = 3478;
Server->STUNOptions->Authentication->Enabled = true;
Server->STUNOptions->Authentication->LongTermCredentials->Enabled = true;
Server->STUNOptions->Authentication->LongTermCredentials->Realm = "example.com";
Server->OnSTUNRequestAuthorization = OnSTUNRequestAuthorization;
Server->Active = true;
Um servidor STUN auto-hospedado — ideal para implantações WebRTC on-premise e testes em nuvem privada.
Requisições Binding recebidas são respondidas com XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (legado) e FINGERPRINT — seguindo o formato padrão de resposta da RFC 8489.
Alterne STUNOptions.Authentication.Enabled para exigir MESSAGE-INTEGRITY e defina o realm em LongTermCredentials.Realm. OnSTUNRequestAuthorization expõe o username e o realm, e você retorna a senha correspondente.
STUNOptions.BindingAttributes liga ou desliga os atributos legados da RFC 3489 MAPPED-ADDRESS, OTHER-ADDRESS, RESPONSE-ORIGIN e SOURCE-ADDRESS, e AlternateServer responde 300 Try Alternate com o servidor que você indicar.
Faça bind a qualquer família ou em pilha dupla via IPVersion. A resposta XOR-MAPPED-ADDRESS usa a família do transporte recebido.
LongTermCredentials.StaleNonce define por quanto tempo um nonce continua válido. Quando ele expira, o servidor responde 438 Stale Nonce com um novo, que é o que a RFC 8489 §9.2 pede.
OnSTUNRequestSuccess e OnSTUNRequestError entregam a requisição e a resposta que o servidor está prestes a enviar, com um var Accept que você pode zerar. LogFile grava a troca bruta em disco.
Acesse a referência do componente, pegue o projeto demo pronto para executar e baixe a versão de avaliação.
| Ajuda online — TsgcSTUNServer Referência completa de propriedades, métodos e eventos deste componente. | Abrir | |
| Projeto demo — Demos\35.P2P\02.STUN Exemplo pronto para executar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo. | Abrir | |
| Documento técnico (PDF) Recursos, início rápido, exemplos de código para Delphi & C++ Builder e referências de fontes primárias — somente deste componente. | Abrir | |
| Manual do usuário (PDF) Manual completo cobrindo todos os componentes da biblioteca. | Abrir |
Dúvidas comuns sobre executar um servidor STUN auto-hospedado em Delphi e C++ Builder.
TsgcSTUNServer, defina Port (padrão 3478) e defina Active := True. O servidor então responde às requisições Binding de entrada com a resposta canônica XOR-MAPPED-ADDRESS. Opcionalmente, habilite Authentication e trate OnSTUNRequestAuthorization para exigir MESSAGE-INTEGRITY com credenciais de longo prazo.TsgcSTUNServer é um servidor STUN auto-hospedado que você incorpora diretamente no seu próprio aplicativo Delphi ou C++ Builder, de modo que você não precisa implantar e operar uma instância coturn separada. É ideal para redes privadas, implantações WebRTC on-premise e bootstrapping de ICE sob o seu próprio controle.