mirror of
https://opendev.org/x/pyghmi
synced 2025-07-25 21:51:12 +00:00
Amend refererer
XCC can struggle with link local addresses. Simplify by just using a static fake name so that XCC treats it like maybe some unknown /etc/hosts entry on the client. Change-Id: I1c6dc9d3eb86ae876c24441a924bcff4720b53ac
This commit is contained in:
@@ -965,22 +965,20 @@ class XCCClient(IMMClient):
|
||||
return None
|
||||
if not login:
|
||||
return wc
|
||||
srv = self.imm
|
||||
if ':' in srv:
|
||||
srv = '[{0}]'.format(self.imm)
|
||||
referer = 'https://{0}/'.format(srv)
|
||||
adata = json.dumps({'username': self.username,
|
||||
'password': self.password
|
||||
})
|
||||
headers = {'Connection': 'keep-alive',
|
||||
'Referer': referer,
|
||||
'Referer': 'https://xcc/',
|
||||
'Host': 'xcc',
|
||||
'Content-Type': 'application/json'}
|
||||
wc.request('POST', '/api/login', adata, headers)
|
||||
rsp = wc.getresponse()
|
||||
if rsp.status == 200:
|
||||
rspdata = json.loads(rsp.read())
|
||||
wc.set_header('Content-Type', 'application/json')
|
||||
wc.set_header('Referer', referer)
|
||||
wc.set_header('Referer', 'https://xcc/')
|
||||
wc.set_header('Host', 'xcc')
|
||||
wc.set_header('Authorization', 'Bearer ' + rspdata['access_token'])
|
||||
if '_csrf_token' in wc.cookies:
|
||||
wc.set_header('X-XSRF-TOKEN', wc.cookies['_csrf_token'])
|
||||
|
@@ -463,12 +463,13 @@ class OEMHandler(generic.OEMHandler):
|
||||
return None
|
||||
if not login:
|
||||
return wc
|
||||
referer = 'https://{0}/'.format(wc.thehost)
|
||||
referer = 'https://xcc/'
|
||||
adata = json.dumps({'username': self.username,
|
||||
'password': self.password
|
||||
})
|
||||
headers = {'Connection': 'keep-alive',
|
||||
'Referer': referer,
|
||||
'Host': 'xcc',
|
||||
'Content-Type': 'application/json'}
|
||||
wc.request('POST', '/api/login', adata, headers)
|
||||
rsp = wc.getresponse()
|
||||
@@ -477,6 +478,7 @@ class OEMHandler(generic.OEMHandler):
|
||||
wc.set_header('Content-Type', 'application/json')
|
||||
wc.set_header('Authorization', 'Bearer ' + rspdata['access_token'])
|
||||
wc.set_header('Referer', referer)
|
||||
wc.set_header('Host', 'xcc')
|
||||
if '_csrf_token' in wc.cookies:
|
||||
wc.set_header('X-XSRF-TOKEN', wc.cookies['_csrf_token'])
|
||||
return wc
|
||||
|
@@ -141,7 +141,7 @@ class SecureHTTPConnection(httplib.HTTPConnection, object):
|
||||
self.cert_reqs = ssl.CERT_NONE # use custom validation
|
||||
else:
|
||||
self.cert_reqs = ssl.CERT_REQUIRED # use standard validation
|
||||
if '[' not in host and '%' in host:
|
||||
if '[' not in host and '%' in host and 'Host'not in self.stdheaders:
|
||||
self.stdheaders['Host'] = '[' + host[:host.find('%')] + ']'
|
||||
|
||||
def dupe(self):
|
||||
|
Reference in New Issue
Block a user