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!

Était-ce utile?

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 ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top