Domanda

sto usando un TIdHTTPProxyServer per implementare un semplice proxy HTTP, ma mi piacerebbe ora per bloccare alcune connessioni se corrispondono determinati URL. Quale evento e / o il componente è meglio per realizzare questo? documentazione Indy non è troppo esplicativo. : (

Grazie!

È stato utile?

Soluzione

Come un filtro di base è possibile utilizzare il gestore di eventi OnHTTPBeforeCommand (che gli incendi prima che il comando viene inviato al server HTTP).

Controllare le proprietà dei parametri di contesto, troverai utili:

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

Non ho mai cercato di fermare l'PassTrough in questo momento, ma scommetto che si può fare semplicemente sollevando un'eccezione a questo punto se si determina c'è una corrispondenza regola di blocco.

Altri suggerimenti

il componente ha un evento "OnConnect", fare doppio clic su di esso e aggiungere questo codice:

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

sostituire 127.0.0.1 con il filtro, questo è solo un "esempio estremamente semplice", stessa cosa vale per altri server Indy che hanno un evento "OnConnect".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top