2
0
mirror of https://opendev.org/x/pyghmi synced 2025-03-10 06:07:28 +00:00

Set referer in IMM web

IMM web has now started rejecting http without referer.  Provide
a reasonable referer for that situation.

Change-Id: Id6d537252646122005a78a92c8a0122f28d379ae
This commit is contained in:
Jarrod Johnson 2017-08-11 14:34:44 -04:00
parent 1a60269df7
commit d5fddf022b
2 changed files with 12 additions and 6 deletions

View File

@ -55,6 +55,8 @@ class IMMClient(object):
def __init__(self, ipmicmd):
self.ipmicmd = weakref.proxy(ipmicmd)
self.imm = ipmicmd.bmc
self.adp_referer = 'https://{0}/designs/imm/index-console.php'.format(
self.imm)
self.username = ipmicmd.ipmi_session.userid
self.password = ipmicmd.ipmi_session.password
self._wc = None # The webclient shall be initiated on demand
@ -203,7 +205,8 @@ class IMMClient(object):
adapterdata = self.get_cached_data('lenovo_cached_adapters')
if not adapterdata:
if self.wc:
adapterdata = self.wc.grab_json_response(self.ADP_URL)
adapterdata = self.wc.grab_json_response(
self.ADP_URL, referer=self.adp_referer)
if adapterdata:
self.datacache['lenovo_cached_adapters'] = (
adapterdata, util._monotonic_time())
@ -293,7 +296,8 @@ class IMMClient(object):
adapterdata = self.get_cached_data('lenovo_cached_adapters')
if not adapterdata:
if self.wc:
adapterdata = self.wc.grab_json_response(self.ADP_URL)
adapterdata = self.wc.grab_json_response(
self.ADP_URL, referer=self.adp_referer)
if adapterdata:
self.datacache['lenovo_cached_adapters'] = (
adapterdata, util._monotonic_time())

View File

@ -112,11 +112,11 @@ class SecureHTTPConnection(httplib.HTTPConnection, object):
self.cookies[k] = c[k].value
return rsp
def grab_json_response(self, url, data=None):
def grab_json_response(self, url, data=None, referer=None):
if data:
self.request('POST', url, data)
self.request('POST', url, data, referer=referer)
else:
self.request('GET', url)
self.request('GET', url, referer=referer)
rsp = self.getresponse()
if rsp.status == 200:
return json.loads(rsp.read())
@ -152,7 +152,7 @@ class SecureHTTPConnection(httplib.HTTPConnection, object):
rsp.read())
return rsp.read()
def request(self, method, url, body=None, headers=None):
def request(self, method, url, body=None, headers=None, referer=None):
if headers is None:
headers = self.stdheaders.copy()
if method == 'GET' and 'Content-Type' in headers:
@ -162,5 +162,7 @@ class SecureHTTPConnection(httplib.HTTPConnection, object):
for ckey in self.cookies:
cookies.append('{0}={1}'.format(ckey, self.cookies[ckey]))
headers['Cookie'] = '; '.join(cookies)
if referer:
headers['Referer'] = referer
return super(SecureHTTPConnection, self).request(method, url, body,
headers)