]> gitweb.pimeys.fr Git - bots/basile.git/commitdiff
Meilleure gestion de la blacklist
authorVincent Le Gallic <basile@crans.org>
Tue, 25 Jun 2013 17:35:59 +0000 (19:35 +0200)
committerVincent Le Gallic <basile@crans.org>
Tue, 25 Jun 2013 17:35:59 +0000 (19:35 +0200)
basile.py
config.py

index 66dab704126a61c3198c55baa7b18b438d0df4f2..c71ec0e033f1a0f5c9d432470c7b7703f7ba9889 100755 (executable)
--- a/basile.py
+++ b/basile.py
@@ -56,14 +56,15 @@ def log(serveur, channel, auteur=None, message=None):
 
 def ignore_event(serv, ev):
     """Retourne ``True`` si il faut ignorer cet évènement."""
 
 def ignore_event(serv, ev):
     """Retourne ``True`` si il faut ignorer cet évènement."""
-    for (blackmask, exceptmask) in config.blacklisted_masks:
+    for (blackmask, exceptlist) in config.blacklisted_masks:
         usermask = ev.source()
         usermask = ev.source()
-        if exceptmask is None:
-            exceptit = False
-        else:
-            exceptit = bool(irclib.mask_matches(usermask, exceptmask))
         blackit = bool(irclib.mask_matches(usermask, blackmask))
         blackit = bool(irclib.mask_matches(usermask, blackmask))
-        return blackit and not exceptit
+        exceptit = any([bool(irclib.mask_matches(usermask, exceptmask)) for exceptmask in exceptlist])
+        if exceptit: # Il est exempté
+            return False
+        else:
+            if blackit: # Il n'est pas exempté et matche la blacklist
+                return True
 
 def regex_join(liste, avant=u".*(?:^| )", apres=u"(?:$|\.| |,|;).*"):
     """Fabrique une regexp à partir d'une liste d'éléments à matcher."""
 
 def regex_join(liste, avant=u".*(?:^| )", apres=u"(?:$|\.| |,|;).*"):
     """Fabrique une regexp à partir d'une liste d'éléments à matcher."""
index e01a1d959cc02e6b720a3286a6c940caa0400810..4db2ae8d740fc0e4eada9c173945c7258f8d928d 100644 (file)
--- a/config.py
+++ b/config.py
@@ -281,6 +281,6 @@ helpmsg_ops = u" JOIN LEAVE QUIET NOQUIET LOST RECONNECT RELOAD"
 #: Message d'aide par défaut à ajouter pour les OVEROPs
 helpmsg_overops = u" SAY DO STAY NOSTAY OPS OVEROPS KICK DIE CRASH"
 
 #: Message d'aide par défaut à ajouter pour les OVEROPs
 helpmsg_overops = u" SAY DO STAY NOSTAY OPS OVEROPS KICK DIE CRASH"
 
-#: Liste de paires de masques ``[black, except]`` : on blacklistera ce qui match ``black``
-#: et pas ``except``. ``except`` peut être None.
+#: Liste de paires de masques ``[black, exceptlist]`` : on blacklistera ce qui match ``black``
+#: et aucun élément de ``exceptlist``
 blacklisted_masks = []
 blacklisted_masks = []