TsgcTURNServerEvents › OnTURNBeforeAllocate

OnTURNBeforeAllocate Événement

Déclenché avant la création d'une nouvelle allocation ; inspectez l'IP/port relayé et définissez Reject pour refuser la requête ALLOCATE.

Syntaxe

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

Valeur par défaut

Remarques

Déclenché lors du traitement d'une requête ALLOCATE, après que le socket relais a été réservé mais avant que l'objet Allocation soit ajouté à la table interne. aIP/aPort portent l'adresse de transport relayée que le serveur est sur le point d'annoncer dans XOR-RELAYED-ADDRESS — l'IP est prise depuis TURNOptions.Allocation.RelayIP (ou Host si vide) et le port depuis la plage Allocation.MinPort–MaxPort. Utilisez l'événement pour appliquer des quotas au niveau de l'application, bloquer des clients ou des ports pairs spécifiques, ou auditer les requêtes d'allocation. Définissez Reject := True pour refuser l'ALLOCATE ; le serveur libère le port relais et répond avec une réponse d'erreur (486 Allocation Quota Reached). Laissez Reject à False pour permettre la création de l'Allocation — l'événement OnTURNCreateAllocation suivant confirme le succès. S'exécute sur le thread d'écoute sauf si NotifyEvents le redirige.

Exemple

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;

Retour aux événements