Frage

Ich verwende eine TIdHTTPProxyServer einen einfachen HTTP-Proxy zu implementieren, aber ich mag jetzt einige Verbindungen blockieren, wenn sie bestimmt URLs entsprechen. Welches Ereignis und / oder Komponente ist am besten, das zu erreichen? Indy-Dokumentation ist nicht zu explikative. : (

Danke!

War es hilfreich?

Lösung

Als Basisfilter können Sie den OnHTTPBeforeCommand Ereignishandler verwenden (das Feuer vor dem Befehl an den HTTP-Server gesendet wird).

Überprüfen Sie die Kontextparametereigenschaften, Sie nützlich finden:

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

Ich habe nie versucht, die Passtrough zu diesem Zeitpunkt zu stoppen, aber ich wette, dass Sie es an diesem Punkt nur um eine Ausnahme ausgelöst tun können, wenn Sie feststellen, es gibt eine Block Regel übereinstimmen.

Andere Tipps

Die Komponente hat eine „OnConnect“ Ereignis, doppelklicken Sie darauf, und fügen Sie diesen Code ein:

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

ersetzen 127.0.0.1 mit dem Filter, das ist nur ein „sehr einfaches Beispiel“, das gleiche gilt auch für anderen Indy-Server, die ein „OnConnect“ Ereignis haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top