TsgcTURNServer › Eventos › OnTURNBeforeAllocate
Gerado antes de uma nova Allocation ser criada; inspecione o IP/porta retransmitidos e defina Reject para recusar a requisição ALLOCATE.
property OnTURNBeforeAllocate: TsgcTURNBeforeAllocateEvent;
// TsgcTURNBeforeAllocateEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aIP: String; aPort: Word; var Reject: Boolean) of object
—
Disparado durante o processamento de uma requisição ALLOCATE, após o socket de relay ter sido reservado, mas antes que o objeto Allocation seja adicionado à tabela interna. aIP/aPort carregam o endereço de transporte retransmitido que o servidor está prestes a anunciar em XOR-RELAYED-ADDRESS — o IP é obtido de TURNOptions.Allocation.RelayIP (ou Host quando vazio) e a porta a partir do intervalo Allocation.MinPort–MaxPort. Use o evento para impor cotas em nível de aplicação, bloquear clientes ou portas de peer específicos, ou auditar requisições de alocação. Defina Reject := True para recusar o ALLOCATE; o servidor libera a porta de relay e responde com uma resposta de erro (486 Allocation Quota Reached). Deixe Reject como False para permitir que a Allocation seja criada — o evento subsequente OnTURNCreateAllocation confirma o sucesso. Executa na thread do listener, a menos que NotifyEvents o redirecione.
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;