TsgcTURNServerEvents › OnTURNBeforeAllocate

OnTURNBeforeAllocate Zdarzenie

Wywoływane przed utworzeniem nowej Alokacji; należy sprawdzić przekazany adres IP/port i ustawić Reject, aby odrzucić żądanie ALLOCATE.

Składnia

property OnTURNBeforeAllocate: TsgcTURNBeforeAllocateEvent;
// TsgcTURNBeforeAllocateEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aIP: String; aPort: Word; var Reject: Boolean) of object

Wartość domyślna

Uwagi

Wywoływane podczas przetwarzania żądania ALLOCATE, po zarezerwowaniu gniazda przekaźnikowego, a przed dodaniem obiektu Allocation do wewnętrznej tabeli. aIP/aPort niosą adres transportowy przekaźnika, który serwer zamierza ogłosić w XOR-RELAYED-ADDRESS — IP pochodzi z TURNOptions.Allocation.RelayIP (lub Host gdy puste), a port z zakresu Allocation.MinPort–MaxPort. Zdarzenia należy używać do wymuszania limitów na poziomie aplikacji, blokowania określonych klientów lub portów równorzędnych lub audytowania żądań alokacji. Ustawienie Reject := True powoduje odmowę ALLOCATE; serwer zwalnia port przekaźnika i odpowiada błędem (486 Allocation Quota Reached). Pozostawienie Reject jako False pozwala na utworzenie alokacji — następne zdarzenie OnTURNCreateAllocation potwierdzi sukces. Wykonywane w wątku listenera, chyba że NotifyEvents przekieruje je inaczej.

Przykład

procedure TForm1.OnTURNBeforeAllocate(Sender: TObject;
  const aSocket: TsgcSocketConnection; const aIP: String; aPort: Word;
  var Reject: Boolean);
begin
  Memo1.Lines.Add(Format('Allocate %s:%d for %s', [aIP, aPort, aSocket.PeerIP]));
  Reject := BlackList.Contains(aSocket.PeerIP);
end;

Powrót do Zdarzeń