open-toontown/otp/login/LoginGSAccount.py

81 lines
2.6 KiB
Python

from panda3d.core import *
from direct.distributed.MsgTypes import *
from direct.directnotify import DirectNotifyGlobal
from . import LoginBase
from direct.distributed.PyDatagram import PyDatagram
class LoginGSAccount(LoginBase.LoginBase):
def __init__(self, cr):
LoginBase.LoginBase.__init__(self, cr)
def createAccount(self, loginName, password, data):
self.loginName = loginName
self.password = password
self.createFlag = 1
self.cr.freeTimeExpiresAt = -1
self.cr.setIsPaid(1)
return None
def authorize(self, loginName, password):
self.loginName = loginName
self.password = password
self.createFlag = 0
self.cr.freeTimeExpiresAt = -1
self.cr.setIsPaid(1)
return None
def supportsRelogin(self):
return 1
def sendLoginMsg(self):
DISLID = config.GetInt('fake-DISL-PlayerAccountId', 0)
if not DISLID:
NameStringId = 'DISLID_%s' % self.loginName
DISLID = config.GetInt(NameStringId, 0)
cr = self.cr
datagram = PyDatagram()
datagram.addUint16(CLIENT_LOGIN)
datagram.addString(self.loginName)
if cr.connectMethod != cr.CM_HTTP:
datagram.addUint32(cr.tcpConn.getAddress().getIp())
else:
datagram.addUint32(0)
datagram.addUint16(5150)
datagram.addString(cr.serverVersion)
datagram.addUint32(cr.hashVal)
datagram.addString(self.password)
datagram.addBool(self.createFlag)
datagram.addString(cr.validateDownload)
datagram.addString(cr.wantMagicWords)
datagram.addUint32(DISLID)
datagram.addString(config.GetString('otp-whitelist', 'YES'))
cr.send(datagram)
def resendPlayToken(self):
pass
def requestPwdReminder(self, email = None, acctName = None):
return 0
def getAccountData(self, loginName, password):
return 'Unsupported'
def supportsParentPassword(self):
return 1
def authenticateParentPassword(self, loginName, password, parentPassword):
return (password == parentPassword, None)
def authenticateParentUsernameAndPassword(self, loginName, password, parentUsername, parentPassword):
return (password == parentPassword, None)
def supportsAuthenticateDelete(self):
return 1
def authenticateDelete(self, loginName, password):
return (password == self.cr.password, None)
def enableSecretFriends(self, loginName, password, parentPassword, enable = 1):
return (password == parentPassword, None)