TsgcTURNServerEventos › OnTURNBeforeAllocate

OnTURNBeforeAllocate Evento

Gerado antes de uma nova Allocation ser criada; inspecione o IP/porta retransmitidos e defina Reject para recusar a requisição ALLOCATE.

Sintaxe

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

Valor Padrão

Observações

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.

Exemplo

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;

Voltar para Eventos