TsgcTURNServer › Events › OnTURNBeforeAllocate
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.
property OnTURNBeforeAllocate: TsgcTURNBeforeAllocateEvent;
// TsgcTURNBeforeAllocateEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aIP: String; aPort: Word; var Reject: Boolean) of object
—
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.
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;