STUN-server voor Delphi
Draai je eigen STUN-server (RFC 8489) in Delphi. Beantwoord binding requests met het canonieke XOR-MAPPED-ADDRESS antwoord — handig in private netwerken, on-premise deployments en ICE bootstrapping.
Draai je eigen STUN-server (RFC 8489) in Delphi. Beantwoord binding requests met het canonieke XOR-MAPPED-ADDRESS antwoord — handig in private netwerken, on-premise deployments en ICE bootstrapping.
Een getypeerde RFC 8489 STUN-server — verwerkt Binding / Indication berichten, antwoordt met XOR-MAPPED-ADDRESS en kan optioneel MESSAGE-INTEGRITY afdwingen voor long-term authenticatie.
TsgcSTUNServer
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
Stel Port in (standaard 3478), Active := True — je server beantwoordt Binding requests nu met het canonieke RFC 8489 XOR-MAPPED-ADDRESS antwoord.
uses
sgcP2P, sgcP2P_STUN_Classes;
// TFormSTUNServer bevat FServer: TsgcSTUNServer en de handler
procedure TFormSTUNServer.StartServer;
begin
FServer := TsgcSTUNServer.Create(nil);
FServer.Port := 3478;
// optioneel: long term credentials
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
// geef het wachtwoord van die gebruiker terug, leeg weigert het verzoek
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;
Een self-hosted STUN-server — ideaal voor on-premise WebRTC-deployments en private-cloud testen.
Inkomende Binding requests worden beantwoord met XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (legacy) en FINGERPRINT — passend bij de standaard RFC 8489 antwoordvorm.
Zet STUNOptions.Authentication.Enabled aan om MESSAGE-INTEGRITY te vereisen en stel het realm in via LongTermCredentials.Realm. OnSTUNRequestAuthorization geeft je de username en het realm door, en jij retourneert het bijbehorende wachtwoord.
STUNOptions.BindingAttributes schakelt de legacy RFC 3489 MAPPED-ADDRESS, OTHER-ADDRESS, RESPONSE-ORIGIN en SOURCE-ADDRESS in of uit, en AlternateServer antwoordt met 300 Try Alternate en de server die je opgeeft.
Bind aan beide families of dual-stack via IPVersion. Het XOR-MAPPED-ADDRESS antwoord gebruikt de familie van het inkomende transport.
LongTermCredentials.StaleNonce bepaalt hoe lang een nonce geldig blijft. Zodra die verloopt antwoordt de server met 438 Stale Nonce en een verse nonce, precies wat RFC 8489 §9.2 voorschrijft.
OnSTUNRequestSuccess en OnSTUNRequestError geven je het verzoek en het antwoord dat de server op het punt staat te versturen, met een var Accept die je op False kunt zetten. LogFile schrijft de ruwe uitwisseling naar schijf.
Direct linken naar de componentreferentie, het kant-en-klare demoproject pakken en de proefversie downloaden.
| Online help — TsgcSTUNServer Volledige referentie van eigenschappen, methoden en gebeurtenissen voor dit component. | Openen | |
| Demoproject — Demos\35.P2P\02.STUN Kant-en-klaar voorbeeldproject. Zit in het sgcWebSockets-pakket — download hieronder de proefversie. | Openen | |
| Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen dit component. | Openen | |
| Gebruikershandleiding (PDF) Uitgebreide handleiding voor elk component in de bibliotheek. | Openen |
Veelgestelde vragen over het draaien van een zelf-gehoste STUN-server in Delphi en C++ Builder.
TsgcSTUNServer component, stel Port in (standaard 3478) en zet Active := True. De server beantwoordt dan inkomende Binding-requests met het canonieke XOR-MAPPED-ADDRESS-antwoord. Schakel optioneel Authentication in en verwerk OnSTUNRequestAuthorization om MESSAGE-INTEGRITY met long-term credentials te vereisen.TsgcSTUNServer is een zelf-gehoste STUN-server die je rechtstreeks in je eigen Delphi- of C++ Builder-toepassing inbouwt, zodat je geen aparte coturn-instantie hoeft te implementeren en te beheren. Hij is ideaal voor private netwerken, on-premise WebRTC-deployments en ICE-bootstrapping onder je eigen beheer.