TIdHTTPProxyServer Indy: Comment les demandes de filtrage?
Question
J'utilise un TIdHTTPProxyServer pour mettre en œuvre simple proxy HTTP, mais je voudrais maintenant bloquer certaines connexions si elles correspondent à certaines URL. Quel événement et / ou d'un composant est le mieux pour y parvenir? la documentation Indy est pas trop explicative. : (
Merci!
La solution
En tant que filtre de base, vous pouvez utiliser le gestionnaire d'événements OnHTTPBeforeCommand (qui se déclenche avant de la commande est envoyée au serveur HTTP).
Vérifiez les propriétés des paramètres de contexte, vous trouverez utile:
Context.Command
Context.OutboundClient.Host
Context.OutboundClient.Port
Context.Document
Context.Headers
Je ne ai jamais essayé d'arrêter le passtrough à ce moment, mais je parie que vous pouvez le faire en tout lever une exception à ce moment-là si vous décidez il y a un match de règle de blocage.
Autres conseils
le composant a un événement "OnConnect", double-cliquez dessus et ajoutez ce code:
if AContext.Connection.Socket.Binding.PeerIP = '127.0.0.1' then
AContext.Connection.Disconnect;
remplacer 127.0.0.1 avec votre filtre, ceci est juste un « exemple extrêmement basique », même pour les autres serveurs Indy qui ont un événement « OnConnect ».