TsgcTURNServer › Events › OnTURNBeforeAllocate
Se genera antes de que se cree una nueva Asignación; inspeccione la IP/puerto retransmitido y establezca Reject para rechazar la solicitud ALLOCATE.
property OnTURNBeforeAllocate: TsgcTURNBeforeAllocateEvent;
// TsgcTURNBeforeAllocateEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aIP: String; aPort: Word; var Reject: Boolean) of object
—
Se activa mientras se procesa una solicitud ALLOCATE, una vez reservado el socket de retransmisión pero antes de que el objeto Allocation se añada a la tabla interna. aIP/aPort transportan la dirección de transporte retransmitida que el servidor está a punto de publicitar en XOR-RELAYED-ADDRESS — la IP se toma de TURNOptions.Allocation.RelayIP (o Host cuando está vacío) y el puerto del rango Allocation.MinPort–MaxPort. Use el evento para aplicar cuotas a nivel de aplicación, bloquear clientes o puertos de pares específicos, o auditar las solicitudes de asignación. Establezca Reject := True para rechazar la ALLOCATE; el servidor libera el puerto de retransmisión y responde con una respuesta de error (486 Allocation Quota Reached). Deje Reject como False para que se cree la asignación — el evento posterior OnTURNCreateAllocation confirma el éxito. Se ejecuta en el hilo de escucha a menos que NotifyEvents lo redirija.
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;