X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=bin%2Flists.rpc.py;h=bb2353d86b49367514a68d39e214ffc1ae9e5acb;hb=28023828aec24a8a8dc08787b6223e8fef2f4909;hp=e1fe3c582e9f3e5ba00ba1bd1b600ed5b50489c9;hpb=720a960d29388e5c549ca753088618548a4172c4;p=platal.git diff --git a/bin/lists.rpc.py b/bin/lists.rpc.py index e1fe3c5..bb2353d 100755 --- a/bin/lists.rpc.py +++ b/bin/lists.rpc.py @@ -52,6 +52,7 @@ class AuthFailed(Exception): pass #------------------------------------------------ config = ConfigParser.ConfigParser() +config.read(os.path.dirname(__file__)+'/../configs/platal.ini') config.read(os.path.dirname(__file__)+'/../configs/platal.conf') def get_config(sec, val, default=None): @@ -190,7 +191,7 @@ def to_forlife(email): return res else: return (None, None) - return (email, mbox) + return (email.lower(), mbox) ## # see /usr/lib/mailman/bin/rmlist @@ -294,7 +295,7 @@ def get_lists(userdesc, perms, vhost, email=None): if email is None: udesc = userdesc else: - udesc = UserDesc(email, email, None, 0) + udesc = UserDesc(email.lower(), email.lower(), None, 0) prefix = vhost.lower()+VHOST_SEP names = Utils.list_names() names.sort() @@ -390,6 +391,23 @@ def get_owners(userdesc, perms, vhost, listname): # owners procedures [ admin.php ] # +def replace_email(userdesc, perms, vhost, listname, from_email, to_email): + try: + mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) + except: + return 0 + try: + if not is_admin_on(userdesc, perms, mlist): + return 0 + + mlist.Lock() + mlist.ApprovedChangeMemberAddress(from_email.lower(), to_email.lower(), 0) + mlist.Save() + mlist.Unlock() + return 1 + except: + return 0 + def mass_subscribe(userdesc, perms, vhost, listname, users): try: mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) @@ -559,17 +577,23 @@ def get_pending_mail(userdesc, perms, vhost, listname, id, raw=0): if raw: return str(msg) - results = [] + results_plain = [] + results_html = [] for part in typed_subpart_iterator(msg, 'text', 'plain'): c = part.get_payload() - if c is not None: results.append (c) - results = map(lambda x: quote(x), results) + if c is not None: results_plain.append (c) + results_plain = map(lambda x: quote(x), results_plain) + for part in typed_subpart_iterator(msg, 'text', 'html'): + c = part.get_payload() + if c is not None: results_html.append (c) + results_html = map(lambda x: quote(x), results_html) return {'id' : id, 'sender': quote(sender, True), 'size' : size, 'subj' : quote(subject, True), 'stamp' : ptime, - 'parts' : results } + 'parts_plain' : results_plain, + 'parts_html': results_html } except: mlist.Unlock() return 0 @@ -633,11 +657,15 @@ def get_bogo_level(userdesc, perms, vhost, listname): 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: + try: + action = mlist.header_filter_rules[1][1] return 2 + except: + action = mlist.header_filter_rules[0][1] + if action == mm_cfg.HOLD: + return 1 + if action == mm_cfg.DISCARD: + return 3 except: return 0 @@ -653,6 +681,9 @@ def set_bogo_level(userdesc, perms, vhost, listname, level): 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, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False)) + hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) + elif int(level) is 3: hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False)) if mlist.header_filter_rules != hfr: mlist.Lock() @@ -807,8 +838,10 @@ def create_list(userdesc, perms, vhost, listname, desc, advertise, modlevel, ins mlist.subject_prefix = '['+listname+'] ' mlist.max_message_size = 0 + inverted_listname = '_'.join(listname.split('_', 1)[-1::-1]) mlist.msg_footer = "_______________________________________________\n" \ - + "Liste de diffusion %(real_name)s\n" + + "Liste de diffusion %(real_name)s\n" \ + + "http://listes.polytechnique.org/members/" + inverted_listname mlist.header_filter_rules = [] mlist.header_filter_rules.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) @@ -817,6 +850,10 @@ def create_list(userdesc, perms, vhost, listname, desc, advertise, modlevel, ins mlist.Unlock() + if ON_CREATE_CMD != '': + try: os.system(ON_CREATE_CMD + ' ' + name) + except: pass + check_options(userdesc, perms, vhost, listname.lower(), True) mass_subscribe(userdesc, perms, vhost, listname.lower(), members) @@ -825,9 +862,6 @@ def create_list(userdesc, perms, vhost, listname, desc, advertise, modlevel, ins mlist._UpdateRecords() mlist.Save() mlist.Unlock() - if ON_CREATE_CMD != '': - try: os.system(ON_CREATE_CMD + ' ' + name) - except: pass except: try: mlist.Unlock() @@ -936,6 +970,7 @@ server.register_function(get_members) server.register_function(get_members_limit) server.register_function(get_owners) # admin.php +server.register_function(replace_email) server.register_function(mass_subscribe) server.register_function(mass_unsubscribe) server.register_function(add_owner)