login: Remove account server cruft
This commit is contained in:
parent
80362a1d25
commit
acc1d7165b
13 changed files with 12 additions and 603 deletions
|
@ -25,9 +25,7 @@ from direct.distributed.PyDatagram import PyDatagram
|
|||
from direct.distributed.PyDatagramIterator import PyDatagramIterator
|
||||
from otp.avatar import Avatar
|
||||
from otp.avatar.DistributedPlayer import DistributedPlayer
|
||||
from otp.login import TTAccount
|
||||
from otp.login import LoginTTSpecificDevAccount
|
||||
from otp.login import AccountServerConstants
|
||||
from otp.login.CreateAccountScreen import CreateAccountScreen
|
||||
from otp.login import LoginScreen
|
||||
from otp.otpgui import OTPDialog
|
||||
|
@ -495,13 +493,6 @@ class OTPClientRepository(ClientRepositoryBase):
|
|||
self.gotoFirstScreen()
|
||||
|
||||
def gotoFirstScreen(self):
|
||||
try:
|
||||
self.accountServerConstants = AccountServerConstants.AccountServerConstants(self)
|
||||
except TTAccount.TTAccountException as e:
|
||||
self.notify.debug(str(e))
|
||||
self.loginFSM.request('failedToGetServerConstants', [e])
|
||||
return
|
||||
|
||||
self.startReaderPollTask()
|
||||
if not __astron__:
|
||||
self.startHeartbeat()
|
||||
|
@ -630,7 +621,7 @@ class OTPClientRepository(ClientRepositoryBase):
|
|||
def enterFailedToGetServerConstants(self, e):
|
||||
self.handler = self.handleMessageType
|
||||
messenger.send('connectionIssue')
|
||||
url = AccountServerConstants.AccountServerConstants.getServerURL()
|
||||
url = 'N/A'
|
||||
statusCode = 0
|
||||
if isinstance(e, HTTPUtil.ConnectionError):
|
||||
statusCode = e.statusCode
|
||||
|
@ -1903,13 +1894,6 @@ class OTPClientRepository(ClientRepositoryBase):
|
|||
render2d.prepareScene(gsg)
|
||||
base.graphicsEngine.renderFrame()
|
||||
|
||||
def refreshAccountServerDate(self, forceRefresh = 0):
|
||||
try:
|
||||
self.accountServerDate.grabDate(force=forceRefresh)
|
||||
except TTAccount.TTAccountException as e:
|
||||
self.notify.debug(str(e))
|
||||
return 1
|
||||
|
||||
def resetPeriodTimer(self, secondsRemaining):
|
||||
self.periodTimerExpired = 0
|
||||
self.periodTimerSecondsRemaining = secondsRemaining
|
||||
|
|
|
@ -4,9 +4,7 @@ import time
|
|||
import builtins
|
||||
from panda3d.core import *
|
||||
from direct.showbase import DConfig
|
||||
from direct.showbase.MessengerGlobal import *
|
||||
from direct.showbase.DirectObject import DirectObject
|
||||
from direct.showbase.EventManagerGlobal import *
|
||||
from direct.task.MiniTask import MiniTaskManager
|
||||
from direct.directnotify.DirectNotifyGlobal import *
|
||||
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
from pandac.PandaModules import *
|
||||
from .RemoteValueSet import *
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
from . import TTAccount
|
||||
from . import HTTPUtil
|
||||
|
||||
class AccountServerConstants(RemoteValueSet):
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory('AccountServerConstants')
|
||||
|
||||
def __init__(self, cr):
|
||||
self.expectedConstants = ['minNameLength',
|
||||
'minPwLength',
|
||||
'allowNewAccounts',
|
||||
'freeTrialPeriodInDays',
|
||||
'priceFirstMonth',
|
||||
'pricePerMonth',
|
||||
'customerServicePhoneNumber',
|
||||
'creditCardUpFront']
|
||||
self.defaults = {'minNameLength': '1',
|
||||
'minPwLength': '1',
|
||||
'allowNewAccounts': '1',
|
||||
'creditCardUpFront': '0',
|
||||
'priceFirstMonth': '9.95',
|
||||
'pricePerMonth': '9.95'}
|
||||
noquery = 1
|
||||
if cr.productName == 'DisneyOnline-US':
|
||||
if base.config.GetBool('tt-specific-login', 0):
|
||||
pass
|
||||
else:
|
||||
noquery = 0
|
||||
if cr.accountOldAuth or base.config.GetBool('default-server-constants', noquery):
|
||||
self.notify.debug('setting defaults, not using account server constants')
|
||||
self.dict = {}
|
||||
for constantName in self.expectedConstants:
|
||||
self.dict[constantName] = 'DEFAULT'
|
||||
|
||||
self.dict.update(self.defaults)
|
||||
return
|
||||
url = URLSpec(AccountServerConstants.getServer())
|
||||
url.setPath('/constants.php')
|
||||
self.notify.debug('grabbing account server constants from %s' % url.cStr())
|
||||
RemoteValueSet.__init__(self, url, cr.http, expectedHeader='ACCOUNT SERVER CONSTANTS', expectedFields=self.expectedConstants)
|
||||
|
||||
def getBool(self, name):
|
||||
return self.__getConstant(name, RemoteValueSet.getBool)
|
||||
|
||||
def getInt(self, name):
|
||||
return self.__getConstant(name, RemoteValueSet.getInt)
|
||||
|
||||
def getFloat(self, name):
|
||||
return self.__getConstant(name, RemoteValueSet.getFloat)
|
||||
|
||||
def getString(self, name):
|
||||
return self.__getConstant(name, RemoteValueSet.getString)
|
||||
|
||||
def __getConstant(self, constantName, accessor):
|
||||
if constantName not in self.expectedConstants:
|
||||
self.notify.warning("requested constant '%s' not in expected constant list; if it's a new constant, add it to the list" % constantName)
|
||||
return accessor(self, constantName)
|
||||
|
||||
@staticmethod
|
||||
def getServer():
|
||||
return TTAccount.getAccountServer().cStr()
|
||||
|
||||
@staticmethod
|
||||
def getServerURL():
|
||||
return TTAccount.getAccountServer()
|
|
@ -7,7 +7,6 @@ from direct.fsm import ClassicFSM
|
|||
from direct.fsm import State
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
from otp.otpbase import OTPLocalizer
|
||||
from . import TTAccount
|
||||
from . import GuiScreen
|
||||
from otp.otpbase import OTPGlobals
|
||||
from direct.distributed.MsgTypes import *
|
||||
|
@ -152,20 +151,11 @@ class CreateAccountScreen(StateData.StateData, GuiScreen.GuiScreen):
|
|||
self.cr.handler = self.handleWaitForLoginResponse
|
||||
self.cr.userName = self.userName
|
||||
self.cr.password = self.password
|
||||
try:
|
||||
data = {}
|
||||
referrer = launcher.getReferrerCode()
|
||||
if referrer is not None:
|
||||
data['referrer'] = referrer
|
||||
error = self.loginInterface.createAccount(self.userName, self.password, data)
|
||||
except TTAccount.TTAccountException as e:
|
||||
error = str(e)
|
||||
self.notify.info(error)
|
||||
self.dialog.setMessage(error + OTPLocalizer.CreateAccountScreenConnectionErrorSuffix)
|
||||
self.dialog.show()
|
||||
self.acceptOnce(self.dialogDoneEvent, self.__handleConnectionErrorAck)
|
||||
return
|
||||
|
||||
data = {}
|
||||
referrer = launcher.getReferrerCode()
|
||||
if referrer is not None:
|
||||
data['referrer'] = referrer
|
||||
error = self.loginInterface.createAccount(self.userName, self.password, data)
|
||||
if error:
|
||||
self.notify.info(error)
|
||||
self.dialog.setMessage(error)
|
||||
|
|
|
@ -14,7 +14,6 @@ from otp.otpgui import OTPDialog
|
|||
from otp.otpbase import OTPLocalizer
|
||||
from otp.otpbase import OTPGlobals
|
||||
from otp.uberdog.AccountDetailRecord import AccountDetailRecord, SubDetailRecord
|
||||
from . import TTAccount
|
||||
from . import GuiScreen
|
||||
|
||||
class LoginScreen(StateData.StateData, GuiScreen.GuiScreen):
|
||||
|
@ -199,12 +198,7 @@ class LoginScreen(StateData.StateData, GuiScreen.GuiScreen):
|
|||
self.cr.handler = self.handleWaitForLoginResponse
|
||||
self.cr.userName = self.userName
|
||||
self.cr.password = self.password
|
||||
try:
|
||||
error = self.loginInterface.authorize(self.userName, self.password)
|
||||
except TTAccount.TTAccountException as e:
|
||||
self.fsm.request('showConnectionProblemDialog', [str(e)])
|
||||
return
|
||||
|
||||
error = self.loginInterface.authorize(self.userName, self.password)
|
||||
if error:
|
||||
self.notify.info(error)
|
||||
freeTimeExpired = self.loginInterface.getErrorCode() == 10
|
||||
|
|
|
@ -2,16 +2,13 @@ from pandac.PandaModules import *
|
|||
from direct.distributed.MsgTypes import *
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
from . import LoginBase
|
||||
from . import TTAccount
|
||||
from .TTAccount import TTAccountException
|
||||
from direct.distributed.PyDatagram import PyDatagram
|
||||
|
||||
class LoginTTAccount(LoginBase.LoginBase, TTAccount.TTAccount):
|
||||
class LoginTTAccount(LoginBase.LoginBase):
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory('LoginTTAcct')
|
||||
|
||||
def __init__(self, cr):
|
||||
LoginBase.LoginBase.__init__(self, cr)
|
||||
TTAccount.TTAccount.__init__(self, cr)
|
||||
self.useTTSpecificLogin = base.config.GetBool('tt-specific-login', 0)
|
||||
self.notify.info('self.useTTSpecificLogin =%s' % self.useTTSpecificLogin)
|
||||
|
||||
|
@ -59,53 +56,13 @@ class LoginTTAccount(LoginBase.LoginBase, TTAccount.TTAccount):
|
|||
datagram.addInt32(CLIENT_LOGIN_2_PLAY_TOKEN)
|
||||
|
||||
def getErrorCode(self):
|
||||
return self.response.getInt('errorCode', 0)
|
||||
return 0
|
||||
|
||||
def needToSetParentPassword(self):
|
||||
return self.response.getBool('secretsPasswordNotSet', 0)
|
||||
return 0
|
||||
|
||||
def authenticateParentPassword(self, loginName, password, parentPassword):
|
||||
if base.cr.withParentAccount:
|
||||
self.notify.error('authenticateParentPassword called, but with parentAccount')
|
||||
try:
|
||||
errorMsg = self.talk('authenticateParentUsernameAndPassword', data=self.makeLoginDict(loginName, parentPassword))
|
||||
if not errorMsg:
|
||||
return (1, None)
|
||||
if self.response.getInt('errorCode') in (5, 72):
|
||||
return (0, None)
|
||||
return (0, errorMsg)
|
||||
except TTAccountException as e:
|
||||
return (0, str(e))
|
||||
|
||||
elif self.useTTSpecificLogin:
|
||||
try:
|
||||
errorMsg = self.talk('authenticateParentPasswordNewStyle', data=self.makeLoginDict(loginName, parentPassword))
|
||||
if not errorMsg:
|
||||
return (1, None)
|
||||
if self.response.getInt('errorCode') in (5, 72):
|
||||
return (0, None)
|
||||
return (0, errorMsg)
|
||||
except TTAccountException as e:
|
||||
return (0, str(e))
|
||||
|
||||
else:
|
||||
return TTAccount.TTAccount.authenticateParentPassword(self, loginName, password, parentPassword)
|
||||
return None
|
||||
return True, None
|
||||
|
||||
def authenticateDelete(self, loginName, password):
|
||||
if self.useTTSpecificLogin:
|
||||
try:
|
||||
errorMsg = self.talk('authenticateDeleteNewStyle', data=self.makeLoginDict(loginName, password))
|
||||
if not errorMsg:
|
||||
return (1, None)
|
||||
if self.response.getInt('errorCode') in (5, 72):
|
||||
return (0, None)
|
||||
return (0, errorMsg)
|
||||
except TTAccountException as e:
|
||||
return (0, str(e))
|
||||
|
||||
else:
|
||||
self.notify.info('using old style authenticate delete')
|
||||
result = TTAccount.TTAccount.authenticateDelete(self, loginName, password)
|
||||
return result
|
||||
return None
|
||||
return True, None
|
||||
|
|
|
@ -3,7 +3,6 @@ from direct.distributed.MsgTypes import *
|
|||
from direct.directnotify import DirectNotifyGlobal
|
||||
from . import LoginTTAccount
|
||||
from direct.distributed.PyDatagram import PyDatagram
|
||||
from .TTAccount import TTAccountException
|
||||
|
||||
class LoginTTSpecificDevAccount(LoginTTAccount.LoginTTAccount):
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory('LoginTTSpecificDevAccount')
|
||||
|
|
|
@ -1,71 +0,0 @@
|
|||
from direct.directnotify import DirectNotifyGlobal
|
||||
from . import TTAccount
|
||||
from . import HTTPUtil
|
||||
|
||||
class RemoteValueSet:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory('RemoteValueSet')
|
||||
|
||||
def __init__(self, url, http, body = '', expectedHeader = None, expectedFields = [], onUnexpectedResponse = None):
|
||||
if onUnexpectedResponse is None:
|
||||
onUnexpectedResponse = self.__onUnexpectedResponse
|
||||
response = HTTPUtil.getHTTPResponse(url, http, body)
|
||||
if expectedHeader is not None:
|
||||
if response[0] != expectedHeader:
|
||||
errMsg = 'unexpected response: %s' % response
|
||||
self.notify.warning(errMsg)
|
||||
onUnexpectedResponse(errMsg)
|
||||
return
|
||||
response = response[1:]
|
||||
self.dict = {}
|
||||
for line in response:
|
||||
if not len(line):
|
||||
continue
|
||||
try:
|
||||
name, value = line.split('=', 1)
|
||||
except ValueError as e:
|
||||
errMsg = 'unexpected response: %s' % response
|
||||
self.notify.warning(errMsg)
|
||||
onUnexpectedResponse(errMsg)
|
||||
return
|
||||
|
||||
if len(expectedFields):
|
||||
if name not in expectedFields:
|
||||
self.notify.warning("received field '%s' that is not in expected field list" % name)
|
||||
self.dict[name] = value
|
||||
|
||||
for name in expectedFields:
|
||||
if name not in self.dict:
|
||||
errMsg = "missing expected field '%s'" % name
|
||||
self.notify.warning(errMsg)
|
||||
onUnexpectedResponse(errMsg)
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
def __repr__(self):
|
||||
return 'RemoteValueSet:%s' % str(self.dict)
|
||||
|
||||
def hasKey(self, key):
|
||||
return key in self.dict
|
||||
|
||||
def getBool(self, name, default = None):
|
||||
return self.__getValue(name, lambda x: int(x) != 0, default)
|
||||
|
||||
def getInt(self, name, default = None):
|
||||
return self.__getValue(name, int, default)
|
||||
|
||||
def getFloat(self, name, default = None):
|
||||
return self.__getValue(name, float, default)
|
||||
|
||||
def getString(self, name, default = None):
|
||||
return self.__getValue(name, str, default)
|
||||
|
||||
def __getValue(self, name, convOp, default):
|
||||
if default is None:
|
||||
return convOp(self.dict[name])
|
||||
else:
|
||||
return convOp(self.dict.get(name, default))
|
||||
return
|
||||
|
||||
def __onUnexpectedResponse(self, errStr):
|
||||
raise HTTPUtil.UnexpectedResponse(errStr)
|
|
@ -1,280 +0,0 @@
|
|||
from pandac.PandaModules import *
|
||||
from pandac.PandaModules import *
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
from direct.showbase import PythonUtil
|
||||
from otp.otpbase import OTPLocalizer
|
||||
from . import HTTPUtil
|
||||
from . import RemoteValueSet
|
||||
import copy
|
||||
accountServer = ''
|
||||
accountServer = launcher.getAccountServer()
|
||||
print('TTAccount: accountServer from launcher: ', accountServer)
|
||||
configAccountServer = base.config.GetString('account-server', '')
|
||||
if configAccountServer:
|
||||
accountServer = configAccountServer
|
||||
print('TTAccount: overriding accountServer from config: ', accountServer)
|
||||
if not accountServer:
|
||||
accountServer = 'https://toontown.go.com'
|
||||
print('TTAccount: default accountServer: ', accountServer)
|
||||
accountServer = URLSpec(accountServer, 1)
|
||||
|
||||
def getAccountServer():
|
||||
return accountServer
|
||||
|
||||
|
||||
TTAccountException = HTTPUtil.HTTPUtilException
|
||||
|
||||
class TTAccount:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory('TTAccount')
|
||||
|
||||
def __init__(self, cr):
|
||||
self.cr = cr
|
||||
self.response = None
|
||||
return
|
||||
|
||||
def createAccount(self, loginName, password, data):
|
||||
return self.talk('create', data=self.__makeLoginDict(loginName, password, data))
|
||||
|
||||
def authorize(self, loginName, password):
|
||||
return self.talk('play', data=self.__makeLoginDict(loginName, password))
|
||||
|
||||
def createBilling(self, loginName, password, data):
|
||||
return self.talk('purchase', data=self.__makeLoginDict(loginName, password, data))
|
||||
|
||||
def setParentPassword(self, loginName, password, parentPassword):
|
||||
return self.talk('setParentPassword', data=self.__makeLoginDict(loginName, password, {'parentPassword': parentPassword}))
|
||||
|
||||
def supportsParentPassword(self):
|
||||
return 1
|
||||
|
||||
def authenticateParentPassword(self, loginName, password, parentPassword):
|
||||
try:
|
||||
errorMsg = self.talk('authenticateParentPassword', data=self.__makeLoginDict(loginName, parentPassword))
|
||||
if not errorMsg:
|
||||
return (1, None)
|
||||
if self.response.getInt('errorCode') in (5, 72):
|
||||
return (0, None)
|
||||
return (0, errorMsg)
|
||||
except TTAccountException as e:
|
||||
return (0, str(e))
|
||||
|
||||
return None
|
||||
|
||||
def supportsAuthenticateDelete(self):
|
||||
return 1
|
||||
|
||||
def authenticateDelete(self, loginName, password):
|
||||
try:
|
||||
errorMsg = self.talk('authenticateDelete', data=self.__makeLoginDict(loginName, password))
|
||||
if not errorMsg:
|
||||
return (1, None)
|
||||
if self.response.getInt('errorCode') in (5, 72):
|
||||
return (0, None)
|
||||
return (0, errorMsg)
|
||||
except TTAccountException as e:
|
||||
return (0, str(e))
|
||||
|
||||
return None
|
||||
|
||||
def enableSecretFriends(self, loginName, password, parentPassword, enable = 1):
|
||||
try:
|
||||
errorMsg = self.talk('setSecretChat', data=self.__makeLoginDict(loginName, parentPassword, {'chat': base.cr.secretChatAllowed,
|
||||
'secretsNeedParentPassword': base.cr.secretChatNeedsParentPassword}))
|
||||
if not errorMsg:
|
||||
return (1, None)
|
||||
if self.response.getInt('errorCode') in (5, 72):
|
||||
return (0, None)
|
||||
return (0, errorMsg)
|
||||
except TTAccountException as e:
|
||||
return (0, str(e))
|
||||
|
||||
return None
|
||||
|
||||
def changePassword(self, loginName, password, newPassword):
|
||||
return self.talk('purchase', data=self.__makeLoginDict(loginName, password, {'newPassword': newPassword}))
|
||||
|
||||
def requestPwdReminder(self, email = None, acctName = None):
|
||||
data = {}
|
||||
if email is not None:
|
||||
data['email'] = email
|
||||
else:
|
||||
data['accountName'] = acctName
|
||||
return self.talk('forgotPassword', data)
|
||||
|
||||
def cancelAccount(self, loginName, password):
|
||||
return self.talk('cancel', data=self.__makeLoginDict(loginName, password))
|
||||
|
||||
def getAccountData(self, loginName, password):
|
||||
errorMsg = self.talk('get', data=self.__makeLoginDict(loginName, password))
|
||||
if errorMsg:
|
||||
self.notify.warning('getAccountData error: %s' % errorMsg)
|
||||
return errorMsg
|
||||
if self.response.hasKey('errorMsg'):
|
||||
self.notify.warning("error field is: '%s'" % self.response.getString('errorMsg'))
|
||||
self.accountData = copy.deepcopy(self.response)
|
||||
fieldNameMap = {'em': 'email',
|
||||
'l1': 'addr1',
|
||||
'l2': 'addr2',
|
||||
'l3': 'addr3'}
|
||||
dict = self.accountData.dict
|
||||
for fieldName in list(dict.keys()):
|
||||
if fieldName in fieldNameMap:
|
||||
dict[fieldNameMap[fieldName]] = dict[fieldName]
|
||||
del dict[fieldName]
|
||||
|
||||
return None
|
||||
|
||||
def getLastErrorMsg(self, forceCustServNum = 0):
|
||||
errCode = self.response.getInt('errorCode')
|
||||
if errCode < 100:
|
||||
msg = self.response.getString('errorMsg')
|
||||
if forceCustServNum:
|
||||
msg += ' ' + OTPLocalizer.TTAccountCustomerServiceHelp % self.cr.accountServerConstants.getString('customerServicePhoneNumber')
|
||||
elif errCode < 200:
|
||||
msg = self.response.getString('errorMsg')
|
||||
msg += ' ' + OTPLocalizer.TTAccountCustomerServiceHelp % self.cr.accountServerConstants.getString('customerServicePhoneNumber')
|
||||
elif errCode >= 500:
|
||||
msg = OTPLocalizer.TTAccountIntractibleError
|
||||
msg += ' ' + OTPLocalizer.TTAccountCallCustomerService % self.cr.accountServerConstants.getString('customerServicePhoneNumber')
|
||||
else:
|
||||
self.notify.warning('unknown error code class: %s: %s' % (self.response.getInt('errorCode'), self.response.getString('errorMsg')))
|
||||
msg = self.response.getString('errorMsg')
|
||||
msg += ' ' + OTPLocalizer.TTAccountCallCustomerService % self.cr.accountServerConstants.getString('customerServicePhoneNumber')
|
||||
return msg
|
||||
|
||||
def __makeLoginDict(self, loginName, password, data = None):
|
||||
dict = {'accountName': loginName,
|
||||
'password': password}
|
||||
if data:
|
||||
dict.update(data)
|
||||
return dict
|
||||
|
||||
def makeLoginDict(self, loginName, password, data = None):
|
||||
return self.__makeLoginDict(loginName, password, data)
|
||||
|
||||
def talk(self, operation, data = {}):
|
||||
self.notify.debug('TTAccount.talk()')
|
||||
for key in list(data.keys()):
|
||||
data[key] = str(data[key])
|
||||
|
||||
if operation in ('play', 'get', 'cancel', 'authenticateParentPassword', 'authenticateDelete', 'authenticateParentPasswordNewStyle', 'authenticateDeleteNewStyle'):
|
||||
pass
|
||||
elif operation == 'authenticateParentUsernameAndPassword':
|
||||
pass
|
||||
elif operation == 'forgotPassword':
|
||||
pass
|
||||
elif operation == 'setParentPassword':
|
||||
pass
|
||||
elif operation == 'setSecretChat':
|
||||
pass
|
||||
elif operation == 'create':
|
||||
pass
|
||||
elif operation == 'purchase':
|
||||
if 'newPassword' in data:
|
||||
pass
|
||||
else:
|
||||
self.notify.error("Internal TTAccount error: need to add 'required data' checking for %s operation" % operation)
|
||||
op2Php = {'play': 'play',
|
||||
'get': 'get',
|
||||
'cancel': 'cancel',
|
||||
'create': 'create',
|
||||
'purchase': 'purchase',
|
||||
'setParentPassword': 'setSecrets',
|
||||
'authenticateParentPassword': 'authenticateChat',
|
||||
'authenticateDelete': 'authDelete',
|
||||
'setSecretChat': 'setChat',
|
||||
'forgotPassword': 'forgotPw',
|
||||
'authenticateParentPasswordNewStyle': 'api/authChat',
|
||||
'authenticateParentUsernameAndPassword': 'api/authParentChat',
|
||||
'authenticateDeleteNewStyle': 'api/authDelete'}
|
||||
newWebOperations = ('authenticateParentPasswordNewStyle', 'authenticateParentUsernameAndPassword', 'authenticateDeleteNewStyle')
|
||||
url = URLSpec(getAccountServer())
|
||||
if operation in newWebOperations:
|
||||
url.setPath('/%s' % op2Php[operation])
|
||||
else:
|
||||
url.setPath('/%s.php' % op2Php[operation])
|
||||
body = ''
|
||||
if 'accountName' in data:
|
||||
if operation not in newWebOperations:
|
||||
url.setQuery('n=%s' % URLSpec.quote(data['accountName']))
|
||||
serverFields = {'accountName': 'n',
|
||||
'password': 'p',
|
||||
'parentPassword': 'sp',
|
||||
'newPassword': 'np',
|
||||
'chat': 'chat',
|
||||
'email': 'em',
|
||||
'dobYear': 'doby',
|
||||
'dobMonth': 'dobm',
|
||||
'dobDay': 'dobd',
|
||||
'ccNumber': 'ccn',
|
||||
'ccMonth': 'ccm',
|
||||
'ccYear': 'ccy',
|
||||
'nameOnCard': 'noc',
|
||||
'addr1': 'l1',
|
||||
'addr2': 'l2',
|
||||
'addr3': 'l3',
|
||||
'city': 'city',
|
||||
'state': 'state',
|
||||
'country': 'country',
|
||||
'zip': 'zip',
|
||||
'referrer': 'ref',
|
||||
'secretsNeedParentPassword': 'secretsNeedsParentPassword',
|
||||
'parentPasswordNewStyle': 'pp',
|
||||
'parentUsername': 'pu',
|
||||
'userid': 'userid'}
|
||||
ignoredFields = ('ccType',)
|
||||
outBoundFields = {}
|
||||
for fieldName in list(data.keys()):
|
||||
if fieldName not in serverFields:
|
||||
if fieldName not in ignoredFields:
|
||||
self.notify.error('unknown data field: %s' % fieldName)
|
||||
else:
|
||||
outBoundFields[serverFields[fieldName]] = data[fieldName]
|
||||
|
||||
orderedFields = list(outBoundFields.keys())
|
||||
orderedFields.sort()
|
||||
for fieldName in orderedFields:
|
||||
if len(body):
|
||||
body += '&'
|
||||
body += '%s=%s' % (fieldName, URLSpec.quotePlus(outBoundFields[fieldName]))
|
||||
|
||||
self.notify.debug('url=' + url.cStr())
|
||||
self.notify.debug('body=' + body)
|
||||
if operation in ('get',):
|
||||
expectedHeader = 'ACCOUNT INFO'
|
||||
elif operation in ('play', 'cancel', 'create', 'purchase', 'setParentPassword', 'setSecretChat', 'authenticateParentPassword', 'authenticateDelete', 'forgotPassword', 'authenticateParentPasswordNewStyle', 'authenticateParentUsernameAndPassword', 'authenticateDeleteNewStyle'):
|
||||
expectedHeader = 'ACCOUNT SERVER RESPONSE'
|
||||
else:
|
||||
self.notify.error("Internal TTAccount error: need to set expected response header for '%s' operation" % operation)
|
||||
self.response = RemoteValueSet.RemoteValueSet(url, self.cr.http, body=body, expectedHeader=expectedHeader)
|
||||
self.notify.debug(' self.response=' + str(self.response))
|
||||
if self.response.hasKey('errorCode'):
|
||||
errorCode = self.response.getInt('errorCode')
|
||||
self.notify.info('account server error code: %s' % errorCode)
|
||||
if errorCode == 10:
|
||||
self.cr.freeTimeExpiresAt = 0
|
||||
if self.response.hasKey('errorMsg'):
|
||||
return self.getLastErrorMsg()
|
||||
if operation in ('get', 'forgotPassword', 'authenticateDelete', 'play', 'cancel', 'create', 'purchase', 'setParentPassword', 'authenticateParentPassword', 'authenticateParentPasswordNewStyle', 'authenticateParentUsernameAndPassword', 'authenticateDeleteNewStyle'):
|
||||
pass
|
||||
elif operation == 'setSecretChat':
|
||||
self.playToken = self.response.getString('playToken')
|
||||
self.playTokenIsEncrypted = 1
|
||||
else:
|
||||
self.notify.error('Internal TTAccount error: need to extract useful data for %s operation' % operation)
|
||||
return None
|
||||
|
||||
def authenticateParentUsernameAndPassword(self, loginName, password, parentUsername, parentPassword):
|
||||
try:
|
||||
errorMsg = self.talk('authenticateParentUsernameAndPassword', data=self.__makeLoginDict(loginName, password, {'parentUsername': parentUsername,
|
||||
'parentPasswordNewStyle': parentPassword,
|
||||
'userid': loginName}))
|
||||
if not errorMsg:
|
||||
return (1, None)
|
||||
if self.response.getInt('errorCode') in (5, 72):
|
||||
return (0, None)
|
||||
return (0, errorMsg)
|
||||
except TTAccountException as e:
|
||||
return (0, str(e))
|
||||
|
||||
return None
|
|
@ -16,8 +16,6 @@ from direct.showbase.InputStateGlobal import inputState
|
|||
from otp.avatar import Avatar
|
||||
from otp.avatar import DistributedAvatar
|
||||
from otp.friends import FriendManager
|
||||
from otp.login import TTAccount
|
||||
from otp.login import AccountServerConstants
|
||||
from otp.login import LoginScreen
|
||||
from otp.login import LoginGSAccount
|
||||
from otp.login import LoginGoAccount
|
||||
|
@ -43,7 +41,6 @@ from toontown.friends import FriendsListPanel
|
|||
from toontown.friends import ToontownFriendSecret
|
||||
from toontown.uberdog import TTSpeedchatRelay
|
||||
from toontown.login import DateObject
|
||||
from toontown.login import AccountServerDate
|
||||
from toontown.login import AvatarChooser
|
||||
from toontown.makeatoon import MakeAToon
|
||||
from toontown.pets import DistributedPet, PetDetail, PetHandle
|
||||
|
@ -117,7 +114,6 @@ class ToontownClientRepository(OTPClientRepository.OTPClientRepository):
|
|||
self.elderFriendsMap = {}
|
||||
self.__queryAvatarMap = {}
|
||||
self.dateObject = DateObject.DateObject()
|
||||
self.accountServerDate = AccountServerDate.AccountServerDate()
|
||||
self.hoodMgr = HoodMgr.HoodMgr(self)
|
||||
self.setZonesEmulated = 0
|
||||
self.old_setzone_interest_handle = None
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
import sys
|
||||
import os
|
||||
import time
|
||||
import string
|
||||
import bz2
|
||||
import random
|
||||
from direct.showbase.MessengerGlobal import *
|
||||
from direct.showbase.DirectObject import DirectObject
|
||||
from direct.showbase.EventManagerGlobal import *
|
||||
from direct.task.TaskManagerGlobal import *
|
||||
from direct.task.Task import Task
|
||||
from direct.directnotify.DirectNotifyGlobal import *
|
||||
from pandac.PandaModules import *
|
||||
from otp.launcher.LauncherBase import LauncherBase
|
||||
from toontown.toonbase import TTLocalizer
|
||||
|
@ -79,9 +69,6 @@ class QuickLauncher(LauncherBase):
|
|||
|
||||
return value
|
||||
|
||||
def getAccountServer(self):
|
||||
return self.getValue('ACCOUNT_SERVER', '')
|
||||
|
||||
def getGame2Done(self):
|
||||
return True
|
||||
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
from pandac.PandaModules import *
|
||||
from otp.login.HTTPUtil import *
|
||||
from direct.directnotify import DirectNotifyGlobal
|
||||
from otp.login import TTAccount
|
||||
from . import DateObject
|
||||
from . import TTDateObject
|
||||
import time
|
||||
|
||||
class AccountServerDate:
|
||||
notify = DirectNotifyGlobal.directNotify.newCategory('AccountServerDate')
|
||||
|
||||
def __init__(self):
|
||||
self.__grabbed = 0
|
||||
|
||||
def getServer(self):
|
||||
return TTAccount.getAccountServer().cStr()
|
||||
|
||||
def grabDate(self, force = 0):
|
||||
if self.__grabbed and not force:
|
||||
self.notify.debug('using cached account server date')
|
||||
return
|
||||
if base.cr.accountOldAuth or base.config.GetBool('use-local-date', 0):
|
||||
self.__useLocalClock()
|
||||
return
|
||||
url = URLSpec(self.getServer())
|
||||
url.setPath('/getDate.php')
|
||||
self.notify.debug('grabbing account server date from %s' % url.cStr())
|
||||
response = getHTTPResponse(url, http)
|
||||
if response[0] != 'ACCOUNT SERVER DATE':
|
||||
self.notify.debug('invalid response header')
|
||||
raise UnexpectedResponse('unexpected response, response=%s' % response)
|
||||
try:
|
||||
epoch = int(response[1])
|
||||
except ValueError as e:
|
||||
self.notify.debug(str(e))
|
||||
raise UnexpectedResponse('unexpected response, response=%s' % response)
|
||||
|
||||
timeTuple = time.gmtime(epoch)
|
||||
self.year = timeTuple[0]
|
||||
self.month = timeTuple[1]
|
||||
self.day = timeTuple[2]
|
||||
base.cr.dateObject = TTDateObject.TTDateObject(self)
|
||||
self.__grabbed = 1
|
||||
|
||||
def __useLocalClock(self):
|
||||
self.month = base.cr.dateObject.getMonth()
|
||||
self.year = base.cr.dateObject.getYear()
|
||||
self.day = base.cr.dateObject.getDay()
|
||||
|
||||
def getMonth(self):
|
||||
return self.month
|
||||
|
||||
def getYear(self):
|
||||
return self.year
|
||||
|
||||
def getDay(self):
|
||||
return self.day
|
|
@ -1,21 +0,0 @@
|
|||
from . import DateObject
|
||||
|
||||
class TTDateObject(DateObject.DateObject):
|
||||
|
||||
def __init__(self, accountServerDate):
|
||||
self.accountServerDate = accountServerDate
|
||||
|
||||
def getYear(self):
|
||||
return self.accountServerDate.getYear()
|
||||
|
||||
def getMonth(self):
|
||||
return self.accountServerDate.getMonth()
|
||||
|
||||
def getDay(self):
|
||||
return self.accountServerDate.getDay()
|
||||
|
||||
def getDetailedAge(self, dobMonth, dobYear, dobDay = None, curMonth = None, curYear = None, curDay = None):
|
||||
return DateObject.DateObject.getDetailedAge(self, dobMonth, dobYear, dobDay, curMonth=self.getMonth(), curYear=self.getYear(), curDay=self.getDay())
|
||||
|
||||
def getAge(self, dobMonth, dobYear, dobDay = None, curMonth = None, curYear = None, curDay = None):
|
||||
return TTDateObject.getDetailedAge(self, dobMonth, dobYear, dobDay=dobDay, curMonth=curMonth, curYear=curYear, curDay=curDay)[0]
|
Loading…
Reference in a new issue