Serveur STUN pour Delphi
Fais tourner ton propre serveur STUN (RFC 8489) en Delphi. Réponds aux requêtes Binding avec la réponse canonique XOR-MAPPED-ADDRESS — utile dans les réseaux privés, les déploiements sur site et l'amorçage ICE.
Fais tourner ton propre serveur STUN (RFC 8489) en Delphi. Réponds aux requêtes Binding avec la réponse canonique XOR-MAPPED-ADDRESS — utile dans les réseaux privés, les déploiements sur site et l'amorçage ICE.
Un serveur STUN typé conforme à la RFC 8489 — traite les messages Binding / Indication, répond avec XOR-MAPPED-ADDRESS, applique en option MESSAGE-INTEGRITY pour l'authentification longue durée.
TsgcSTUNServer
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
Configure Port (par défaut 3478), Active := True — ton serveur répond désormais aux requêtes Binding avec la réponse canonique XOR-MAPPED-ADDRESS de la RFC 8489.
uses
sgcP2P, sgcP2P_STUN_Classes;
// TFormSTUNServer contient FServer: TsgcSTUNServer et le gestionnaire
procedure TFormSTUNServer.StartServer;
begin
FServer := TsgcSTUNServer.Create(nil);
FServer.Port := 3478;
// optionnel : identifiants long terme
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
// renvoie le mot de passe de cet utilisateur, vide rejette la requête
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;
Un serveur STUN auto-hébergé — idéal pour les déploiements WebRTC sur site et les tests en cloud privé.
Les requêtes Binding entrantes reçoivent une réponse avec XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (legacy) et FINGERPRINT — conforme au format de réponse standard de la RFC 8489.
Active STUNOptions.Authentication.Enabled pour exiger MESSAGE-INTEGRITY et définis le realm sur LongTermCredentials.Realm. OnSTUNRequestAuthorization te remet le nom d'utilisateur et le realm, et tu renvoies le mot de passe correspondant.
STUNOptions.BindingAttributes active ou désactive les attributs historiques RFC 3489 MAPPED-ADDRESS, OTHER-ADDRESS, RESPONSE-ORIGIN et SOURCE-ADDRESS, et AlternateServer répond 300 Try Alternate avec le serveur que tu indiques.
Lie-toi à l'une ou l'autre famille, ou en double pile via IPVersion. La réponse XOR-MAPPED-ADDRESS utilise la famille du transport entrant.
LongTermCredentials.StaleNonce définit la durée de validité d'un nonce. Une fois expiré, le serveur répond 438 Stale Nonce avec un nonce neuf, ce que demande la RFC 8489 §9.2.
OnSTUNRequestSuccess et OnSTUNRequestError te remettent la requête et la réponse que le serveur s'apprête à envoyer, avec un var Accept que tu peux mettre à False. LogFile écrit l'échange brut sur disque.
Lien direct vers la référence du composant, projet de démo prêt à l'emploi et téléchargement de l'essai.
| Aide en ligne — TsgcSTUNServer Référence complète des propriétés, méthodes et événements de ce composant. | Ouvrir | |
| Projet de démo — Demos\35.P2P\02.STUN Projet d'exemple prêt à l'emploi. Livré dans le package sgcWebSockets — télécharge l'essai ci-dessous. | Ouvrir | |
| Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code Delphi et C++ Builder et références primaires — ce composant uniquement. | Ouvrir | |
| Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque. | Ouvrir |
Questions courantes sur l'exécution d'un serveur STUN auto-hébergé en Delphi et C++ Builder.
TsgcSTUNServer, définissez Port (par défaut 3478) et réglez Active := True. Le serveur répond alors aux requêtes Binding entrantes avec la réponse XOR-MAPPED-ADDRESS canonique. Activez éventuellement Authentication et gérez OnSTUNRequestAuthorization pour exiger MESSAGE-INTEGRITY avec des identifiants à long terme.TsgcSTUNServer est un serveur STUN auto-hébergé que vous intégrez directement dans votre propre application Delphi ou C++ Builder, vous n'avez donc pas besoin de déployer et d'exploiter une instance coturn séparée. Il est idéal pour les réseaux privés, les déploiements WebRTC sur site et l'amorçage ICE sous votre propre contrôle.