TsgcTURNServer › Events › OnTURNBeforeAllocate
Wordt geactiveerd voordat een nieuwe Toewijzing wordt aangemaakt; inspecteer het gerelayde IP/poort en stel Reject in om het ALLOCATE-verzoek te weigeren.
property OnTURNBeforeAllocate: TsgcTURNBeforeAllocateEvent;
// TsgcTURNBeforeAllocateEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aIP: String; aPort: Word; var Reject: Boolean) of object
—
Wordt geactiveerd tijdens de verwerking van een ALLOCATE-verzoek, nadat de relay-socket is gereserveerd maar voordat het Allocation-object aan de interne tabel wordt toegevoegd. aIP/aPort bevatten het doorgegeven transportadres dat de server op het punt staat te adverteren in XOR-RELAYED-ADDRESS — het IP is afkomstig van TURNOptions.Allocation.RelayIP (of Host indien leeg) en de poort uit het bereik Allocation.MinPort–MaxPort. Gebruik de gebeurtenis om toepassingsniveau-quota af te dwingen, specifieke clients of peer-poorten te blokkeren, of allocatieverzoeken te controleren. Stel Reject := True in om de ALLOCATE te weigeren; de server geeft de relay-poort vrij en antwoordt met een foutrespons (486 Allocation Quota Reached). Laat Reject op False staan om de Allocation te laten aanmaken — de daaropvolgende OnTURNCreateAllocation-gebeurtenis bevestigt het succes. Wordt uitgevoerd op de listener-thread tenzij NotifyEvents dit omleidt.
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;