From 7663b3e5d374deda284741f38b75e03e8155a851 Mon Sep 17 00:00:00 2001 From: Ryan Hitchman Date: Sun, 24 Jan 2010 17:30:00 -0700 Subject: [PATCH] simple acls (deny-except and allow-except), force config rewrite on start --- core/config.py | 2 +- plugins/sieve.py | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/core/config.py b/core/config.py index 12336bc..2f788cf 100644 --- a/core/config.py +++ b/core/config.py @@ -21,7 +21,7 @@ if not os.path.exists('config'): del conf bot.config = yaml.load(open('config')) -bot._config_dirty = False +bot._config_dirty = True # force a rewrite on start bot._config_mtime = os.stat('config').st_mtime def config_dirty(self): diff --git a/plugins/sieve.py b/plugins/sieve.py index 197a040..4fa147e 100644 --- a/plugins/sieve.py +++ b/plugins/sieve.py @@ -1,3 +1,4 @@ +import os import re from util import hook @@ -16,14 +17,28 @@ def sieve_suite(bot, input, func, args): hook = args.get('hook', r'(.*)') if args.get('prefix', True): - # add a prefix, unless it's a private message - hook = (r'^(?:[.!]|' if input.chan != input.nick else r'^(?:[.!]?|') \ - + input.conn.nick + r'[:,]*\s*)' + hook + if input.chan == input.nick: # private message, prefix not required + prefix = r'^(?:[.!]?|' + else: + prefix = r'^(?:[.!]|' + hook = prefix + input.conn.nick + r'[:,]*\s)' + hook input.re = re.match(hook, input.msg, flags=re.I) if input.re is None: return None + acl = bot.config.get('acls', {}).get(func.__name__) + if acl: + print acl + if 'deny-except' in acl: + allowed_channels = map(str.lower, acl['deny-except']) + if input.chan.lower() not in allowed_channels: + return None + if 'allow-except' in acl: + denied_channels = map(str.lower, acl['allow-except']) + if input.chan.lower() in denied_channels: + return None + input.inp_unstripped = ' '.join(input.re.groups()) input.inp = input.inp_unstripped.strip()