From 09b6920f7519e9c09bb6bc1dfa04c530c8e95660 Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Sat, 16 Oct 2004 11:39:38 +0000 Subject: [PATCH] sexy functionality : we allow moderators to block mail detected as spam by bogofilter --- htdocs/listes/options.php | 5 ++++- scripts/mailman/mailman-rpc.py | 48 +++++++++++++++++++++++++++++++++++++++++- templates/listes/options.tpl | 12 +++++++++++ 3 files changed, 63 insertions(+), 2 deletions(-) diff --git a/htdocs/listes/options.php b/htdocs/listes/options.php index eab5848..be17c63 100644 --- a/htdocs/listes/options.php +++ b/htdocs/listes/options.php @@ -18,7 +18,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: options.php,v 1.3 2004-10-06 13:23:20 x2000habouzit Exp $ + $Id: options.php,v 1.4 2004-10-16 11:39:38 x2000habouzit Exp $ ***************************************************************************/ if(empty($_REQUEST['liste'])) header('Location: index.php'); @@ -36,7 +36,9 @@ $client = new xmlrpc_client("http://{$_SESSION['uid']}:$pass@localhost:4949"); if(isset($_POST['submit'])) { $values =array_map('stripslashes',$_POST); + $client->set_bogo_level('polytechnique.org', $liste, intval($values['bogo_level'])); unset($values['submit']); + unset($values['bogo_level']); $values['send_goodbye_msg'] = empty($values['send_goodbye_msg']) ? false : true; $values['admin_notify_mchanges'] = empty($values['admin_notify_mchanges']) ? false : true; $values['subscribe_policy'] = empty($values['subscribe_policy']) ? 0 : 2; @@ -54,6 +56,7 @@ if(isset($_POST['submit'])) { if(list($details,$options) = $client->get_owner_options('polytechnique.org', $liste)) { $page->assign_by_ref('details', $details); $page->assign_by_ref('options', $options); + $page->assign('bogo_level', $client->get_bogo_level('polytechnique.org', $liste)); } else $page->assign('no_list', true); diff --git a/scripts/mailman/mailman-rpc.py b/scripts/mailman/mailman-rpc.py index d06bb96..c42024f 100755 --- a/scripts/mailman/mailman-rpc.py +++ b/scripts/mailman/mailman-rpc.py @@ -18,7 +18,7 @@ #* Foundation, Inc., * #* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * #*************************************************************************** -# $Id: mailman-rpc.py,v 1.62 2004-10-16 10:41:32 x2000habouzit Exp $ +# $Id: mailman-rpc.py,v 1.63 2004-10-16 11:39:38 x2000habouzit Exp $ #*************************************************************************** import base64, MySQLdb, os, getopt, sys, MySQLdb.converters, sha @@ -539,6 +539,47 @@ def del_from_wl((userdesc,perms),vhost,listname,addr): mlist.Unlock() return 0 +def get_bogo_level((userdesc,perms),vhost,listname): + try: + mlist = MailList.MailList(vhost+'-'+listname,lock=0) + except: + return 0 + try: + if not is_admin_on(userdesc, perms, mlist): + return 0 + if mlist.header_filter_rules == []: + return 0 + action = mlist.header_filter_rules[0][1] + if action == mm_cfg.HOLD: + return 1 + if action == mm_cfg.DISCARD: + return 2 + except: + return 0 + +def set_bogo_level((userdesc,perms),vhost,listname,level): + try: + mlist = MailList.MailList(vhost+'-'+listname,lock=0) + except: + return 0 + try: + if not is_admin_on(userdesc, perms, mlist): + return 0 + hfr = [] + if int(level) is 1: + hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) + elif int(level) is 2: + hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False)) + if mlist.header_filter_rules != hfr: + mlist.Lock() + mlist.header_filter_rules = hfr + mlist.Save() + mlist.Unlock() + return 1 + except: + mlist.Unlock() + return 0 + #------------------------------------------------------------------------------- # admin procedures [ soptions.php ] # @@ -676,6 +717,9 @@ def create_list((userdesc,perms),vhost,listname,desc,advertise,modlevel,inslevel mlist.max_message_size = 0 mlist.msg_footer = "_______________________________________________\nListe de diffusion %(real_name)s\nhttps://www.polytechnique.org/listes/" + + mlist.header_filter_rules = [] + mlist.header_filter_rules.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) mlist.Save() @@ -758,6 +802,8 @@ server.register_function(get_owner_options) server.register_function(set_owner_options) server.register_function(add_to_wl) server.register_function(del_from_wl) +server.register_function(get_bogo_level) +server.register_function(set_bogo_level) # soptions.php server.register_function(get_admin_options) server.register_function(set_admin_options) diff --git a/templates/listes/options.tpl b/templates/listes/options.tpl index 3e31632..6b72471 100644 --- a/templates/listes/options.tpl +++ b/templates/listes/options.tpl @@ -123,6 +123,18 @@ Tu n'es pas administrateur de la liste, mais du site. {if $options.subscribe_policy eq 2}checked='checked'{/if} /> Inscription modérée. + + + bogo_level :
+ détermine si la politique de l'antispam sur cette liste. + + + que faire des mails « [spam probable] » ?
+ les ignorer + les modérer + les rejeter + +
-- 2.1.4