Hi, Do I understand you right and you're proposing to have just an Apache module (not a hook on either output or input filter) and modify the request then?
I'd be very thankful if you can point me to any typical C code example doing that. I'm not very good at Python and never used to code with it. While I think that I understand what you're talking about, I'd be much comfortable with being able to sneak at the example ;) What I will also need is to rewrite cookies. Will I be able to do that this way as well? I decided to try on input filter just because I thought I may get in troubles rewriting the cookies. I'll also need to modify the proxy response, so it's a place for output filter, isn't it? Thanks, your reply was very quick. On Wed, Apr 2, 2008 at 9:39 PM, Graham Dumpleton <[EMAIL PROTECTED]> wrote: > On 03/04/2008, Olexandr Prokhorenko <[EMAIL PROTECTED]> wrote: > > Hi everyone, > > > > I am working on the input filter which is going to catch on input > requests, > > find the bucket with "Host: ", modify it and pass it through. I will > modify > > it to something that does not belong to my httpd server, so I need to > pass > > it through the proxy module (my guess ;). I can't use either the > static > > ProxyPass or ProxyReversePass, because the host will be modified > dynamically > > and it will depend on what is called and substitute it from the > database > > call. > > > > It wasn't a big deal to catch on the Host: (well, I may also need to > look > > for something like GET http://blablabla.com/, but this is not the > highest > > priority now). I have created a new HEAP bucket, put it instead of an > > original one, however, a) it looks to me that Apache makes a call and > gives > > an error saying file wasn't found, however the Web page displayed is > the > > correct one, like not being rewritten, and the httpd child crashes; and > b) I > > need to send it to proxy somehow and pass the call to it. > > > > I am not very good on concept, my book on Apache modules is still on > the > > way, but I'd very appreciate any hints on this. > > > > Thank you. I'd very thankful for cc: me as well. > > I think you may perhaps be going about this the wrong way. One can > cause a request to be proxied by doing something like the following. > This example uses mod_python, but could be done in C code or mod_perl > as well. > > import posixpath > > from mod_python import apache > > def fixuphandler(req): > > if req.proxyreq: > return apache.DECLINED > > normalised_uri = posixpath.normpath(req.uri) > > if normalised_uri: > if normalised_uri != '/' and req.uri[-1] == '/': > normalised_uri += '/' > > length = len(req.filename) > length -= len(req.hlist.directory) - 1 > length += len(req.path_info or '') > > baseurl = normalised_uri[:-length] > path = normalised_uri[len(baseurl):] > > # THIS IS THE IMPORTANT BIT WHICH SETS UP PROXY. > > req.proxyreq = apache.PROXYREQ_REVERSE > req.uri = 'http://www.dscpl.com.au' + path > req.filename = 'proxy:%s' % req.uri > req.handler = 'proxy-server' > > return apache.OK > > If you didn't want to proxy a particular request, just return DECLINED > when you know so. > > Graham > -- Alexander Prohorenko.