Пример #1
0
def warnNickReserved(cn, count, sessid):
	try:
		p = player(cn)
	except ValueError:
		return
	try:
		nickacct = p.warn_nickacct
		if nickacct.nick != sauerbomber.playerName(cn) or sessid != sauerbomber.playerSessionId(cn):
			p.warning_for_login = False
			return
	except (AttributeError, ValueError):
		p.warning_for_login = False
		return
	if isLoggedIn(cn):
		user = loggedInAs(cn)
		if nickacct.user_id != user.id:
			ban(cn, 0, 'Use of reserved name', -1)
			pass
		p.warning_for_login = False
		return
	if count > 4:
		ban(cn, 0, 'Use of reserved name', -1)
		p.warning_for_login = False
		return
	remaining = 25-(count*5)
	sauerbomber.playerMessage(cn, warning('Your name is reserved. You have ' + red('%i') + ' seconds to login or be kicked.') % remaining)
	addTimer(5000, warnNickReserved, (cn, count+1, sessid))
Пример #2
0
def onPlayerCommands(cn, args):
	if args != '':
		sauerbomber.playerMessage(cn, error('Usage: #playercommands'))
	else:
		msg = blue('Available commands: ')
		for command in command_info.keys():
			msg += '#' + command + ' '
		sauerbomber.playerMessage(cn, orange(msg))
Пример #3
0
def listMasterCommands(cn, args):
	str = 'Master commands: '
	for cmd in command_info.items():
		if cmd[1].public:
			str += cmd[1].command + ' '
		elif cmd[1].master:
			str += cmd[1].command + ' '
	sauerbomber.playerMessage(cn, info(str))
Пример #4
0
def onLoginCommand(cn, args):
	'''@description Login to server account
	   @usage email password
	   @public'''
	args = args.split(' ')
	if len(args) != 2:
		raise UsageError()
	user = userAuth(args[0], args[1])
	if user:
		login(cn, user)
	else:
		sauerbomber.playerMessage(cn, error('Invalid login.'))
Пример #5
0
def msgHelpText(cn, cmd):
	try:
		helpinfo = command_info[cmd]
	except KeyError:
		sauerbomber.playerMessage(cn, error('Command not found'))
	else:
		msgs = []
		try:
			msgs.append(helpinfo.description)
		except AttributeError:
			pass
		for usage in helpinfo.usages:
			msgs.append(usage)
		for msg in msgs:
			sauerbomber.playerMessage(cn, info(msg))
Пример #6
0
def onRegisterCommand(cn, args):
	'''@description Register account with server
	   @usage email password
	   @public'''
	args = args.split(' ')
	if len(args) != 2:
		raise UsageError()
	try:
		dbmanager.query(User).filter(User.email==args[0]).one()
	except NoResultFound:
		if not isValidEmail(args[0]):
			raise ArgumentValueError('Invalid email address')
		user = User(args[0], args[1])
		session.add(user)
		session.commit()
		sauerbomber.playerMessage(cn, info('Account created'))
		return
	except MultipleResultsFound:
		pass
	raise StateError('An account with that email already exists')
Пример #7
0
def onLinkName(cn, args):
	'''@description Link name to server account, and reserve name.
	   @usage
	   @public'''
	if args != '':
		raise UsageError()
	if not isLoggedIn(cn):
		raise StateError('You must be logged in to link a name to your account')
	if sauerbomber.playerName(cn) in blocked_names:
		raise StateError('You can not reserve this name')
	try:
		dbmanager.query(NickAccount).filter(NickAccount.nick==sauerbomber.playerName(cn)).one()
	except NoResultFound:
		user = loggedInAs(cn)
		nickacct = NickAccount(sauerbomber.playerName(cn), user.id)
		session.add(nickacct)
		session.commit()
		sauerbomber.playerMessage(cn, info('Your name is now linked to your account.'))
		sauerbomber.playerMessage(cn, info('You may now login with /setmaster password'))
		return
	except MultipleResultsFound:
		pass
	raise StateError('Your name is already linked to an account')
Пример #8
0
def onAuthSuccess(cn, name):
    if currentAdmin() != None:
        sauerbomber.playerMessage(cn, error("Admin is present"))
        return
    sauerbomber.setMaster(cn)
Пример #9
0
 def message(self, msg):
     """Send message to client"""
     sauerbomber.playerMessage(self.cn, msg)
Пример #10
0
def listAdminCommands(cn, args):
	str = 'Admin commands: '
	for cmd in command_info.items():
		str += cmd[1].command + ' '
	sauerbomber.playerMessage(cn, info(str))
Пример #11
0
def listPublicCommands(cn, args):
	str = 'Public commands: '
	for cmd in command_info.items():
		if cmd[1].public:
			str += cmd[1].command + ' '
	sauerbomber.playerMessage(cn, info(str))
Пример #12
0
						p.message(info('Usage: ' + command + ' ' + usage))
				except StateError, e:
					p.message(error(str(e)))
				except ArgumentValueError, e:
					p.message(error('Invalid argument. ' + str(e)))
				except ValueError:
					p.message(error('Value Error: Did you specify a valid cn?'))
					exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
					logging.warn('Uncaught ValueError raised in command handler.')
					logging.warn(traceback.format_exc())
				except:
					exceptionType, exceptionValue, exceptionTraceback = sys.exc_info()
					logging.warn('Uncaught exception occured in command handler.')
					logging.warn(traceback.format_exc())
		else:
			sauerbomber.playerMessage(cn, error('Command not found'))
	def onMsg(self, cn, text):
		if len(text) > 0 and self.prefixes.find(text[0]) != -1:
			cmd = text[1:].split(' ')[0]
			self.trigger(cn, cmd, text[len(cmd)+2:])
			return False
		return True

commandmanager = CommandManager()

def registerCommandHandler(command, func):
	help.loadCommandInfo(command, func)
	commandmanager.register(command, func)

class commandHandler(object):
	def __init__(self, name):
Пример #13
0
def insufficientPermissions(cn):
	sauerbomber.playerMessage(cn, error('Insufficient permissions'))