TURN-server voor Delphi

Draai je eigen TURN-server (RFC 8656) in Delphi. Wijs gerelayde transportadressen toe aan clients die geen peer-to-peer pad tot stand kunnen brengen, met long-term credentials en quota per allocation.

TsgcTURNServer

Een self-hosted TURN-server — verwerkt Allocate / CreatePermission / ChannelBind / Send / Refresh / Data, beheert allocations en hun levensduur en valideert long-term credentials.

Componentklasse

TsgcTURNServer

Protocol

TURN (RFC 8656)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Enterprise

Plaatsen, realm instellen, credentials uitdelen

Stel Port in en het realm op TURNOptions.Authentication.LongTermCredentials, lever wachtwoorden per gebruiker via OnSTUNRequestAuthorization, Active := True — je server wijst nu relays toe aan elke RFC 8656-client.

uses
  sgcP2P, sgcP2P_STUN_Classes;

// TFormTURNServer bevat FServer: TsgcTURNServer en de handler

procedure TFormTURNServer.StartServer;
begin
  FServer := TsgcTURNServer.Create(nil);
  FServer.Port := 3478;

  FServer.TURNOptions.Authentication.Enabled := True;
  FServer.TURNOptions.Authentication.LongTermCredentials.Enabled := True;
  FServer.TURNOptions.Authentication.LongTermCredentials.Realm :=
    'turn.example.com';

  // beperk misbruik: allocations per gebruiker en maximale levensduur
  FServer.TURNOptions.Allocation.MaxUserAllocations := 4;
  FServer.TURNOptions.Allocation.MaxLifeTime := 3600;

  FServer.OnSTUNRequestAuthorization := OnSTUNRequestAuthorization;

  FServer.Active := True;
end;

procedure TFormTURNServer.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
TsgcTURNServer *Server = new TsgcTURNServer(this);
Server->Port = 3478;
Server->TURNOptions->Authentication->Enabled = true;
Server->TURNOptions->Authentication->LongTermCredentials->Enabled = true;
Server->TURNOptions->Authentication->LongTermCredentials->Realm = "turn.example.com";
Server->TURNOptions->Allocation->MaxUserAllocations = 4;
Server->OnSTUNRequestAuthorization = OnSTUNRequestAuthorization;
Server->Active = true;

Wat zit erin

Een self-hosted relay — zo zijn je WebRTC- en ICE-deployments niet langer afhankelijk van externe TURN-providers.

Allocate / Refresh / Free

Honoreert Allocate-requests met REQUESTED-TRANSPORT, kiest een vrije relay-poort en houdt de levensduur bij. Refresh verlengt de allocation; de server breekt hem af bij verloop.

CreatePermission / ChannelBind

Houdt peer-permissions en channel-bindings per allocation bij. Verwerpt Send/Data-frames voor peers zonder permissie volgens RFC 8656 §9.

Send / Data / ChannelData

Zowel 36 byte Send / Data-envelopes als 4 byte ChannelData-frames worden ondersteund. De relay stuurt datagrammen door tussen het relayed-transport-address en de gebonden peer.

Long-term credentials

TURNOptions.Authentication.LongTermCredentials bevat het realm, en OnSTUNRequestAuthorization geeft je de username en dat realm door zodat jij het wachtwoord retourneert. De server valideert MESSAGE-INTEGRITY en roteert nonces zelf.

Quota en relay-poorten

TURNOptions.Allocation.MaxUserAllocations begrenst hoeveel relays één gebruiker krijgt, DefaultLifeTime en MaxLifeTime begrenzen hoe lang elke relay leeft, en MinPort / MaxPort / RelayIP leggen het relay-bereik vast. Een gebruiker boven de limiet krijgt 486 Allocation Quota Reached.

Keur elke allocation zelf goed

OnTURNBeforeAllocate geeft je het aanvragende adres met een var Reject, en OnTURNBeforeRelayIndication en OnTURNBeforeRelayChannelData doen hetzelfde voor elk gerelayd datagram. OnTURNCreateAllocation en OnTURNDeleteAllocation houden bij welke allocations er leven.

Specificaties & referenties

Autoritatieve bronnen voor het protocol dat dit component implementeert.

Documentatie & demo's

Direct linken naar de componentreferentie, het kant-en-klare demoproject pakken en de proefversie downloaden.

Online help — TsgcTURNServer Volledige referentie van eigenschappen, methoden en gebeurtenissen voor dit component.
Demoproject — Demos\35.P2P\03.TURN Kant-en-klaar voorbeeldproject. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding voor elk component in de bibliotheek.

Veelgestelde vragen over TURN-server

Veelgestelde vragen over het draaien van een zelf-gehoste TURN-relay in Delphi en C++ Builder.

Plaats een TsgcTURNServer component, stel Port en Realm in, lever per-gebruiker wachtwoorden vanuit de OnSTUNRequestAuthorization-event, en zet dan Active := True. De server verwerkt vervolgens Allocate, CreatePermission, ChannelBind, Send, Refresh en Data voor elke RFC 8656-client, en relayt datagrams tussen het relayed transport address en de gebonden peer.
Het implementeert TURN volgens RFC 8656, valideert long-term credentials met MESSAGE-INTEGRITY en roteert nonces automatisch. Het verwijst ook naar RFC 6062 voor TURN-over-TCP-allocaties en RFC 8489 voor het onderliggende STUN-berichtformaat, en ondersteunt UDP-, TCP- en TLS-over-TCP-transporten.
Nee. TsgcTURNServer is een zelf-gehoste relay die je in je eigen Delphi- of C++ Builder-toepassing inbouwt, zodat je WebRTC- en ICE-deployments niet langer afhankelijk hoeven te zijn van TURN-providers van derden of een aparte coturn-installatie. Quota per allocatie (max. allocaties per gebruiker, bandbreedte en levensduur) begrenzen misbruik, waarbij OnQuotaExceeded afwijzingen rapporteert.
De TURN-server maakt deel uit van de sgcWebSockets Enterprise-editie en ondersteunt Delphi 7 tot en met de nieuwste Delphi-release en de bijbehorende C++ Builder-versies, op Windows, macOS, Linux, iOS en Android. Download de gratis proefversie om een TURN-relay in je eigen project op te zetten.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om je eigen TURN-server te draaien?

Download de gratis proefversie en zet een TURN-relay op in Delphi.