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.
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.
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.
TsgcTURNServer
Windows, macOS, Linux, iOS, Android
Enterprise
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;
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.
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.
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.
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.
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.
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.
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.
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ı. | Aç | |
| Demo Projesi — Demos\35.P2P\03.TURN Çalışmaya hazır örnek proje. sgcWebSockets paketinin içinde gelir — denemeyi aşağıdan indirin. | Aç | |
| 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. | Aç | |
| Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz. | Aç |
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.
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.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.