def execute(self, message, user, params): channel = params.group(1) chan = Channel.load(channel) if chan is None: message.reply("Channel '%s' does not exist" % (channel, )) if user.is_admin(): # message.privmsg("remuser %s %s" %(channel, Config.get('Connection', 'nick')),Config.get("Services", "nick")) message.privmsg("set %s autoinvite off" % (channel), Config.get("Services", "nick")) message.part(channel) return if chan.userlevel >= user.access and not user.is_admin(): message.reply( "You may not remove %s, the channel's access (%s) exceeds your own (%s)" % ( chan.name, chan.userlevel, user.access, )) return session.delete(chan) session.commit() # message.privmsg("remuser %s %s" %(chan.name, Config.get('Connection', 'nick')),Config.get("Services", "nick")) message.privmsg("set %s autoinvite off" % (channel), Config.get("Services", "nick")) message.part(chan.name) message.reply("Removed channel %s" % (chan.name, ))
def authenticate(self, request): request.session = None request.user = None key = request.COOKIES.get(SESSION_KEY) if key: auth = Arthur.load(key, datetime.now()) if auth is None: raise UserError("Your session has expired, please login again.") if request.path == LOGOUT: session.delete(auth) session.commit() raise UserError("Logged out.") request.session = auth return auth.user, None, key elif (request.POST.get(USER) and request.POST.get(PASS)): user = User.load(name=request.POST.get(USER), passwd=request.POST.get(PASS)) if user is None: raise UserError("Invalid user.") else: key = self.generate_key(user) auth = Arthur(key=key, expire=datetime.now()+timedelta(days=1), user=user) session.query(Arthur).filter(Arthur.user == user).delete() session.add(auth) session.commit() request.session = auth return user, key, key else: return None, None, None
def execute(self, message, user, params): username = params.group(1) member = User.load(name=username, active=False) if member is None: message.alert("No such user '%s'" % (username,)) return if member.access > user.access: message.reply( "You may not remove %s, his or her access (%s) exceeds your own (%s)" % (member.name, member.access, user.access) ) return mbraxx = Config.getint("Access", "member") home = Config.get("Channels", "home") coraxx = Config.getint("Access", "core") core = Config.get("Channels", "core") if member.active and member.access >= mbraxx: message.privmsg("remuser %s %s" % (home, member.name), "P") if member.active and member.access >= coraxx: message.privmsg("remuser %s %s" % (core, member.name), "P") session.delete(member) session.commit() message.reply("Removed user %s" % (member.name,)) CUT.untrack_user(member.name)
def authenticate(self, request): request.session = None request.user = None key = request.COOKIES.get(SESSION_KEY) if key: auth = Arthur.load(key, datetime.now()) if auth is None: raise UserError( "Your session has expired, please login again.") if request.path == LOGOUT: session.delete(auth) session.commit() raise UserError("Logged out.") request.session = auth return auth.user, None, key elif (request.REQUEST.get(USER) and request.REQUEST.get(PASS)): user = User.load(name=request.REQUEST.get(USER), passwd=request.REQUEST.get(PASS)) if user is None: raise UserError("Invalid user.") else: key = self.generate_key(user) auth = Arthur(key=key, expire=datetime.now() + timedelta(days=1), user=user) session.query(Arthur).filter(Arthur.user == user).delete() session.add(auth) session.commit() request.session = auth return user, key, key else: return None, None, None
def execute(self, message, user, params): username = params.group(1) member = User.load(name=username, active=False) if member is None: message.alert("No such user '%s'" % (username, )) return if member.access > user.access: message.reply( "You may not remove %s, his or her access (%s) exceeds your own (%s)" % ( member.name, member.access, user.access, )) return mbraxx = Config.getint("Access", "member") home = Config.get("Channels", "home") if member.active and member.access >= mbraxx: message.privmsg("remuser %s %s" % ( home, member.name, ), Config.get("Services", "nick")) # message.privmsg("ban %s *!*@%s.%s GTFO, EAAD"%(home, member.name, Config.get("Services", "usermask"),), Config.get("Services", "nick")) session.delete(member) session.commit() message.reply("Removed user %s" % (member.name, )) CUT.untrack_user(member.name)
def remove(self, message, user, params): id = int(params.group(1)) attack = Attack.load(id) if attack is None: message.alert("No attack exists with id %d" %(id)) return for coord in re.findall(loadable.coord, params.group(2)): if not coord[4]: galaxy = Galaxy.load(coord[0],coord[2], active=False) if galaxy: attack.removeGalaxy(galaxy) else: planet = Planet.load(coord[0],coord[2],coord[4], active=False) if planet: attack.removePlanet(planet) if not len(attack.planets): session.delete(attack) session.commit() if attack in session: message.reply(str(attack)) else: message.reply("Deleted Attack %d LT: %d | %s" %(attack.id,attack.landtick,attack.comment,))
def land(self, message, user, params): id = int(params.group(1)) attack = Attack.load(id) if attack is None: message.alert("No attack exists with id %d" %(id)) return tick = Updates.current_tick() when = int(params.group(2)) if when == 0: session.delete(attack) session.commit() message.reply("Deleted Attack %d LT: %d | %s" %(attack.id,attack.landtick,attack.comment,)) return if when < PA.getint("numbers", "protection"): eta = when when += tick elif when <= tick: message.alert("Can not create attacks in the past. You wanted tick %s, but current tick is %s." % (when, tick,)) return else: eta = when - tick if when > 32767: when = 32767 old = attack.landtick attack.landtick = when session.commit() message.reply("Changed LT for attack %d from %d to %d"%(id,old,when))
def delete_ships(self, user, taker, fleet, tick): session.delete(fleet) session.add( FleetLog(taker=taker, user=user, ship=fleet.ship, ship_count=fleet.ship_count, tick=tick))
def execute(self, message, user, params): planet = Planet.load(*params.group(1,3,5)) if planet is None: message.alert("No planet with coords %s:%s:%s" % params.group(1,3,5)) return tick = Updates.current_tick() when = int(params.group(6) or 0) if 0 < when < 32: eta = when when += tick elif 0 < when <= tick: message.alert("Can not unbook targets in the past. You wanted tick %s, but current tick is %s." % (when, tick,)) return else: eta = when - tick if when > 32767: when = 32767 override = params.group(7) Q = session.query(Target) Q = Q.join(Target.user) Q = Q.filter(Target.planet == planet) Q = Q.filter(Target.user == user) if override is None else Q Q = Q.filter(Target.tick == when) if when else Q.filter(Target.tick >= tick) Q = Q.order_by(asc(Target.tick)) result = Q.all() for target in result: session.delete(target) count = len(result) session.commit() if count < 1: reply=("You have no " if override is None else "No ") +"bookings matching %s:%s:%s"%(planet.x,planet.y,planet.z,) if when: reply+=" for landing on tick %s"%(when,) reply+=". If you are trying to unbook someone else's target, you must confirm with 'yes'." if override is None else "" else: reply="You have unbooked %s:%s:%s"%(planet.x,planet.y,planet.z,) if when: reply+=" for landing pt %s"%(when,) if override: reply+=" (previously held by user %s)"%(result[0].user.name) else: reply+=" for %d booking(s)"%(count,) if override: prev=[] for target in result: prev.append("(%s user:%s)" % (target.tick,target.user.name)) reply+=": "+", ".join(prev) reply+="." message.reply(reply) return
def delete_ships(self, user, taker, fleet, tick, count): if count: fleet.ship_count -= count if fleet.ship_count < 1: session.delete(fleet) else: session.delete(fleet) session.add( FleetLog(taker=taker, user=user, ship=fleet.ship, ship_count=(count or fleet.ship_count), tick=tick))
def execute(self, message, user, params): params = params.group(1) quote, count = Quote.search(params) if count < 1: reply = "No quotes matching '%s'" % (params,) if count > 1: reply = "There were %d quotes matching your search, I can only be bothered to delete one quote at a time you demanding f*****t" % (count,) if count == 1: session.delete(quote) session.commit() reply="Removed: '%s'" % (quote,) message.reply(reply)
def execute(self, message, user, params): params = params.group(1) slogan, count = Slogan.search(params) if count < 1: reply = "No slogans matching '%s'" % (params,) if count > 1: reply = "There were %d slogans matching your search, I can only be bothered to delete one slogan at a time you demanding f*****t" % (count,) if count == 1: session.delete(slogan) session.commit() reply="Removed: '%s'" % (slogan,) message.reply(reply)
def execute(self, message, user, params): params = params.group(1) slogan, count = Slogan.search(params) if count < 1: reply = "No slogans matching '%s'" % (params, ) if count > 1: reply = "There were %d slogans matching your search, I can only be bothered to delete one slogan at a time you demanding f*****t" % ( count, ) if count == 1: session.delete(slogan) session.commit() reply = "Removed: '%s'" % (slogan, ) message.reply(reply)
def execute(self, request, user, id, x, y, z, when): print when planet = Planet.load(x,y,z) if planet is None: return self.attack(request, user, id, "No planet with coords %s:%s:%s" %(x,y,z,)) tick = Updates.current_tick() when = int(when or 0) if 0 < when < PA.getint("numbers", "protection"): eta = when when += tick elif 0 < when <= tick: return self.attack(request, user, id, "Can not unbook targets in the past. You wanted tick %s, but current tick is %s." % (when, tick,)) else: eta = when - tick if when > 32767: when = 32767 Q = session.query(Target) Q = Q.join(Target.user) Q = Q.filter(Target.planet == planet) Q = Q.filter(Target.user == user) Q = Q.filter(Target.tick == when) if when else Q.filter(Target.tick >= tick) Q = Q.order_by(asc(Target.tick)) result = Q.all() for target in result: session.delete(target) count = len(result) session.commit() if count < 1: reply="You have no bookings matching %s:%s:%s"%(planet.x,planet.y,planet.z,) if when: reply+= " for landing on tick %s"%(when,) else: reply = "You have unbooked %s:%s:%s"%(planet.x,planet.y,planet.z,) if when: reply+=" for landing pt %s"%(when,) else: reply+=" for %d booking(s)"%(count,) return self.attack(request, user, id, reply)
def execute(self, message, user, params): channel = params.group(1) chan = Channel.load(channel) if chan is None: message.reply("Channel '%s' does not exist" % (channel,)) if user.is_admin(): message.privmsg("remuser %s %s" %(channel, Config.get('Connection', 'nick')),Config.get("Services", "nick")) message.part(channel) return if chan.userlevel >= user.access and not user.is_admin(): message.reply("You may not remove %s, the channel's access (%s) exceeds your own (%s)" % (chan.name, chan.userlevel, user.access,)) return session.delete(chan) session.commit() message.privmsg("remuser %s %s" %(chan.name, Config.get('Connection', 'nick')),Config.get("Services", "nick")) message.part(chan.name) message.reply("Removed channel %s" % (chan.name,))
def process_request(self, request): try: if request.path[:8] == "/static/": return request.session = None key = request.COOKIES.get(SESSION_KEY) if key: auth = Session.load(key, datetime.datetime.now()) if auth is None: request._COOKIE = None return self.login_page(request, "Your session has expired, please login again.") if request.path == LOGOUT: session.delete(auth) session.commit() request._COOKIE = None return self.login_page(request, "Logged out.") request.session = auth return elif (request.REQUEST.get(USER) and request.REQUEST.get(PASS)): user = User.load(name=request.REQUEST.get(USER), passwd=request.REQUEST.get(PASS)) if user is None: request._COOKIE = None return self.login_page(request, "Invalid user.") else: key = self.generate_key(user) auth = Session(key=key, expire=datetime.datetime.now()+datetime.timedelta(days=1), user=user) session.query(Session).filter(Session.user == user).delete() session.add(auth) session.commit() request.session = auth request._COOKIE = key return else: return self.login_page(request, "Hi! Please login below:") except Exception as exc: exceptions().process_exception(request, exc) return server_error(request)
def execute(self, request, user, id, x, y, z, when): planet = Planet.load(x, y, z) if planet is None: return self.attack(request, user, id, "No planet with coords %s:%s:%s" % ( x, y, z, )) tick = Updates.current_tick() when = int(when or 0) if 0 < when < PA.getint("numbers", "protection"): eta = when when += tick elif 0 < when <= tick: return self.attack( request, user, id, "Can not unbook targets in the past. You wanted tick %s, but current tick is %s." % ( when, tick, )) else: eta = when - tick if when > 32767: when = 32767 Q = session.query(Target) Q = Q.join(Target.user) Q = Q.filter(Target.planet == planet) Q = Q.filter(Target.user == user) Q = Q.filter(Target.tick == when) if when else Q.filter( Target.tick >= tick) Q = Q.order_by(asc(Target.tick)) result = Q.all() for target in result: session.delete(target) count = len(result) session.commit() if count < 1: reply = "You have no bookings matching %s:%s:%s" % ( planet.x, planet.y, planet.z, ) if when: reply += " for landing on tick %s" % (when, ) else: reply = "You have unbooked %s:%s:%s" % ( planet.x, planet.y, planet.z, ) if when: reply += " for landing pt %s" % (when, ) else: reply += " for %d booking(s)" % (count, ) return self.attack(request, user, id, reply)
def delete_prop(self, prop): prop.votes.delete() session.delete(prop) session.commit()
def delete_ships(self, user, taker, fleet, tick): session.delete(fleet) session.add(FleetLog(taker=taker, user=user, ship=fleet.ship, ship_count=fleet.ship_count, tick=tick))
def execute(self, message, user, params, override): planet = Planet.load(*params.group(1, 3, 5)) if planet is None: message.alert("No planet with coords %s:%s:%s" % params.group(1, 3, 5)) return tick = Updates.current_tick() when = int(params.group(6) or 0) if 0 < when < PA.getint("numbers", "protection"): when += tick elif 0 < when <= tick: message.alert( "Can not unbook targets in the past. You wanted tick %s, but current tick is %s." % ( when, tick, )) return if when > 32767: when = 32767 Q = session.query(Target) Q = Q.join(Target.user) Q = Q.filter(Target.planet == planet) Q = Q.filter(Target.user == user) if override is False else Q Q = Q.filter(Target.tick == when) if when else Q.filter( Target.tick >= tick) Q = Q.order_by(asc(Target.tick)) result = Q.all() for target in result: session.delete(target) count = len(result) session.commit() if count < 1: reply = ("You have no " if override is False else "No ") + "bookings matching %s:%s:%s" % ( planet.x, planet.y, planet.z, ) if when: reply += " for landing on tick %s" % (when, ) reply += ". If you are trying to unbook someone else's target, you must confirm with 'yes'." if override is False else "" else: reply = "You have unbooked %s:%s:%s" % ( planet.x, planet.y, planet.z, ) if when: reply += " for landing pt %s" % (when, ) if override: reply += " (previously held by user %s)" % ( result[0].user.name) else: reply += " for %d booking(s)" % (count, ) if override: prev = [] for target in result: prev.append("(%s user:%s)" % (target.tick, target.user.name)) reply += ": " + ", ".join(prev) reply += "." message.reply(reply) return