Serwer STUN dla Delphi

Uruchom własny serwer STUN (RFC 8489) w Delphi. Odpowiadaj na żądania binding kanoniczną odpowiedzią XOR-MAPPED-ADDRESS — przydatne w sieciach prywatnych, wdrożeniach on-premise i bootstrappingu ICE.

TsgcSTUNServer

Typowany serwer STUN zgodny z RFC 8489 — przetwarza wiadomości Binding / Indication, odpowiada XOR-MAPPED-ADDRESS, opcjonalnie wymusza MESSAGE-INTEGRITY dla uwierzytelniania long-term.

Klasa komponentu

TsgcSTUNServer

Protokół

STUN (RFC 8489)

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Professional / Enterprise

Upuść, ustaw port, masz endpoint STUN

Ustaw Port (domyślnie 3478), Active := True — serwer odpowiada teraz na żądania Binding kanoniczną odpowiedzią XOR-MAPPED-ADDRESS zgodną z RFC 8489.

uses
  sgcP2P, sgcP2P_STUN_Classes;

// TFormSTUNServer zawiera FServer: TsgcSTUNServer oraz handler

procedure TFormSTUNServer.StartServer;
begin
  FServer := TsgcSTUNServer.Create(nil);
  FServer.Port := 3478;

  // opcjonalnie: poświadczenia long term
  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
  // zwróć hasło tego użytkownika, puste odrzuca żądanie
  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;

Co jest w środku

Samohostowany serwer STUN — idealny do wdrożeń WebRTC on-premise i testów w chmurze prywatnej.

Obsługa żądań Binding

Przychodzące żądania Binding otrzymują w odpowiedzi XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (legacy) i FINGERPRINT — zgodnie ze standardowym kształtem odpowiedzi RFC 8489.

Uwierzytelnianie long-term / short-term

Przełącz STUNOptions.Authentication.Enabled, aby wymagać MESSAGE-INTEGRITY, i ustaw realm w LongTermCredentials.Realm. OnSTUNRequestAuthorization udostępnia Ci nazwę użytkownika oraz realm, a Ty zwracasz pasujące hasło.

Atrybuty odpowiedzi pod Twoją kontrolą

STUNOptions.BindingAttributes włącza lub wyłącza starsze atrybuty z RFC 3489, czyli MAPPED-ADDRESS, OTHER-ADDRESS, RESPONSE-ORIGIN i SOURCE-ADDRESS, a AlternateServer odpowiada 300 Try Alternate ze wskazanym przez Ciebie serwerem.

IPv4 / IPv6

Powiąż z jedną z rodzin lub dual-stack przez IPVersion. Odpowiedź XOR-MAPPED-ADDRESS używa rodziny przychodzącego transportu.

Rotacja przeterminowanych nonce

LongTermCredentials.StaleNonce określa, jak długo nonce pozostaje ważny. Po jego wygaśnięciu serwer odpowiada 438 Stale Nonce z nowym nonce, czego wymaga RFC 8489 §9.2.

Diagnostyka

OnSTUNRequestSuccess i OnSTUNRequestError udostępniają Ci żądanie oraz odpowiedź, którą serwer zamierza wysłać, wraz z parametrem var Accept, który możesz wyzerować. LogFile zapisuje surową wymianę na dysk.

Specyfikacje i odniesienia

Wiarygodne źródła protokołu, który implementuje ten komponent.

Dokumentacja i dema

Przejdź bezpośrednio do dokumentacji komponentu, pobierz gotowy do uruchomienia projekt demonstracyjny i pobierz wersję próbną.

Pomoc online — TsgcSTUNServer Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demonstracyjny — Demos\35.P2P\02.STUN Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.

Serwer STUN, najczęściej zadawane pytania

Częste pytania o uruchamianie własnego serwera STUN w Delphi i C++ Builder.

Upuść komponent TsgcSTUNServer, ustaw Port (domyślnie 3478) i ustaw Active := True. Serwer odpowiada wtedy na przychodzące żądania Binding kanoniczną odpowiedzią XOR-MAPPED-ADDRESS. Opcjonalnie włącz Authentication i obsłuż OnSTUNRequestAuthorization, aby wymagać MESSAGE-INTEGRITY z poświadczeniami długoterminowymi.
Implementuje STUN zgodnie z RFC 8489, przetwarzając komunikaty Binding i Indication oraz odpowiadając XOR-MAPPED-ADDRESS, starszym MAPPED-ADDRESS i FINGERPRINT. Obsługuje IPv4 i IPv6, opcjonalne STUN-over-TLS i odwołuje się do RFC 5780 dla wykrywania zachowania NAT.
Nie. TsgcSTUNServer to własny serwer STUN, który osadzasz bezpośrednio we własnej aplikacji Delphi lub C++ Builder, więc nie musisz wdrażać i utrzymywać osobnej instancji coturn. Jest idealny do sieci prywatnych, lokalnych wdrożeń WebRTC i bootstrapowania ICE pod Twoją własną kontrolą.
Serwer STUN jest częścią edycji Enterprise sgcWebSockets i obsługuje Delphi 7 aż po najnowsze wydanie Delphi oraz odpowiadające im wersje C++ Builder, w systemach Windows, macOS, Linux, iOS i Android. Pobierz bezpłatną wersję próbną, aby postawić punkt końcowy STUN we własnym projekcie.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy, by uruchomić własny serwer STUN?

Pobierz bezpłatną wersję próbną i postaw endpoint STUN w Delphi.