def __initDataServer(self, enableEncryption): self.__finiDataServer() if enableEncryption: self.__dataServer = EncryptingThreadedDataServer('SocialNetworkLoginEncryptingServer') else: self.__dataServer = ThreadedDataServer('SocialNetworkLoginEncryptingServer') self.__dataServer.dataReceived += self.__onDataServerReceivedData self.__dataServer.start_listening()
def __initDataServer(self, enableEncryption): self.__finiDataServer() if enableEncryption: self.__dataServer = EncryptingThreadedDataServer( 'SocialNetworkLoginEncryptingServer') else: self.__dataServer = ThreadedDataServer( 'SocialNetworkLoginEncryptingServer') self.__dataServer.dataReceived += self.__onDataServerReceivedData self.__dataServer.start_listening()
class WebBridge(object): connectionMgr = dependency.descriptor(IConnectionManager) def __init__(self, preferences): self.__dataServer = None self.__preferences = preferences self.__loginParams = None self.dataServerReceivedData = Event() self.connectionMgr.onConnected += self.__finiDataServer self.connectionMgr.onRejected += self.__finiDataServer self.connectionMgr.onDisconnected += self.__finiDataServer return def fini(self): self.__finiDataServer() self.connectionMgr.onConnected -= self.__finiDataServer self.connectionMgr.onRejected -= self.__finiDataServer self.connectionMgr.onDisconnected -= self.__finiDataServer if HAS_DEV_RESOURCES: from gui.development.mock.social_network_login import fini as finalizeWGNIServerMock finalizeWGNIServerMock() def initiateLogin(self, loginParams, isExternal, isRegistration): self.__loginParams = loginParams serverStatus = _STATUS.OK try: self.__initDataServer( GUI_SETTINGS.socialNetworkLogin['encryptToken'] and not isRegistration) except socket.error: self.__finiDataServer() serverStatus = _STATUS.HTTP_SERVER_ERROR if serverStatus == _STATUS.OK: baseUrl = self.__getWgniBaseURL(isRegistration) loginParams = self.__getWgniParams(isExternal, isRegistration) url = baseUrl + '?' + urlencode(loginParams) if isRegistration and GUI_SETTINGS.registrationProxyURL: url = GUI_SETTINGS.registrationProxyURL + '&lpurl=' + quote_plus( url) if not BigWorld.wg_openWebBrowser(url): serverStatus = _STATUS.WEB_BROWSER_ERROR return serverStatus == _STATUS.OK def __onDataServerReceivedData(self, token, spaID, socialNetwork): Waiting.show('login') BigWorld.callback(0.1, BigWorld.wg_bringWindowToForeground) self.__loginParams['token'] = token self.__loginParams['account_id'] = spaID from Manager import SOCIAL_NETWORKS self.__preferences[ 'login_type'] = socialNetwork or SOCIAL_NETWORKS.WGNI self.connectionMgr.initiateConnection( self.__loginParams, '', self.__preferences['server_name']) self.connectionMgr.setLastLogin(self.__loginParams['login']) def __getWgniParams(self, isExternal, isRegistration): params = { 'game': 'wot', 'game_port': self.__dataServer.server_port, 'remember': int(self.__preferences['remember_user']) } if isExternal: params['external'] = self.__preferences['login_type'] if GUI_SETTINGS.socialNetworkLogin[ 'encryptToken'] and not isRegistration: params['token_secret'] = base64.urlsafe_b64encode( self.__dataServer.tokenSecret) return params @staticmethod def __getWgniBaseURL(isRegistration=False): if isRegistration: baseUrl = GUI_SETTINGS.registrationURL.replace( '$LANGUAGE_CODE', getLanguageCode()) else: baseUrl = GUI_SETTINGS.socialNetworkLogin['initialLoginURL'] if HAS_DEV_RESOURCES: from gui.development.mock.social_network_login import getServer as getWGNIServerMock if getWGNIServerMock() is not None: baseUrl = 'http://127.0.0.1:{0}/'.format( getWGNIServerMock().server_port) return baseUrl def __initDataServer(self, enableEncryption): self.__finiDataServer() if enableEncryption: self.__dataServer = EncryptingThreadedDataServer( 'SocialNetworkLoginEncryptingServer') else: self.__dataServer = ThreadedDataServer( 'SocialNetworkLoginEncryptingServer') self.__dataServer.dataReceived += self.__onDataServerReceivedData self.__dataServer.start_listening() def __finiDataServer(self, *args, **kwargs): if self.__dataServer is not None: self.__dataServer.stop_listening() self.__dataServer.server_close() self.__dataServer.dataReceived -= self.__onDataServerReceivedData self.__dataServer = None return
class WebBridge(object): def __init__(self, preferences): self.__dataServer = None self.__preferences = preferences self.__loginParams = None self.dataServerReceivedData = Event() connectionManager.onConnected += self.__finiDataServer connectionManager.onRejected += self.__finiDataServer connectionManager.onDisconnected += self.__finiDataServer return def fini(self): self.__finiDataServer() connectionManager.onConnected -= self.__finiDataServer connectionManager.onRejected -= self.__finiDataServer connectionManager.onDisconnected -= self.__finiDataServer if constants.IS_DEVELOPMENT: from gui.development.mock.social_network_login import fini as finalizeWGNIServerMock finalizeWGNIServerMock() def initiateLogin(self, loginParams, isExternal, isRegistration): self.__loginParams = loginParams serverStatus = _STATUS.OK try: self.__initDataServer(GUI_SETTINGS.socialNetworkLogin['encryptToken'] and not isRegistration) except socket.error: self.__finiDataServer() serverStatus = _STATUS.HTTP_SERVER_ERROR if serverStatus == _STATUS.OK: baseUrl = self.__getWgniBaseURL(isRegistration) loginParams = self.__getWgniParams(isExternal, isRegistration) url = baseUrl + ('&' if isRegistration else '?') + urlencode(loginParams) if not BigWorld.wg_openWebBrowser(url): serverStatus = _STATUS.WEB_BROWSER_ERROR return serverStatus == _STATUS.OK def __onDataServerReceivedData(self, token, spaID): Waiting.show('login') BigWorld.callback(0.1, BigWorld.wg_bringWindowToForeground) self.__loginParams['token'] = token self.__loginParams['account_id'] = spaID connectionManager.initiateConnection(self.__loginParams, '', self.__preferences['server_name']) def __getWgniParams(self, isExternal, isRegistration): params = {'game': 'wot', 'game_port': self.__dataServer.server_port, 'remember': int(self.__preferences['remember_user'])} if isExternal: params['external'] = self.__preferences['login_type'] if GUI_SETTINGS.socialNetworkLogin['encryptToken'] and not isRegistration: params['token_secret'] = base64.b64encode(self.__dataServer.tokenSecret) return params @staticmethod def __getWgniBaseURL(isRegistration = False): if isRegistration: baseUrl = GUI_SETTINGS.registrationURL.replace('$LANGUAGE_CODE', getLanguageCode()) else: baseUrl = GUI_SETTINGS.socialNetworkLogin['initialLoginURL'] if constants.IS_DEVELOPMENT: from gui.development.mock.social_network_login import getServer as getWGNIServerMock if getWGNIServerMock() is not None: baseUrl = 'http://127.0.0.1:{0}/{1}'.format(getWGNIServerMock().server_port, '?dummy=1' if isRegistration else '') return baseUrl def __initDataServer(self, enableEncryption): self.__finiDataServer() if enableEncryption: self.__dataServer = EncryptingThreadedDataServer('SocialNetworkLoginEncryptingServer') else: self.__dataServer = ThreadedDataServer('SocialNetworkLoginEncryptingServer') self.__dataServer.dataReceived += self.__onDataServerReceivedData self.__dataServer.start_listening() def __finiDataServer(self, *args, **kwargs): if self.__dataServer is not None: self.__dataServer.stop_listening() self.__dataServer.server_close() self.__dataServer.dataReceived -= self.__onDataServerReceivedData self.__dataServer = None return