This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
mandaye/mandaye/filters/default.py

42 lines
1.5 KiB
Python

import re
class MandayeFilter(object):
""" Default Mandaye filter
This class allows to filter the request (cookies, headers and the message-body)
and the response (cookies, headers and message-body)
"""
def __init__(self, env, target):
""" env: wsgi environment
target: the reverse proxy self.target (urlparse object)
"""
self.env = env
self.target = target
def on_request(self, request):
referer = request.headers.getheader('referer')
if referer:
referer = referer.replace(self.env["HTTP_HOST"], self.target.hostname)
request.headers.addheader("Referer", referer)
return request
def on_response(self, response):
# Modify cookies
src_hostname = re.sub(":\d*$", "", self.env["HTTP_HOST"])
for cookie in response.cookies.values():
if cookie.has_key('domain'):
cookie['domain'] = cookie['domain'].replace(self.target.hostname, src_hostname)
# Modify headers
blacklist = ['transfer-encoding', 'content-length']
for key, value in response.headers.iteritems():
if key == 'location':
location = value[0].replace(self.target.hostname,
self.env["HTTP_HOST"])
response.headers.addheader(key, location)
for name in blacklist:
if response.headers.has_key(name):
del response.headers[name]
return response