Indys TIdHTTPProxyServer: Wie Filteranforderungen?
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!
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.