When OpenERP (at least 6.1+) is deployed behind a proxy, the dbfilter option won't work.
This is due to openerp/addons/web/controllers/main.py (lines 136+) doing:
def db_list(req):
dbs = []
proxy = req.session.proxy("db")
dbs = proxy.list()
h = req.httprequest.environ['HTTP_HOST'].split(':')[0]
d = h.split('.')[0]
r = req.config.dbfilter.replace('%h', h).replace('%d', d)
dbs = [i for i in dbs if re.match(r, i)]
return dbs
However, in proxy configs, it should user HTTP_X_FORWARDED_HOST as filter.
This can easily be done by checking whether that var is in the environ:
def db_list(req):
dbs = []
proxy = req.session.proxy("db")
dbs = proxy.list()
if 'HTTP_X_FORWARDED_HOST' in req.httprequest.environ:
h = 'HTTP_X_FORWARDED_HOST'
else:
h = 'HTTP_HOST'
h = req.httprequest.environ[h].split(':')[0]
d = h.split('.')[0]
r = req.config.dbfilter.replace('%h', h).replace('%d', d)
dbs = [i for i in dbs if re.match(r, i)]
return dbs
When OpenERP (at least 6.1+) is deployed behind a proxy, the dbfilter option won't work.
This is due to openerp/ addons/ web/controllers /main.py (lines 136+) doing:
def db_list(req): proxy(" db") .environ[ 'HTTP_HOST' ].split( ':')[0] dbfilter. replace( '%h', h).replace('%d', d)
dbs = []
proxy = req.session.
dbs = proxy.list()
h = req.httprequest
d = h.split('.')[0]
r = req.config.
dbs = [i for i in dbs if re.match(r, i)]
return dbs
However, in proxy configs, it should user HTTP_X_ FORWARDED_ HOST as filter.
This can easily be done by checking whether that var is in the environ:
def db_list(req): proxy(" db") FORWARDED_ HOST' in req.httprequest .environ: FORWARDED_ HOST' .environ[ h].split( ':')[0] dbfilter. replace( '%h', h).replace('%d', d)
dbs = []
proxy = req.session.
dbs = proxy.list()
if 'HTTP_X_
h = 'HTTP_X_
else:
h = 'HTTP_HOST'
h = req.httprequest
d = h.split('.')[0]
r = req.config.
dbs = [i for i in dbs if re.match(r, i)]
return dbs