TsgcTURNServerEreignisse › OnTURNBeforeAllocate

OnTURNBeforeAllocate Ereignis

Wird ausgelöst, bevor eine neue Allocation erstellt wird; prüfen Sie die weitergeleitete IP/Port und setzen Sie Reject, um die ALLOCATE-Anfrage abzulehnen.

Syntax

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

Standardwert

Hinweise

Wird während der Verarbeitung einer ALLOCATE-Anfrage ausgelöst, nachdem der Relay-Socket reserviert wurde, aber bevor das Allocation-Objekt der internen Tabelle hinzugefügt wird. aIP/aPort tragen die weitergeleitete Transportadresse, die der Server in XOR-RELAYED-ADDRESS bekannt geben wird — die IP wird aus TURNOptions.Allocation.RelayIP (oder Host, wenn leer) entnommen und der Port aus dem Bereich Allocation.MinPort–MaxPort. Verwenden Sie das Ereignis, um Kontingente auf Anwendungsebene durchzusetzen, bestimmte Clients oder Peer-Ports zu blockieren oder Allokationsanfragen zu protokollieren. Setzen Sie Reject := True, um die ALLOCATE abzulehnen; der Server gibt den Relay-Port frei und antwortet mit einer Fehlerantwort (486 Allocation Quota Reached). Belassen Sie Reject auf False, damit die Allocation erstellt wird — das nachfolgende Ereignis OnTURNCreateAllocation bestätigt den Erfolg. Wird im Listener-Thread ausgeführt, sofern NotifyEvents es nicht umleitet.

Beispiel

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;

Zurück zu Ereignissen