Delphi TURN Sunucusu

Delphi ile kendi TURN (RFC 8656) sunucunuzu çalıştırın. Eşler arası bir yol kuramayan istemciler için, uzun vadeli kimlik bilgileri ve ayırma başına kotalarla aktarmalı taşıma adresleri ayırın.

TsgcTURNServer

Kendi barındırdığınız bir TURN sunucusu — Allocate / CreatePermission / ChannelBind / Send / Refresh / Data işler, ayırmaları ve ömürlerini yönetir, uzun süreli kimlik bilgilerini doğrular.

Bileşen sınıfı

TsgcTURNServer

Protokol

TURN (RFC 8656)

Platformlar

Windows, macOS, Linux, iOS, Android

Sürüm

Enterprise

Bırakın, realm ayarlayın, kimlik bilgilerini dağıtın

Port ve realm değerini TURNOptions.Authentication.LongTermCredentials üzerinde ayarlayın, OnSTUNRequestAuthorization aracılığıyla kullanıcı başına parolalar sağlayın, Active := True — sunucunuz artık herhangi bir RFC 8656 istemcisi için aktarmalar ayırır.

uses
  sgcP2P, sgcP2P_STUN_Classes;

// TFormTURNServer, FServer: TsgcTURNServer ve işleyiciyi tutar

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';

  // suistimali sınırlayın: kullanıcı başına ayırma ve azami ömür
  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
  // o kullanıcının parolasını döndürün, boş değer isteği reddeder
  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;

İçinde neler var

Kendi barındırdığınız bir aktarma — WebRTC ve ICE dağıtımlarınızın üçüncü taraf TURN sağlayıcılarına bağımlı olmasını ortadan kaldırır.

Allocate / Refresh / Free

REQUESTED-TRANSPORT içeren Allocate isteklerini karşılar, boş bir aktarma portu seçer ve ömrü izler. Refresh ayırmayı uzatır; süre dolduğunda sunucu ayırmayı kaldırır.

CreatePermission / ChannelBind

Ayırma başına eş izinlerini ve kanal bağlamalarını izler. RFC 8656 §9 uyarınca izin verilmemiş eşler için Send/Data çerçevelerini bırakır.

Send / Data / ChannelData

Hem 36 baytlık Send / Data zarfları hem de 4 baytlık ChannelData çerçeveleri desteklenir. Aktarma, datagramları aktarmalı taşıma adresi ile bağlı eş arasında iletir.

Uzun vadeli kimlik bilgileri

TURNOptions.Authentication.LongTermCredentials realm değerini taşır, OnSTUNRequestAuthorization ise kullanıcı adını ve o realm değerini size sunar, siz de parolayı döndürürsünüz. Sunucu MESSAGE-INTEGRITY değerini doğrular ve nonce değerlerini kendisi değiştirir.

Kotalar ve aktarma portları

TURNOptions.Allocation.MaxUserAllocations, bir kullanıcının kaç aktarma alacağını sınırlar; DefaultLifeTime ve MaxLifeTime her birinin ne kadar yaşayacağını sınırlar; MinPort / MaxPort / RelayIP ise aktarma aralığını sabitler. Sınırı aşan bir kullanıcı 486 Allocation Quota Reached yanıtı alır.

Her ayırmayı denetleyin

OnTURNBeforeAllocate, istekte bulunan adresi bir var Reject ile size verir; OnTURNBeforeRelayIndication ve OnTURNBeforeRelayChannelData aynısını aktarılan her datagram için yapar. OnTURNCreateAllocation ve OnTURNDeleteAllocation yaşamaya devam edenleri izler.

Spesifikasyonlar ve referanslar

Bu bileşenin uyguladığı protokol için yetkili kaynaklar.

Belgeler ve Demolar

Bileşen referansına doğrudan bağlanın, çalışmaya hazır demo projesini alın ve denemeyi indirin.

Çevrimiçi Yardım — TsgcTURNServer Bu bileşen için tam özellik, metot ve olay referansı.
Demo Projesi — Demos\35.P2P\03.TURN Çalışmaya hazır örnek proje. sgcWebSockets paketinin içinde gelir — denemeyi aşağıdan indirin.
Teknik Belge (PDF) Özellikler, hızlı başlangıç, Delphi ve C++ Builder için kod örnekleri ve birincil kaynak referansları — yalnızca bu bileşen.
Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz.

TURN Sunucusu Sıkça Sorulan Sorular

Delphi ve C++ Builder'da kendi barındırdığınız bir TURN aktarıcısı çalıştırma hakkında sık sorulan sorular.

Bir TsgcTURNServer bileşeni ekleyin, Port ve Realm ayarlayın, OnSTUNRequestAuthorization olayından kullanıcı başına parolaları sağlayın, ardından Active := True yapın. Sunucu ardından herhangi bir RFC 8656 istemcisi için Allocate, CreatePermission, ChannelBind, Send, Refresh ve Data işlemlerini yönetir ve aktarılan taşıma adresi ile bağlı eş arasında datagramları aktarır.
TURN'u RFC 8656'ya göre uygular; uzun vadeli kimlik bilgilerini MESSAGE-INTEGRITY ile doğrular ve nonce'leri otomatik olarak döndürür. Ayrıca TCP üzerinden TURN ayırmaları için RFC 6062'ye ve temel STUN mesaj biçimi için RFC 8489'a başvurur ve UDP, TCP ve TCP üzerinden TLS taşımalarını destekler.
Hayır. TsgcTURNServer, kendi Delphi veya C++ Builder uygulamanıza gömdüğünüz, kendi barındırdığınız bir aktarıcıdır, böylece WebRTC ve ICE dağıtımlarınız üçüncü taraf TURN sağlayıcılarına veya ayrı bir coturn kurulumuna bağımlı olmayı bırakabilir. Ayırma başına kotalar (kullanıcı başına maksimum ayırma, bant genişliği ve ömür) kötüye kullanımı sınırlar; OnQuotaExceeded reddetmeleri raporlar.
TURN sunucusu, sgcWebSockets Enterprise sürümünün bir parçasıdır ve Delphi 7'den en yeni Delphi sürümüne ve eşleşen C++ Builder sürümlerine kadar Windows, macOS, Linux, iOS ve Android üzerinde destek sağlar. Kendi projenizde bir TURN aktarıcısı kurmak için ücretsiz denemeyi indirin.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Kendi TURN Sunucunuzu Çalıştırmaya Hazır mısınız?

Ücretsiz denemeyi indirin ve Delphi ile bir TURN aktarması ayağa kaldırın.