Hello,

I've got a big chunk of time free and would like to scratch my own itch by 
implementing the PROXY protocol, as defined at this URL:
http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt

My thoughts are to initially implement version 1 of the protocol as part of the 
HTTP server component.  This will allow SSL frontends such as stunnel to pass 
through client IP information, a feature that seems to be often requested.

I'm completely new to the Varnish source; after having a little look today I 
assume that a VMOD will not be possible due to the integration required into 
the HTTP parser.

On first looks, I'm thinking of a detection hook in http1_detect(), although 
I'd have to figure out some way to indicate that it's the first http request 
handled on a new connection.  If a PROXY line is detected, the code would put 
the source/destination IP addresses and ports into new variables (maybe 
something like proxy.source_ip, proxy.dest_ip, proxy.source_port, 
proxy.dest_port) and leave it up to the user to build an X-Forwarded-For header 
in VCL should they wish (after checking that client.ip is trusted.)

Detecting the PROXY line should just be a single memcmp; I'm not sure whether 
the community would want this feature to be able to be manually enabled and 
disabled.

Is anyone else currently working on this?  Does this idea and general strategy 
seem sound?

Thanks for your help and suggestions.
Roger
_______________________________________________
varnish-dev mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev

Reply via email to