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