Инди TIdHTTPProxyServer: Как фильтровать запросы? - PullRequest
3 голосов
/ 12 января 2011

Я использую TIdHTTPProxyServer для реализации простого HTTP-прокси, но теперь я хотел бы заблокировать некоторые соединения, если они соответствуют определенным URL-адресам. Какое событие и / или компонент лучше всего для этого? Indy документация не слишком объяснительная. (

Спасибо!

Ответы [ 2 ]

3 голосов
/ 12 января 2011

В качестве базового фильтра вы можете использовать обработчик события OnHTTPBeforeCommand (который срабатывает перед отправкой команды на HTTP-сервер).

Изучите свойства параметра Context, вы найдете полезные:

Context.Command
Context.OutboundClient.Host
Context.OutboundClient.Port
Context.Document
Context.Headers

Я никогда не пытался остановить PassTrough, но держу пари, что вы можете сделать это, просто вызвав исключение в этот момент, если определите, что есть совпадение с правилом блока.

1 голос
/ 12 января 2011

у компонента есть событие «OnConnect», дважды щелкните его и добавьте этот код:

if AContext.Connection.Socket.Binding.PeerIP = '127.0.0.1' then
  AContext.Connection.Disconnect;

замените 127.0.0.1 вашим фильтром, это просто «чрезвычайно простой пример», то же самое относитсяк другим серверам Indy, у которых есть событие «OnConnect».

...