def extractCommonActionDetails(cn, args): args = args.split() if len(args) < 1: raise Commands.UsageError() else: if ":" in args[0]: sp = args[0].split(':') if len(sp) != 2: raise Commands.ArgumentValueError("Extra ':' found when determining command target.") args[0] = sp[0] mask = sp[1] else: mask = "255.255.255.255" try: tcn = int(args[0]) except: raise Commands.ArgumentValueError("You must supply a valid player cn.") responsible_cn = cn if len(args) < 2: seconds = settings['default_action_interval'] else: try: seconds = timestring.parseTimeString(args[1])[1] except timestring.MalformedTimeString: raise Commands.ArgumentValueError("That time string does not seem to be valid.") if len(args) < 3: reason = settings['default_reason'] else: try: reason = ' '.join(args[2:]) except: raise Commands.UsageError() Logging.debug("Action details: " + str((tcn, seconds, reason, responsible_cn, mask))) return (tcn, seconds, reason, responsible_cn, mask)
def insert(self, cn, ipString, maskString, actionTime, reason): p = Players.player(cn) if actionTime == None: seconds = settings['default_action_interval'] else: try: seconds = timestring.parseTimeString(actionTime)[1] except timestring.MalformedTimeString: raise Commands.ArgumentValueError("That time string does not seem to be valid.") ip = Net.ipStringToLong(ipString) expiration = time.time() + seconds nick = "None Inserted" theTime = time.time() responsible_ip = p.ipLong() responsible_nick= p.name() mask = Net.ipStringToLong(maskString) new = self.table(ip, mask, expiration, reason, nick, responsible_ip, responsible_nick, theTime) session = DatabaseManager.dbmanager.session() try: session.add(new) session.commit() finally: session.close() dictionary = { 'ip': str(ipString) + ":" + maskString, 'time': prettytime.createDurationString(seconds), 'action': self.punType, 'responsible': responsible_nick, 'reason': reason, } messager.sendMessage('inserted', dictionary=dictionary) logString = str(responsible_nick) + "@" + str(responsible_ip) + " has " + str(self.punType) + " " + str(ip) + ":" + maskString Logging.info(logString)
def onTimeLeft(cn, args): ''' @description Set the amount of time left in the game using a time string. @usage 5m @usage +5m @usage -55s @allowGroups __admin__ __master__ @denyGroups @doc Sets the time left in the game. ''' if args == '': raise UsageError() p = Players.player(cn) try: timeModification = timestring.parseTimeString(args) except timestring.MalformedTimeString: messager.sendPlayerMessage('malformed_time_string', p) return if timeModification[0] == '=': targetTime = timeModification[1] elif timeModification[0] == '+': targetTime = ServerCore.secondsRemaining() + timeModification[1] else: targetTime = ServerCore.secondsRemaining() - timeModification[1] targetTime = max(0, targetTime) ServerCore.setSecondsRemaining(targetTime) displaytime = prettytime.createDurationString(ServerCore.secondsRemaining()) p.logAction('TimeLeft set: ' + displaytime) messager.sendMessage('time_changed', dictionary={'timeleft':displaytime, 'name':p.name()})