TsgcTURNServerEvents › OnTURNBeforeAllocate

OnTURNBeforeAllocate 事件

在创建新分配之前触发;检查中继 IP/端口并将 Reject 设为 True 以拒绝 ALLOCATE 请求。

语法

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

默认值

备注

在处理 ALLOCATE 请求期间,于中继套接字已预留但 Allocation 对象尚未添加到内部表之前触发。aIP/aPort 携带服务器即将在 XOR-RELAYED-ADDRESS 中公告的中继传输地址——IP 取自 TURNOptions.Allocation.RelayIP(若为空则取自 Host),端口取自 Allocation.MinPort–MaxPort 范围。使用此事件可强制执行应用层配额、阻止特定客户端或对端端口,或审计分配请求。将 Reject := True 可拒绝 ALLOCATE;服务器释放中继端口并以错误响应(486 Allocation Quota Reached)应答。将 Reject 保留为 False 则允许创建 Allocation,随后的 OnTURNCreateAllocation 事件确认成功。除非 NotifyEvents 将其重定向,否则在侦听器线程上运行。

示例

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;

返回事件