[Twisted-web] mod_rewrite while persisting client ips
Seun Osewa
naijasms at gmail.com
Wed Oct 20 02:43:05 MDT 2004
I've been searching for a potential solution to this 'loss of client
ip' problem for a long time.
On Wed, 20 Oct 2004 10:34:17 +0300 (EEST), Miika Keskinen <weeti at usr.fi> wrote:
>
> Hi there.
>
> I'm writing to the list in case someone finds this useful, I include short
> ProxyIPResource-'hack' and corresponding rewriterule to set
> request.client.host correctly :)
>
> here it goes:
>
> --snip--
>
> from twisted.application import service, internet
>
> from nevow import rend, loaders, appserver, vhost, inevow
> from nevow import tags as T
>
> """
> Example apache configuration
>
> NameVirtualHost *
>
> <VirtualHost *>
> RewriteEngine on
> RewriteRule (.*)/ http://localhost:8080/proxyip/%{REMOTE_HOST}/vhost/http/test.com/$1 [P]
> ServerName test.com
> </VirtualHost>
>
> """
>
> class ProxyIPResource:
> __implements__ = inevow.IResource,
>
> def putChild(self, child, res):
> setattr(self, 'child_%s' % (child,), res)
>
> def locateChild(self, ctx, segments):
> if len(segments) < 1:
> return rend.NotFound
>
> elif "child_%s" % (segments[0],) in self.__dict__:
> return self.__dict__['child_%s' % (segments[0],)], segments[1:]
>
> else:
> request = inevow.IRequest(ctx)
> request.client.host = segments[0]
>
> prefixLen = len('/'+'/'.join(request.prepath)+'/'+'/'.join(segments[:1]))
> request.path = '/'+'/'.join(segments[1:])
> request.uri = request.uri[prefixLen:]
> request.prepath = request.prepath[2:]
> return self, segments[1:]
>
> class Simple(rend.Page):
> addSlash = True
> docFactory = loaders.stan(
> T.html[
> T.body[
> T.h1["hello"]
> ]
> ])
>
> application = service.Application("Simple")
>
> res = Simple()
>
> vResource = vhost.VHostMonsterResource()
> pResource = ProxyIPResource()
>
> res.putChild('proxyip', pResource)
> pResource.putChild('vhost', vResource)
>
> internet.TCPServer(8080,
> appserver.NevowSite(res)).setServiceParent(application)
>
> --snip--
>
> _______________________________________________
> Twisted-web mailing list
> Twisted-web at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
>
More information about the Twisted-web
mailing list