Ejemplo n.º 1
0
class Bridge(object):
    class __STATUS:
        OK = 0
        HTTP_SERVER_ERROR = 1
        WEB_BROWSER_ERROR = 2

    def __init__(self):
        self.__encryptToken = False
        self.__server = None
        self.__userName = None
        self.__token2 = None

    def init(self, serverReceivedDataCallback, encryptToken):
        self.__readToken2FromPreferences()
        self.__readUserFromPreferences()
        self.__encryptToken = encryptToken
        self.__serverReceivedDataCallback = serverReceivedDataCallback

    def fini(self):
        self.__token2 = None
        self.__userName = None
        if self.__server is not None:
            self.__server.stop()
            self.__server.server_close()
            self.__server = None

    @staticmethod
    def getLoginParams():
        return {"auth_method": AUTH_METHODS.TOKEN, "requested_for": "wot", "ip": "127.0.0.1"}

    def initiateLogin(self, socialNetworkName, rememberMe, isRegistration=False):
        serverStatus = self.__STATUS.OK
        try:
            if self.__server is not None:
                self.__server.stop()
                self.__server.server_close()
            self.__server = DataServer(
                "SocialNetworkLoginServer",
                self.__serverReceivedDataCallback,
                self.__encryptToken and not isRegistration,
            )
            self.__server.start()
        except socket.error:
            if self.__server is not None:
                self.__server.stop()
                self.__server = None
            serverStatus = self.__STATUS.HTTP_SERVER_ERROR

        if serverStatus == self.__STATUS.OK:
            baseUrl = self.__getInitialLoginBaseURL(constants.IS_DEVELOPMENT, isRegistration=isRegistration)
            loginParams = self.__getInitialLoginParams(socialNetworkName, rememberMe, isRegistration=isRegistration)
            url = baseUrl + ("&" if isRegistration else "?") + urlencode(loginParams)
            if not BigWorld.wg_openWebBrowser(url):
                serverStatus = self.__STATUS.WEB_BROWSER_ERROR
        return serverStatus == self.__STATUS.OK

    @staticmethod
    def getAvailableSocialNetworks():
        socialNetworks = []
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.VKONTAKTE]:
            socialNetworks.append(_SOCIAL_NETWORKS.VKONTAKTE)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.FACEBOOK]:
            socialNetworks.append(_SOCIAL_NETWORKS.FACEBOOK)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.GOOGLE]:
            socialNetworks.append(_SOCIAL_NETWORKS.GOOGLE)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.WGNI]:
            socialNetworks.append(_SOCIAL_NETWORKS.WGNI)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.YAHOO]:
            socialNetworks.append(_SOCIAL_NETWORKS.YAHOO)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.NAVER]:
            socialNetworks.append(_SOCIAL_NETWORKS.NAVER)
        return socialNetworks

    @staticmethod
    def getLogoutWarning(socialNetworkName):
        localizationString = "#menu:login/social/warning/SOCIAL_NETWORK_LOGOUT"
        formatter = {
            "userName": Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString("user"),
            "socialNetworkLink": makeHtmlString(
                "html_templates:socialNetworkLogin",
                "socialNetworkLink",
                {
                    "socialNetworkName": socialNetworkName,
                    "socialNetworkOfficialName": _ms("#tooltips:login/social/" + socialNetworkName),
                },
            ),
        }
        if socialNetworkName != _SOCIAL_NETWORKS.WGNI:
            localizationString += "_BOTH"
            formatter["wargamingNetLink"] = makeHtmlString(
                "html_templates:socialNetworkLogin",
                "socialNetworkLink",
                {
                    "socialNetworkName": _SOCIAL_NETWORKS.WGNI,
                    "socialNetworkOfficialName": _ms("#tooltips:login/social/" + _SOCIAL_NETWORKS.WGNI),
                },
            )
        return makeHtmlString(
            "html_templates:socialNetworkLogin",
            "logoutWarning",
            {"warningMessage": _ms(localizationString) % formatter},
        )

    @staticmethod
    def getTooltipHeader(socialNetworkName):
        if socialNetworkName == _SOCIAL_NETWORKS.WGNI:
            return _ms("#tooltips:login/bySocial/" + _SOCIAL_NETWORKS.WGNI + "/header")
        else:
            return _ms("#tooltips:login/bySocial/header")

    @staticmethod
    def getTooltipBody(socialNetworkName):
        if socialNetworkName == _SOCIAL_NETWORKS.WGNI:
            return _ms("#tooltips:login/bySocial/" + _SOCIAL_NETWORKS.WGNI + "/body")
        else:
            return _ms("#tooltips:login/bySocial/body") % {"social": _ms("#tooltips:login/social/" + socialNetworkName)}

    @staticmethod
    def getSocialNetworkURL(socialNetworkName):
        protocol = "http"
        if socialNetworkName != _SOCIAL_NETWORKS.NAVER:
            protocol += "s"
        return protocol + "://" + _SOCIAL_NETWORK_TO_DOMAIN_MAPPING[socialNetworkName]

    def setCredentials(self, userName, token2):
        self.__userName = userName
        self.__token2 = token2

    def makeToken2LoginParams(self, previousLoginParams):
        if self.__token2 is None:
            return
        previousLoginParams["auth_method"] = AUTH_METHODS.TOKEN2
        previousLoginParams["login"] = self.__userName
        previousLoginParams["token2"] = self.__token2
        if "token" in previousLoginParams:
            del previousLoginParams["token"]
        if "account_id" in previousLoginParams:
            del previousLoginParams["account_id"]
        if "ip" in previousLoginParams:
            del previousLoginParams["ip"]
        if "requested_for" in previousLoginParams:
            del previousLoginParams["requested_for"]

    def __getInitialLoginParams(self, socialNetworkName, rememberMe, isRegistration=False):
        params = {"game_port": self.__server.server_port, "remember": int(rememberMe)}
        if not isRegistration:
            params["game"] = "wot"
        if socialNetworkName != _SOCIAL_NETWORKS.WGNI:
            params["external"] = socialNetworkName
        if self.__encryptToken and not isRegistration:
            params["token_secret"] = base64.b64encode(self.__server.tokenSecret)
        return params

    @staticmethod
    def __getInitialLoginBaseURL(isDevelopmentMode, isRegistration=False):
        if isRegistration:
            baseUrl = GUI_SETTINGS.registrationURL.replace("$LANGUAGE_CODE", getLanguageCode())
        else:
            baseUrl = GUI_SETTINGS.socialNetworkLogin["initialLoginURL"]
        if isDevelopmentMode:
            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 __readToken2FromPreferences(self):
        token2FromPreferences = Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString("token2", "")
        if token2FromPreferences:
            self.__token2 = ":".join(token2FromPreferences.split(":")[1:])

    def __readUserFromPreferences(self):
        self.__userName = Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString("user", "UNKNOWN")
Ejemplo n.º 2
0
class Bridge(object):

    class __STATUS:
        OK = 0
        HTTP_SERVER_ERROR = 1
        WEB_BROWSER_ERROR = 2

    def __init__(self):
        self.__encryptToken = False
        self.__server = None
        self.__userName = None
        self.__token2 = None
        return

    def init(self, serverReceivedDataCallback, encryptToken):
        self.__readToken2FromPreferences()
        self.__readUserFromPreferences()
        self.__encryptToken = encryptToken
        self.__serverReceivedDataCallback = serverReceivedDataCallback

    def fini(self):
        self.__token2 = None
        self.__userName = None
        if self.__server is not None:
            self.__server.stop()
            self.__server.server_close()
            self.__server = None
        return

    @staticmethod
    def getLoginParams():
        return {'auth_method': AUTH_METHODS.TOKEN,
         'requested_for': 'wot',
         'ip': '127.0.0.1'}

    def initiateLogin(self, socialNetworkName, rememberMe, isRegistration = False):
        serverStatus = self.__STATUS.OK
        try:
            if self.__server is not None:
                self.__server.stop()
                self.__server.server_close()
            self.__server = DataServer('SocialNetworkLoginServer', self.__serverReceivedDataCallback, self.__encryptToken and not isRegistration)
            self.__server.start()
        except socket.error:
            if self.__server is not None:
                self.__server.stop()
                self.__server = None
            serverStatus = self.__STATUS.HTTP_SERVER_ERROR

        if serverStatus == self.__STATUS.OK:
            baseUrl = self.__getInitialLoginBaseURL(constants.IS_DEVELOPMENT, isRegistration=isRegistration)
            loginParams = self.__getInitialLoginParams(socialNetworkName, rememberMe, isRegistration=isRegistration)
            url = baseUrl + ('&' if isRegistration else '?') + urlencode(loginParams)
            if not BigWorld.wg_openWebBrowser(url):
                serverStatus = self.__STATUS.WEB_BROWSER_ERROR
        return serverStatus == self.__STATUS.OK

    @staticmethod
    def getAvailableSocialNetworks():
        socialNetworks = []
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.VKONTAKTE]:
            socialNetworks.append(_SOCIAL_NETWORKS.VKONTAKTE)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.FACEBOOK]:
            socialNetworks.append(_SOCIAL_NETWORKS.FACEBOOK)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.GOOGLE]:
            socialNetworks.append(_SOCIAL_NETWORKS.GOOGLE)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.WGNI]:
            socialNetworks.append(_SOCIAL_NETWORKS.WGNI)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.YAHOO]:
            socialNetworks.append(_SOCIAL_NETWORKS.YAHOO)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.NAVER]:
            socialNetworks.append(_SOCIAL_NETWORKS.NAVER)
        return socialNetworks

    @staticmethod
    def getLogoutWarning(socialNetworkName):
        localizationString = '#menu:login/social/warning/SOCIAL_NETWORK_LOGOUT'
        formatter = {'userName': Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('user'),
         'socialNetworkLink': makeHtmlString('html_templates:socialNetworkLogin', 'socialNetworkLink', {'socialNetworkName': socialNetworkName,
                               'socialNetworkOfficialName': _ms('#tooltips:login/social/' + socialNetworkName)})}
        if socialNetworkName != _SOCIAL_NETWORKS.WGNI:
            localizationString += '_BOTH'
            formatter['wargamingNetLink'] = makeHtmlString('html_templates:socialNetworkLogin', 'socialNetworkLink', {'socialNetworkName': _SOCIAL_NETWORKS.WGNI,
             'socialNetworkOfficialName': _ms('#tooltips:login/social/' + _SOCIAL_NETWORKS.WGNI)})
        return makeHtmlString('html_templates:socialNetworkLogin', 'logoutWarning', {'warningMessage': _ms(localizationString) % formatter})

    @staticmethod
    def getTooltipHeader(socialNetworkName):
        if socialNetworkName == _SOCIAL_NETWORKS.WGNI:
            return _ms('#tooltips:login/bySocial/' + _SOCIAL_NETWORKS.WGNI + '/header')
        else:
            return _ms('#tooltips:login/bySocial/header')

    @staticmethod
    def getTooltipBody(socialNetworkName):
        if socialNetworkName == _SOCIAL_NETWORKS.WGNI:
            return _ms('#tooltips:login/bySocial/' + _SOCIAL_NETWORKS.WGNI + '/body')
        else:
            return _ms('#tooltips:login/bySocial/body') % {'social': _ms('#tooltips:login/social/' + socialNetworkName)}

    @staticmethod
    def getSocialNetworkURL(socialNetworkName):
        protocol = 'http'
        if socialNetworkName != _SOCIAL_NETWORKS.NAVER:
            protocol += 's'
        return protocol + '://' + _SOCIAL_NETWORK_TO_DOMAIN_MAPPING[socialNetworkName]

    def setCredentials(self, userName, token2):
        self.__userName = userName
        self.__token2 = token2

    def makeToken2LoginParams(self, previousLoginParams):
        if self.__token2 is None:
            return
        else:
            previousLoginParams['auth_method'] = AUTH_METHODS.TOKEN2
            previousLoginParams['login'] = self.__userName
            previousLoginParams['token2'] = self.__token2
            if 'token' in previousLoginParams:
                del previousLoginParams['token']
            if 'account_id' in previousLoginParams:
                del previousLoginParams['account_id']
            if 'ip' in previousLoginParams:
                del previousLoginParams['ip']
            if 'requested_for' in previousLoginParams:
                del previousLoginParams['requested_for']
            return

    def __getInitialLoginParams(self, socialNetworkName, rememberMe, isRegistration = False):
        params = {'game_port': self.__server.server_port,
         'remember': int(rememberMe)}
        if not isRegistration:
            params['game'] = 'wot'
        if socialNetworkName != _SOCIAL_NETWORKS.WGNI:
            params['external'] = socialNetworkName
        if self.__encryptToken and not isRegistration:
            params['token_secret'] = base64.b64encode(self.__server.tokenSecret)
        return params

    @staticmethod
    def __getInitialLoginBaseURL(isDevelopmentMode, isRegistration = False):
        if isRegistration:
            baseUrl = GUI_SETTINGS.registrationURL.replace('$LANGUAGE_CODE', getLanguageCode())
        else:
            baseUrl = GUI_SETTINGS.socialNetworkLogin['initialLoginURL']
        if isDevelopmentMode:
            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 __readToken2FromPreferences(self):
        token2FromPreferences = Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('token2', '')
        if token2FromPreferences:
            self.__token2 = ':'.join(token2FromPreferences.split(':')[1:])

    def __readUserFromPreferences(self):
        self.__userName = Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('user', 'UNKNOWN')
Ejemplo n.º 3
0
class Bridge(object):

    def __init__(self):
        self.__encryptToken = False
        self.__server = None
        self.__userName = None
        self.__token2 = None
        return

    def init(self, serverReceivedDataCallback, encryptToken):
        self.__readToken2FromPreferences()
        self.__readUserFromPreferences()
        self.__encryptToken = encryptToken
        self.__server = DataServer('SocialNetworkLoginServer', serverReceivedDataCallback, self.__encryptToken)
        self.__server.start()

    def fini(self):
        if self.__server is None:
            return
        else:
            self.__server.stop()
            self.__server = None
            self.__token2 = None
            self.__userName = None
            return

    @staticmethod
    def getLoginParams():
        return {'auth_method': AUTH_METHODS.TOKEN,
         'requested_for': 'wot',
         'ip': '127.0.0.1'}

    def initializeLogin(self, socialNetworkName, rememberMe):
        baseUrl = self.__getInitialLoginBaseURL(constants.IS_DEVELOPMENT)
        params = self.__getInitialLoginParams(socialNetworkName, rememberMe)
        BigWorld.wg_openWebBrowser(baseUrl + '?' + urlencode(params))

    @staticmethod
    def getAvailableSocialNetworks():
        socialNetworks = []
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.VKONTAKTE]:
            socialNetworks.append(_SOCIAL_NETWORKS.VKONTAKTE)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.FACEBOOK]:
            socialNetworks.append(_SOCIAL_NETWORKS.FACEBOOK)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.GOOGLE]:
            socialNetworks.append(_SOCIAL_NETWORKS.GOOGLE)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.WGNI]:
            socialNetworks.append(_SOCIAL_NETWORKS.WGNI)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.YAHOO]:
            socialNetworks.append(_SOCIAL_NETWORKS.YAHOO)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.NAVER]:
            socialNetworks.append(_SOCIAL_NETWORKS.NAVER)
        return socialNetworks

    @staticmethod
    def getLogoutWarning(socialNetworkName, logoutBoth = True):
        localizationString = '#menu:login/social/warning/SOCIAL_NETWORK_LOGOUT'
        formatter = {'userName': Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('user'),
         'socialNetworkLink': makeHtmlString('html_templates:socialNetworkLogin', 'socialNetworkLink', {'socialNetworkName': socialNetworkName,
                               'socialNetworkOfficialName': _SOCIAL_NETWORK_TO_DOMAIN_MAPPING[socialNetworkName][0]})}
        if logoutBoth and socialNetworkName != _SOCIAL_NETWORKS.WGNI:
            localizationString += '_BOTH'
            formatter['wargamingNetLink'] = makeHtmlString('html_templates:socialNetworkLogin', 'socialNetworkLink', {'socialNetworkName': _SOCIAL_NETWORKS.WGNI,
             'socialNetworkOfficialName': _SOCIAL_NETWORK_TO_DOMAIN_MAPPING[_SOCIAL_NETWORKS.WGNI][0]})
        return makeHtmlString('html_templates:socialNetworkLogin', 'logoutWarning', {'warningMessage': i18n.makeString(localizationString) % formatter})

    @staticmethod
    def getSocialNetworkURL(socialNetworkName):
        protocol = 'http'
        if socialNetworkName != _SOCIAL_NETWORKS.NAVER:
            protocol += 's'
        return protocol + '://' + _SOCIAL_NETWORK_TO_DOMAIN_MAPPING[socialNetworkName][1]

    def setCredentials(self, userName, token2):
        self.__userName = userName
        self.__token2 = token2

    def makeToken2LoginParams(self, previousLoginParams):
        if self.__token2 is None:
            return
        else:
            previousLoginParams['auth_method'] = AUTH_METHODS.TOKEN2
            previousLoginParams['login'] = self.__userName
            previousLoginParams['token2'] = self.__token2
            if 'token' in previousLoginParams:
                del previousLoginParams['token']
            if 'account_id' in previousLoginParams:
                del previousLoginParams['account_id']
            if 'ip' in previousLoginParams:
                del previousLoginParams['ip']
            if 'requested_for' in previousLoginParams:
                del previousLoginParams['requested_for']
            return

    def __getInitialLoginParams(self, socialNetworkName, rememberMe):
        params = {'game': 'wot',
         'game_port': self.__server.server_port,
         'remember': int(rememberMe)}
        if socialNetworkName != _SOCIAL_NETWORKS.WGNI:
            params['external'] = socialNetworkName
        if self.__encryptToken:
            params['token_secret'] = base64.b64encode(self.__server.tokenSecret)
        return params

    @staticmethod
    def __getInitialLoginBaseURL(isDevelopmentMode):
        baseUrl = GUI_SETTINGS.socialNetworkLogin['initialLoginURL']
        if isDevelopmentMode:
            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 __readToken2FromPreferences(self):
        token2FromPreferences = Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('token2', '')
        if token2FromPreferences:
            self.__token2 = ':'.join(token2FromPreferences.split(':')[1:])

    def __readUserFromPreferences(self):
        self.__userName = Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('user', 'UNKNOWN')
Ejemplo n.º 4
0
class Bridge(object):

    class __STATUS:
        OK = 0
        HTTP_SERVER_ERROR = 1
        WEB_BROWSER_ERROR = 2

    def __init__(self):
        self.__encryptToken = False
        self.__server = None
        self.__userName = None
        self.__token2 = None

    def init(self, serverReceivedDataCallback, encryptToken):
        self.__readToken2FromPreferences()
        self.__readUserFromPreferences()
        self.__encryptToken = encryptToken
        self.__serverReceivedDataCallback = serverReceivedDataCallback

    def fini(self):
        self.__token2 = None
        self.__userName = None
        if self.__server is not None:
            self.__server.stop()
            self.__server.server_close()
            self.__server = None

    @staticmethod
    def getLoginParams():
        return {'auth_method': AUTH_METHODS.TOKEN,
         'requested_for': 'wot',
         'ip': '127.0.0.1'}

    def initiateLogin(self, socialNetworkName, rememberMe, isRegistration = False):
        serverStatus = self.__STATUS.OK
        try:
            if self.__server is not None:
                self.__server.stop()
                self.__server.server_close()
            self.__server = DataServer('SocialNetworkLoginServer', self.__serverReceivedDataCallback, self.__encryptToken and not isRegistration)
            self.__server.start()
        except socket.error:
            if self.__server is not None:
                self.__server.stop()
                self.__server = None
            serverStatus = self.__STATUS.HTTP_SERVER_ERROR

        if serverStatus == self.__STATUS.OK:
            baseUrl = self.__getInitialLoginBaseURL(constants.IS_DEVELOPMENT, isRegistration=isRegistration)
            loginParams = self.__getInitialLoginParams(socialNetworkName, rememberMe, isRegistration=isRegistration)
            url = baseUrl + ('&' if isRegistration else '?') + urlencode(loginParams)
            if not BigWorld.wg_openWebBrowser(url):
                serverStatus = self.__STATUS.WEB_BROWSER_ERROR
        return serverStatus == self.__STATUS.OK

    @staticmethod
    def getAvailableSocialNetworks():
        socialNetworks = []
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.VKONTAKTE]:
            socialNetworks.append(_SOCIAL_NETWORKS.VKONTAKTE)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.FACEBOOK]:
            socialNetworks.append(_SOCIAL_NETWORKS.FACEBOOK)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.GOOGLE]:
            socialNetworks.append(_SOCIAL_NETWORKS.GOOGLE)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.WGNI]:
            socialNetworks.append(_SOCIAL_NETWORKS.WGNI)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.YAHOO]:
            socialNetworks.append(_SOCIAL_NETWORKS.YAHOO)
        if GUI_SETTINGS.socialNetworkLogin[_SOCIAL_NETWORKS.NAVER]:
            socialNetworks.append(_SOCIAL_NETWORKS.NAVER)
        return socialNetworks

    @staticmethod
    def getLogoutWarning(socialNetworkName):
        localizationString = '#menu:login/social/warning/SOCIAL_NETWORK_LOGOUT'
        formatter = {'userName': Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('user'),
         'socialNetworkLink': makeHtmlString('html_templates:socialNetworkLogin', 'socialNetworkLink', {'socialNetworkName': socialNetworkName,
                               'socialNetworkOfficialName': _ms('#tooltips:login/social/' + socialNetworkName)})}
        if socialNetworkName != _SOCIAL_NETWORKS.WGNI:
            localizationString += '_BOTH'
            formatter['wargamingNetLink'] = makeHtmlString('html_templates:socialNetworkLogin', 'socialNetworkLink', {'socialNetworkName': _SOCIAL_NETWORKS.WGNI,
             'socialNetworkOfficialName': _ms('#tooltips:login/social/' + _SOCIAL_NETWORKS.WGNI)})
        return makeHtmlString('html_templates:socialNetworkLogin', 'logoutWarning', {'warningMessage': _ms(localizationString) % formatter})

    @staticmethod
    def getTooltipHeader(socialNetworkName):
        if socialNetworkName == _SOCIAL_NETWORKS.WGNI:
            return _ms('#tooltips:login/bySocial/' + _SOCIAL_NETWORKS.WGNI + '/header')
        else:
            return _ms('#tooltips:login/bySocial/header')

    @staticmethod
    def getTooltipBody(socialNetworkName):
        if socialNetworkName == _SOCIAL_NETWORKS.WGNI:
            return _ms('#tooltips:login/bySocial/' + _SOCIAL_NETWORKS.WGNI + '/body')
        else:
            return _ms('#tooltips:login/bySocial/body') % {'social': _ms('#tooltips:login/social/' + socialNetworkName)}

    @staticmethod
    def getSocialNetworkURL(socialNetworkName):
        protocol = 'http'
        if socialNetworkName != _SOCIAL_NETWORKS.NAVER:
            protocol += 's'
        return protocol + '://' + _SOCIAL_NETWORK_TO_DOMAIN_MAPPING[socialNetworkName]

    def setCredentials(self, userName, token2):
        self.__userName = userName
        self.__token2 = token2

    def makeToken2LoginParams(self, previousLoginParams):
        if self.__token2 is None:
            return
        previousLoginParams['auth_method'] = AUTH_METHODS.TOKEN2
        previousLoginParams['login'] = self.__userName
        previousLoginParams['token2'] = self.__token2
        if 'token' in previousLoginParams:
            del previousLoginParams['token']
        if 'account_id' in previousLoginParams:
            del previousLoginParams['account_id']
        if 'ip' in previousLoginParams:
            del previousLoginParams['ip']
        if 'requested_for' in previousLoginParams:
            del previousLoginParams['requested_for']

    def __getInitialLoginParams(self, socialNetworkName, rememberMe, isRegistration = False):
        params = {'game_port': self.__server.server_port,
         'remember': int(rememberMe)}
        if not isRegistration:
            params['game'] = 'wot'
        if socialNetworkName != _SOCIAL_NETWORKS.WGNI:
            params['external'] = socialNetworkName
        if self.__encryptToken and not isRegistration:
            params['token_secret'] = base64.b64encode(self.__server.tokenSecret)
        return params

    @staticmethod
    def __getInitialLoginBaseURL(isDevelopmentMode, isRegistration = False):
        if isRegistration:
            baseUrl = GUI_SETTINGS.registrationURL.replace('$LANGUAGE_CODE', getLanguageCode())
        else:
            baseUrl = GUI_SETTINGS.socialNetworkLogin['initialLoginURL']
        if isDevelopmentMode:
            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 __readToken2FromPreferences(self):
        token2FromPreferences = Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('token2', '')
        if token2FromPreferences:
            self.__token2 = ':'.join(token2FromPreferences.split(':')[1:])

    def __readUserFromPreferences(self):
        self.__userName = Settings.g_instance.userPrefs[Settings.KEY_LOGIN_INFO].readString('user', 'UNKNOWN')
Ejemplo n.º 5
0
class Bridge:
    def __init__(self):
        self.__server = None
        self.__authToken = None
        self.__loginDataAcquired = False
        self.__loginData = None
        self.__loginCallback = None
        self.__loginCallbackHandle = None
        return

    def __callback(self, rawToken, spaID, token):
        class Dummy:
            pass

        self.__loginData = Dummy()
        self.__loginData.rawToken = rawToken
        self.__loginData.spaID = spaID
        self.__loginData.token = token
        self.__loginDataAcquired = True

    def __checkDataReceived(self):
        if self.__loginCallback and self.__loginDataAcquired and self.__loginData:
            if self.__loginCallbackHandle:
                BigWorld.cancelCallback(self.__loginCallbackHandle)
                self.__loginCallbackHandle = None
            self.__loginCallback(self.__loginData.rawToken,
                                 self.__loginData.spaID,
                                 self.__loginData.token)
        else:
            self.__loginCallbackHandle = BigWorld.callback(
                0.1, self.__checkDataReceived)
        return

    def startLogin(self, loginUrl, socialNetworkName, remember, encryptToken,
                   callback):
        try:
            self.__loginCallback = callback
            if self.__loginCallback:
                self.__loginCallbackHandle = BigWorld.callback(
                    0.1, self.__checkDataReceived)
            else:
                return False
            self.__server = DataServer('SocialNetworkLoginServer',
                                       self.__callback, encryptToken)
            url_params = {
                'game':
                'wowp',
                'game_port':
                str(self.__server.server_port),
                'remember':
                '1' if remember else '0',
                'token_secret':
                base64.b64encode(self.__server.tokenSecret)
                if encryptToken else ''
            }
            if socialNetworkName != _SOCIAL_NETWORKS.WGNI:
                url_params['external'] = socialNetworkName
            self.__server.start()
            BigWorld.wg_openWebBrowser(loginUrl + '?' +
                                       urllib.urlencode(url_params))
        except Exception as e:
            return False

        return True

    def stopLogin(self):
        if self.__server is None:
            return
        else:
            if self.__loginCallbackHandle:
                BigWorld.cancelCallback(self.__loginCallbackHandle)
                self.__loginCallbackHandle = None
            self.__loginData = None
            self.__loginCallback = None
            self.__server.stop()
            self.__server = None
            return