diff --git a/service/esi.py b/service/esi.py index 37a0e5764..3f95999a6 100644 --- a/service/esi.py +++ b/service/esi.py @@ -108,7 +108,8 @@ class Esi(EsiAccess): else: with gui.ssoLogin.SsoLogin() as dlg: if dlg.ShowModal() == wx.ID_OK: - self.handleLogin({'SSOInfo': [dlg.ssoInfoCtrl.Value.strip()]}) + message = json.loads(base64.b64decode(dlg.ssoInfoCtrl.Value.strip())) + self.handleLogin(message) def stopServer(self): pyfalog.debug("Stopping Server") @@ -134,7 +135,7 @@ class Esi(EsiAccess): return 'http://localhost:{}'.format(port) def handleLogin(self, message): - auth_response, data = self.auth(message['code'][0]) + auth_response, data = self.auth(message['code']) currentCharacter = self.getSsoCharacter(data['name']) @@ -157,7 +158,7 @@ class Esi(EsiAccess): raise SSOError("Could not parse out querystring parameters.") try: - state_enc = message['state'][0] + state_enc = message['state'] state = json.loads(base64.b64decode(state_enc))['state'] except Exception: raise SSOError("There was a problem decoding state parameter.") diff --git a/service/esiAccess.py b/service/esiAccess.py index 9641a4151..ee3832b18 100644 --- a/service/esiAccess.py +++ b/service/esiAccess.py @@ -63,6 +63,7 @@ class APIException(Exception): class EsiAccess: def __init__(self): self.settings = EsiSettings.getInstance() + self.server_base: ApiBase = supported_servers[self.settings.get("server")] # session request stuff self._session = Session() @@ -95,8 +96,6 @@ class EsiAccess: jwks_call.raise_for_status() self.jwks = jwks_call.json() - self.server_base: ApiBase = supported_servers[self.settings.get("server")] - @property def sso_url(self): return 'https://%s/v2' % self.server_base.sso @@ -173,7 +172,7 @@ class EsiAccess: } res = self.token_call(values) - json_res = res.json(); + json_res = res.json() decoded_jwt = self.validate_eve_jwt(json_res['access_token']) return json_res, decoded_jwt @@ -187,7 +186,7 @@ class EsiAccess: } res = self.token_call(values) - json_res = res.json(); + json_res = res.json() self.update_token(ssoChar, json_res) return json_res diff --git a/service/server.py b/service/server.py index 4278f2e36..e1ac1ee4e 100644 --- a/service/server.py +++ b/service/server.py @@ -22,7 +22,7 @@ class AuthHandler(http.server.BaseHTTPRequestHandler): return parsed_path = urllib.parse.urlparse(self.path) - parts = urllib.parse.parse_qs(parsed_path.query) + parts = {k: ";".join(v) for k, v in urllib.parse.parse_qs(parsed_path.query).items()} is_success = False try: self.server.callback(parts) @@ -48,8 +48,6 @@ class AuthHandler(http.server.BaseHTTPRequestHandler): self.end_headers() # send error - - if is_success: self.server.stop()