TsgcTURNServer이벤트 › OnTURNBeforeAllocate

OnTURNBeforeAllocate 이벤트

새 Allocation이 생성되기 전에 발생합니다. 중계된 IP/포트를 검사하고 ALLOCATE 요청을 거부하려면 Reject를 설정하십시오.

구문

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 범위에서 가져옵니다. 이 이벤트를 사용하여 애플리케이션 수준 할당량을 적용하거나, 특정 클라이언트 또는 피어 포트를 차단하거나, 할당 요청을 감사하십시오. ALLOCATE를 거부하려면 Reject := True로 설정하십시오. 서버는 릴레이 포트를 해제하고 오류 응답(486 Allocation Quota Reached)으로 답합니다. Allocation이 생성되도록 하려면 Reject를 False로 유지하십시오. 이후의 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;

이벤트로 돌아가기