Ejemplo n.º 1
0
    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, ))
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
Archivo: remuser.py Proyecto: JDD/DLR
    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)
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
 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,))
Ejemplo n.º 7
0
 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))
Ejemplo n.º 8
0
 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))
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
 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))
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
 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)
Ejemplo n.º 13
0
 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)
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
Archivo: book.py Proyecto: munin/merlin
 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)
Ejemplo n.º 16
0
 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,))
Ejemplo n.º 17
0
Archivo: auth.py Proyecto: munin/merlin
 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)
Ejemplo n.º 18
0
    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)
Ejemplo n.º 19
0
 def delete_prop(self, prop):
     prop.votes.delete()
     session.delete(prop)
     session.commit()
Ejemplo n.º 20
0
 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))
Ejemplo n.º 21
0
    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
Ejemplo n.º 22
0
Archivo: prop.py Proyecto: JDD/merlin
 def delete_prop(self, prop):
     prop.votes.delete()
     session.delete(prop)
     session.commit()