def __connect(self): self.__retryConnectionCallbackID = None if constants.IS_DEVELOPMENT: LOG_DEBUG( 'Calling BigWorld.connect with params: {0}, serverName: {1}, inactivityTimeout: {2}, publicKeyPath: {3}' .format(self.__connectionData.username, self.__connectionUrl, constants.CLIENT_INACTIVITY_TIMEOUT, self.__connectionData.publicKeyPath)) nextTick(lambda: BigWorld. connect(self.__connectionUrl, self.__connectionData, self. __serverResponseHandler))() if g_preDefinedHosts.predefined( self.__connectionUrl) or g_preDefinedHosts.roaming( self.__connectionUrl): self.__hostItem = g_preDefinedHosts.byUrl(self.__connectionUrl) else: for server in BigWorld.serverDiscovery.servers: if server.serverString == self.__connectionUrl: self.__hostItem = self.__hostItem._replace( name=server.ownerName, shortName=server.ownerName) break else: self.__hostItem = self.__hostItem._replace( name=self.__connectionUrl, shortName=self.__connectionUrl) return
def updateServerList(self): def _serverDottedHost(ip): return '%d.%d.%d.%d' % (ip >> 24 & 255, ip >> 16 & 255, ip >> 8 & 255, ip >> 0 & 255) def _serverNetName(details): name = _serverDottedHost(details.ip) if details.port: name += ':%d' % details.port return name def _serverNiceName(details): name = details.hostName if not name: name = _serverNetName(details) elif details.port: name += ':%d' % details.port if details.ownerName: name += ' (' + details.ownerName + ')' return name servers = [ (_serverNiceName(server), server.serverString) for server in BigWorld.serverDiscovery.servers ] baseServerList = g_preDefinedHosts.shortList() for friendlyName, hostName in servers: if not g_preDefinedHosts.predefined(hostName): baseServerList.append((hostName, friendlyName, HOST_AVAILABILITY.getDefault(), None)) self._setServerList(baseServerList) return
def updateServerList(self): def _serverDottedHost(ip): return '%d.%d.%d.%d' % (ip >> 24 & 255, ip >> 16 & 255, ip >> 8 & 255, ip >> 0 & 255) def _serverNetName(details): name = _serverDottedHost(details.ip) if details.port: name += ':%d' % details.port return name def _serverNiceName(details): name = details.hostName if not name: name = _serverNetName(details) elif details.port: name += ':%d' % details.port if details.ownerName: name += ' (' + details.ownerName + ')' return name servers = [(_serverNiceName(server), server.serverString) for server in BigWorld.serverDiscovery.servers] baseServerList = g_preDefinedHosts.shortList() for friendlyName, hostName in servers: if not g_preDefinedHosts.predefined(hostName): baseServerList.append( (hostName, friendlyName, g_preDefinedHosts.getDefaultCSISStatus(), None)) self._setServerList(baseServerList) return
def connect( self, url, login, password, publicKeyPath=None, nickName=None, token2="", isNeedSavingPwd=False, tokenLoginParams=None, ): self.disconnect() self.__isVersionsDiffered = False self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) basicLoginParams = {"login": login, "auth_method": AUTH_METHODS.BASIC} loginParams = tokenLoginParams if tokenLoginParams is not None else basicLoginParams loginParams["session"] = md5hex(getHardwareID()) loginParams["auth_realm"] = constants.AUTH_REALM loginParams["game"] = "wot" loginParams["temporary"] = str(int(not isNeedSavingPwd)) if nickName is not None: loginParams["nickname"] = nickName loginParams["auto_registration"] = "true" if constants.IS_IGR_ENABLED: loginParams["is_igr"] = "1" if token2: loginParams["token2"] = token2 loginParams["auth_method"] = AUTH_METHODS.TOKEN2 LOG_NOTE("User authentication method: {0}".format(loginParams["auth_method"])) clientContext = {"lang_id": getClientLanguage()} class LoginInfo: pass loginInfo = LoginInfo() loginInfo.username = json.dumps(loginParams).encode("utf8") loginInfo.password = password loginInfo.clientContext = json.dumps(clientContext) loginInfo.inactivityTimeout = constants.CLIENT_INACTIVITY_TIMEOUT if publicKeyPath is not None: loginInfo.publicKeyPath = publicKeyPath if login and constants.IS_DEVELOPMENT and login[0] == "@": try: loginInfo.username = login[1:] except IndexError: loginInfo.username = login BigWorld.connect(url, loginInfo, partial(self.connectionWatcher, nickName is not None)) self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) self.__loginName = login if g_preDefinedHosts.predefined(url) or g_preDefinedHosts.roaming(url): self.__host = g_preDefinedHosts.byUrl(url) else: for server in BigWorld.serverDiscovery.servers: if server.serverString == url: self.__host = self.__host._replace(name=server.ownerName) break return
def steamLogin(self): if LoginDispatcher.IS_FIRST_RUN and g_steamAccount.isValid: LoginDispatcher.IS_FIRST_RUN = False self.__loginDataLoader.loadUserConfig() host = self.__loginDataLoader.host if not g_preDefinedHosts.predefined(host): host = g_preDefinedHosts.first().url self.onLogin('', '', host)
def __serversFind(self, servers=None): list = g_preDefinedHosts.shortList() if servers is not None: for name, key in servers: if not g_preDefinedHosts.predefined(key): list.append((key, name)) self.onSetOptions(list, self.__loginDataLoader.host) return
def __getFullServersList(self): serversList = g_preDefinedHosts.shortList() servers = self.__foundedServers if servers is not None: for name, key in servers: if not g_preDefinedHosts.predefined(key): serversList.append((key, name, HOST_AVAILABILITY.getDefault(), None)) return serversList
def connect(self, url, login, password, publicKeyPath=None, nickName=None, token2='', isNeedSavingPwd=False, tokenLoginParams=None): self.disconnect() self.__isVersionsDiffered = False self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) basicLoginParams = {'login': login, 'auth_method': AUTH_METHODS.BASIC} loginParams = tokenLoginParams if tokenLoginParams is not None else basicLoginParams loginParams['session'] = md5hex(getHardwareID()) loginParams['auth_realm'] = constants.AUTH_REALM loginParams['game'] = 'wot' loginParams['temporary'] = str(int(not isNeedSavingPwd)) if nickName is not None: loginParams['nickname'] = nickName loginParams['auto_registration'] = 'true' if constants.IS_IGR_ENABLED: loginParams['is_igr'] = '1' if token2: loginParams['token2'] = token2 loginParams['auth_method'] = AUTH_METHODS.TOKEN2 LOG_NOTE('User authentication method: {0}'.format( loginParams['auth_method'])) clientContext = {'lang_id': getClientLanguage()} class LoginInfo: pass loginInfo = LoginInfo() loginInfo.username = json.dumps(loginParams).encode('utf8') loginInfo.password = password loginInfo.clientContext = json.dumps(clientContext) loginInfo.inactivityTimeout = constants.CLIENT_INACTIVITY_TIMEOUT if publicKeyPath is not None: loginInfo.publicKeyPath = publicKeyPath if login and constants.IS_DEVELOPMENT and login[0] == '@': try: loginInfo.username = login[1:] except IndexError: loginInfo.username = login BigWorld.connect(url, loginInfo, partial(self.connectionWatcher, nickName is not None)) self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) self.__loginName = login if g_preDefinedHosts.predefined(url) or g_preDefinedHosts.roaming(url): self.__host = g_preDefinedHosts.byUrl(url) else: for server in BigWorld.serverDiscovery.servers: if server.serverString == url: self.__host = self.__host._replace(name=server.ownerName) break
def __getFullServersList(self): serversList = g_preDefinedHosts.shortList() servers = self.__foundedServers if servers is not None: for name, key in servers: if not g_preDefinedHosts.predefined(key): serversList.append( (key, name, HOST_AVAILABILITY.getDefault(), None)) return serversList
def connect(self, url, login, password, publicKeyPath = None, nickName = None, token2 = '', isNeedSavingPwd = False): self.disconnect() LOG_DEBUG('url: %s; login: %s; pass: %s; name: %s; token: %s' % (url, login, password, nickName, token2)) self.__isVersionsDiffered = False if len(login) > 0 and url is not None: self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) authMethod = AUTH_METHODS.BASIC if constants.IS_VIETNAM: authMethod = AUTH_METHODS.EBANK dct = {'login': login, 'auth_method': authMethod, 'session': md5hex(getHardwareID())} if nickName is not None: dct['nickname'] = nickName dct['auto_registration'] = 'true' if constants.IS_IGR_ENABLED: dct['is_igr'] = '1' if token2: dct['token2'] = token2 dct['auth_method'] = AUTH_METHODS.TOKEN2 dct['auth_realm'] = constants.AUTH_REALM dct['game'] = 'wot' dct['temporary'] = str(int(not isNeedSavingPwd)) class LoginInfo: pass loginInfo = LoginInfo() loginInfo.username = json.dumps(dct).encode('utf8') loginInfo.password = password loginInfo.inactivityTimeout = constants.CLIENT_INACTIVITY_TIMEOUT if publicKeyPath is not None: loginInfo.publicKeyPath = publicKeyPath if constants.IS_DEVELOPMENT and login[0] == '@': try: loginInfo.username = login[1:] except Exception: loginInfo.username = login BigWorld.connect(url, loginInfo, partial(self.connectionWatcher, nickName is not None)) self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) self.__loginName = login if g_preDefinedHosts.predefined(url) or g_preDefinedHosts.roaming(url): self.__host = g_preDefinedHosts.byUrl(url) else: for server in BigWorld.serverDiscovery.servers: if server.serverString == url: self.__host = self.__host._replace(name=server.ownerName) break
def __connect(self): self.__retryConnectionCallbackID = None LOG_DEBUG('Calling BigWorld.connect with params: {0}, serverName: {1}, inactivityTimeout: {2}, publicKeyPath: {3}'.format(self.__connectionData.username, self.__connectionUrl, constants.CLIENT_INACTIVITY_TIMEOUT, self.__connectionData.publicKeyPath)) nextTick(lambda : BigWorld.connect(self.__connectionUrl, self.__connectionData, self.__serverResponseHandler))() if g_preDefinedHosts.predefined(self.__connectionUrl) or g_preDefinedHosts.roaming(self.__connectionUrl): self.__hostItem = g_preDefinedHosts.byUrl(self.__connectionUrl) else: for server in BigWorld.serverDiscovery.servers: if server.serverString == self.__connectionUrl: self.__hostItem = self.__hostItem._replace(name=server.ownerName) break return
def connect(self, url, login, password, publicKeyPath = None, nickName = None, token2 = '', isNeedSavingPwd = False, tokenLoginParams = None): self.disconnect() self.__isVersionsDiffered = False self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) basicLoginParams = {'login': login, 'auth_method': AUTH_METHODS.BASIC} loginParams = tokenLoginParams if tokenLoginParams is not None else basicLoginParams loginParams['session'] = md5hex(getHardwareID()) loginParams['auth_realm'] = constants.AUTH_REALM loginParams['game'] = 'wot' loginParams['temporary'] = str(int(not isNeedSavingPwd)) if nickName is not None: loginParams['nickname'] = nickName loginParams['auto_registration'] = 'true' if constants.IS_IGR_ENABLED: loginParams['is_igr'] = '1' if token2: loginParams['token2'] = token2 loginParams['auth_method'] = AUTH_METHODS.TOKEN2 LOG_NOTE('User authentication method: {0}'.format(loginParams['auth_method'])) class LoginInfo: pass loginInfo = LoginInfo() loginInfo.username = json.dumps(loginParams).encode('utf8') loginInfo.password = password loginInfo.inactivityTimeout = constants.CLIENT_INACTIVITY_TIMEOUT if publicKeyPath is not None: loginInfo.publicKeyPath = publicKeyPath if login and constants.IS_DEVELOPMENT and login[0] == '@': try: loginInfo.username = login[1:] except IndexError: loginInfo.username = login BigWorld.connect(url, loginInfo, partial(self.connectionWatcher, nickName is not None)) self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) self.__loginName = login if g_preDefinedHosts.predefined(url) or g_preDefinedHosts.roaming(url): self.__host = g_preDefinedHosts.byUrl(url) else: for server in BigWorld.serverDiscovery.servers: if server.serverString == url: self.__host = self.__host._replace(name=server.ownerName) break return
def connect(self, url, login, password, publicKeyPath=None, nickName=None, token2=''): self.disconnect() LOG_DEBUG('url: %s; login: %s; pass: %s; name: %s; token: %s' % (url, login, password, nickName, token2)) if len(login) > 0 and url is not None: self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) authMethod = AUTH_METHODS.BASIC if constants.IS_VIETNAM: authMethod = AUTH_METHODS.EBANK dct = { 'login': login, 'auth_method': authMethod, 'session': md5hex(getHardwareID()) } if nickName is not None: dct['nickname'] = nickName dct['auto_registration'] = 'true' if constants.IS_KOREA: dct['is_igr'] = '1' if token2: dct['token2'] = token2 dct['auth_method'] = AUTH_METHODS.TOKEN2 dct['auth_realm'] = constants.AUTH_REALM dct['game'] = 'wot' class LoginInfo: pass loginInfo = LoginInfo() loginInfo.username = json.dumps(dct).encode('utf8') loginInfo.password = password loginInfo.inactivityTimeout = constants.CLIENT_INACTIVITY_TIMEOUT if publicKeyPath is not None: loginInfo.publicKeyPath = publicKeyPath if constants.IS_DEVELOPMENT and login[0] == '@': try: loginInfo.username = login[1:] except Exception: loginInfo.username = login BigWorld.connect( url, loginInfo, partial(self.connectionWatcher, nickName is not None)) self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) self.__loginName = login if g_preDefinedHosts.predefined(url) or g_preDefinedHosts.roaming( url): self.__host = g_preDefinedHosts.byUrl(url) else: for server in BigWorld.serverDiscovery.servers: if server.serverString == url: self.__host = self.__host._replace( name=server.ownerName) break return
def connect(self, url, login, password, publicKeyPath=None, areaID=None, nickName=None, token2='', rememberPassword=False, authMethod=None, token1='', spaID=None): self.disconnect() LOG_DEBUG( 'url: %s; login: %s; pass: %s; name: %s; areaID: %s; authMethod: %s; token1: %s; token2: %s; spaID: %s' % (url, login, password, nickName, areaID, authMethod, token1, token2, spaID)) if url is not None: class LoginInfo: pass loginInfo = LoginInfo() dct = { 'login': '', 'auth_method': '', 'session': md5hex(getHardwareID()) } loginInfo.inactivityTimeout = CLIENT_INACTIVITY_TIMEOUT if publicKeyPath is not None: loginInfo.publicKeyPath = publicKeyPath if authMethod == AUTH_METHODS.TOKEN1: dct['temporary'] = '0' dct['account_id'] = spaID dct['ip'] = '127.0.0.1' dct['game'] = 'wowp' dct['requested_for'] = 'wowp' dct['token'] = token1 dct['auth_method'] = AUTH_METHODS.TOKEN1 loginInfo.username = json.dumps(dct).encode('utf8') loginInfo.password = '' elif len(login) > 0 or token2: self.__setConnectionStatus( CONNECTION_STATUS.connectionInProgress) if nickName is not None: dct['nickname'] = nickName dct['auto_registration'] = 'true' if token2: dct['login'] = '' dct['token2'] = token2 dct['auth_method'] = AUTH_METHODS.TOKEN2 else: dct['login'] = login dct['auth_method'] = AUTH_METHODS.EBANK if config_consts.IS_VIETNAM else AUTH_METHODS.BASIC if config_consts.IS_IGR_ENABLED: dct['is_igr'] = '1' dct['game'] = 'wowp' dct['temporary'] = str(int(not rememberPassword)) loginInfo.username = json.dumps(dct).encode('utf8') if not token2: loginInfo.password = password if len(login) > 0 and IS_DEVELOPMENT and login[0] == '@': try: loginInfo.username = login[1:] except Exception: loginInfo.username = login else: return BigWorld.connect( url, loginInfo, partial(self.connectionWatcher, nickName is not None)) self.__setConnectionStatus(CONNECTION_STATUS.connectionInProgress) self.__loginName = login self.__areaID = areaID if g_preDefinedHosts.predefined(url): host = g_preDefinedHosts.byUrl(url) self.__host = host else: for server in BigWorld.serverDiscovery.servers: if server.serverString == url: self.__host = self.__host._replace( name=server.ownerName) break return