Update the SSO Login for Serenity and Singularity server's player
This commit is contained in:
@@ -44,8 +44,12 @@ version = None
|
||||
language = None
|
||||
|
||||
API_CLIENT_ID = '095d8cd841ac40b581330919b49fe746'
|
||||
API_CLIENT_ID_SERENITY = 'bc90aa496a404724a93f41b4f4e97761'
|
||||
|
||||
ESI_CACHE = 'esi_cache'
|
||||
SSO_CALLBACK = 'https://pyfa-org.github.io/Pyfa/callback'
|
||||
SSO_CALLBACK_SERENITY='https://esi.evepc.163.com/ui/oauth2-redirect.html'
|
||||
SSO_LOGOFF_SERENITY='https://login.evepc.163.com/account/logoff'
|
||||
|
||||
LOGLEVEL_MAP = {
|
||||
"critical": CRITICAL,
|
||||
|
||||
@@ -48,9 +48,30 @@ class PFEsiPref(PreferenceView):
|
||||
|
||||
self.rbMode.Bind(wx.EVT_RADIOBOX, self.OnModeChange)
|
||||
|
||||
mainSizer.Add(rbSizer, 1, wx.ALL | wx.EXPAND, 0)
|
||||
mainSizer.Add(rbSizer, 0, wx.ALL | wx.EXPAND, 0)
|
||||
|
||||
esiSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
|
||||
self.esiServer = wx.StaticText(panel, wx.ID_ANY, _t("Default SSO Server:"), wx.DefaultPosition,wx.DefaultSize, 0)
|
||||
|
||||
self.esiServer.Wrap(-1)
|
||||
|
||||
esiSizer.Add(self.esiServer, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
|
||||
|
||||
self.esiServer.SetToolTip(wx.ToolTip(_t('The source you choose will be used on connection.')))
|
||||
|
||||
self.chESIserver = wx.Choice(panel, choices=list(self.settings.keys()))
|
||||
|
||||
self.chESIserver.SetStringSelection(self.settings.get("server"))
|
||||
|
||||
esiSizer.Add(self.chESIserver, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 10)
|
||||
|
||||
mainSizer.Add(esiSizer, 0, wx.TOP | wx.RIGHT , 10)
|
||||
|
||||
self.chESIserver.Bind(wx.EVT_CHOICE, self.OnServerChange)
|
||||
|
||||
panel.SetSizer(mainSizer)
|
||||
|
||||
panel.Layout()
|
||||
|
||||
def OnTimeoutChange(self, event):
|
||||
@@ -59,8 +80,12 @@ class PFEsiPref(PreferenceView):
|
||||
def OnModeChange(self, event):
|
||||
self.settings.set('loginMode', event.GetInt())
|
||||
|
||||
def OnServerChange(self, event):
|
||||
source = self.chESIserver.GetString(self.chESIserver.GetSelection())
|
||||
self.settings.set("server",source)
|
||||
|
||||
def getImage(self):
|
||||
return BitmapLoader.getBitmap("eve", "gui")
|
||||
|
||||
|
||||
PFEsiPref.register()
|
||||
PFEsiPref.register()
|
||||
@@ -26,6 +26,18 @@ class SsoLogin(wx.Dialog):
|
||||
|
||||
bSizer1.Add(self.ssoInfoCtrl, 1, wx.LEFT | wx.RIGHT | wx.EXPAND, 10)
|
||||
|
||||
from service.settings import EsiSettings
|
||||
import config
|
||||
import time
|
||||
self.Esisettings = EsiSettings.getInstance()
|
||||
if (self.Esisettings.get("server") == "Serenity"):
|
||||
bSizer4 = wx.BoxSizer(wx.VERTICAL)
|
||||
text = wx.StaticText(self, wx.ID_ANY, _t("Please copy the url when your authorization is completed"))
|
||||
bSizer4.Add(text, 0, wx.ALL | wx.EXPAND, 10)
|
||||
bSizer1.Add(bSizer4, 0, wx.ALL | wx.EXPAND, 10)
|
||||
webbrowser.open(config.SSO_LOGOFF_SERENITY)
|
||||
time.sleep(1)
|
||||
|
||||
bSizer3 = wx.BoxSizer(wx.VERTICAL)
|
||||
bSizer3.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.BOTTOM | wx.EXPAND, 10)
|
||||
|
||||
@@ -39,6 +51,7 @@ class SsoLogin(wx.Dialog):
|
||||
|
||||
self.sEsi = Esi.getInstance()
|
||||
uri = self.sEsi.get_login_uri(None)
|
||||
|
||||
webbrowser.open(uri)
|
||||
|
||||
|
||||
|
||||
@@ -108,7 +108,16 @@ class Esi(EsiAccess):
|
||||
else:
|
||||
with gui.ssoLogin.SsoLogin() as dlg:
|
||||
if dlg.ShowModal() == wx.ID_OK:
|
||||
message = json.loads(base64.b64decode(dlg.ssoInfoCtrl.Value.strip()))
|
||||
message = {}
|
||||
if (self.server_name == "Serenity"):
|
||||
import re
|
||||
s=re.search(r'(?<=code=)[a-zA-Z0-9\-_]*',dlg.ssoInfoCtrl.Value.strip())
|
||||
if s:
|
||||
message['code']=s.group()
|
||||
else:
|
||||
message['code']=None
|
||||
else:
|
||||
message = json.loads(base64.b64decode(dlg.ssoInfoCtrl.Value.strip()))
|
||||
self.handleLogin(message)
|
||||
|
||||
def stopServer(self):
|
||||
|
||||
@@ -65,7 +65,8 @@ class APIException(Exception):
|
||||
class EsiAccess:
|
||||
def __init__(self):
|
||||
self.settings = EsiSettings.getInstance()
|
||||
self.server_base: ApiBase = supported_servers[self.settings.get("server")]
|
||||
self.server_name=self.settings.get('server')
|
||||
self.server_base: ApiBase = supported_servers[self.server_name]
|
||||
|
||||
# session request stuff
|
||||
self._session = Session()
|
||||
@@ -116,7 +117,10 @@ class EsiAccess:
|
||||
|
||||
@property
|
||||
def client_id(self):
|
||||
return self.settings.get('clientID') or config.API_CLIENT_ID
|
||||
if (self.server_name == "Serenity"):
|
||||
return self.settings.get('clientID') or config.API_CLIENT_ID
|
||||
else:
|
||||
return self.settings.get('clientID') or config.API_CLIENT_ID_SERENITY
|
||||
|
||||
@staticmethod
|
||||
def update_token(char, tokenResponse):
|
||||
@@ -141,17 +145,25 @@ class EsiAccess:
|
||||
'redirect': redirect,
|
||||
'state': self.state
|
||||
}
|
||||
|
||||
args = {
|
||||
'response_type': 'code',
|
||||
'redirect_uri': config.SSO_CALLBACK,
|
||||
'client_id': self.client_id,
|
||||
'scope': ' '.join(scopes),
|
||||
'code_challenge': code_challenge,
|
||||
'code_challenge_method': 'S256',
|
||||
'state': base64.b64encode(bytes(json.dumps(state_arg), 'utf-8'))
|
||||
}
|
||||
|
||||
if(self.server_name=="Serenity"):
|
||||
args = {
|
||||
'response_type': 'code',
|
||||
'redirect_uri': config.SSO_CALLBACK_SERENITY,
|
||||
'client_id': self.client_id,
|
||||
'scope': ' '.join(scopes),
|
||||
'state': 'hilltech',
|
||||
'device_id': 'eims'
|
||||
}
|
||||
else:
|
||||
args = {
|
||||
'response_type': 'code',
|
||||
'redirect_uri': config.SSO_CALLBACK,
|
||||
'client_id': self.client_id,
|
||||
'scope': ' '.join(scopes),
|
||||
'code_challenge': code_challenge,
|
||||
'code_challenge_method': 'S256',
|
||||
'state': base64.b64encode(bytes(json.dumps(state_arg), 'utf-8'))
|
||||
}
|
||||
return '%s?%s' % (
|
||||
self.oauth_authorize,
|
||||
urlencode(args)
|
||||
|
||||
@@ -388,6 +388,9 @@ class EsiSettings:
|
||||
def set(self, type, value):
|
||||
self.settings[type] = value
|
||||
|
||||
def keys(self):
|
||||
return list({"Tranquility":"Tranquility","Singularity":"Singularity","Serenity":"Serenity"})
|
||||
|
||||
|
||||
class StatViewSettings:
|
||||
_instance = None
|
||||
|
||||
Reference in New Issue
Block a user