X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=bin%2Flists.rpc.py;h=aac5a23b0cb365e5c691adfa679560d872a0e0d1;hb=d6f36edabab69a41fa5ba8843bb3d7233ea3bf23;hp=bb2353d86b49367514a68d39e214ffc1ae9e5acb;hpb=4988c5a9e1ad17b3b6ee904768e55906e5719a72;p=platal.git diff --git a/bin/lists.rpc.py b/bin/lists.rpc.py index bb2353d..aac5a23 100755 --- a/bin/lists.rpc.py +++ b/bin/lists.rpc.py @@ -171,8 +171,8 @@ def quote(s, is_header=False): h = Utils.oneline(s, 'iso-8859-1') else: h = s - h = str('').join(re.split('[\x00-\x09\x0B-\x1f]+', h)) - return Utils.uquote(h.replace('&', '&').replace('>', '>').replace('<', '<')) + h = str('').join(re.split('[\x00-\x08\x0B-\x1f]+', h)) + return Utils.uquote(h.replace('&', '&').replace('>', '>').replace('<', '<')) def to_forlife(email): try: @@ -355,6 +355,12 @@ def unsubscribe(userdesc, perms, vhost, listname): # users procedures for [ index.php ] # +def get_name(member): + try: + return quote(mlist.getMemberName(member)) + except: + return '' + def get_members(userdesc, perms, vhost, listname): try: mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) @@ -363,7 +369,7 @@ def get_members(userdesc, perms, vhost, listname): try: details, members = get_list_info(userdesc, perms, mlist) members.sort() - members = map(lambda member: (quote(mlist.getMemberName(member)) or '', member), members) + members = map(lambda member: (get_name(member), member), members) return (details, members, mlist.owner) except: return 0 @@ -541,7 +547,6 @@ def get_pending_ops(userdesc, perms, vhost, listname): return 0 return (subs, helds) - def handle_request(userdesc, perms, vhost, listname, id, value, comment): try: mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) @@ -559,6 +564,30 @@ def handle_request(userdesc, perms, vhost, listname, id, value, comment): mlist.Unlock() return 0 +def get_pending_sub(userdesc, perms, vhost, listname, id): + 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() + sub = 0 + id = int(id) + if id in mlist.GetSubscriptionIds(): + time, addr, fullname, passwd, digest, lang = mlist.GetRecord(id) + try: + login = re.match("^[^.]*\.[^.]*\.\d\d\d\d$", addr.split('@')[0]).group() + sub = {'id': id, 'name': quote(fullname), 'addr': addr, 'login': login } + except: + sub = {'id': id, 'name': quote(fullname), 'addr': addr } + mlist.Unlock() + except: + mlist.Unlock() + return 0 + return sub def get_pending_mail(userdesc, perms, vhost, listname, id, raw=0): try: @@ -576,7 +605,7 @@ def get_pending_mail(userdesc, perms, vhost, listname, id, raw=0): mlist.Unlock() if raw: - return str(msg) + return quote(str(msg)) results_plain = [] results_html = [] for part in typed_subpart_iterator(msg, 'text', 'plain'): @@ -658,10 +687,10 @@ def get_bogo_level(userdesc, perms, vhost, listname): if mlist.header_filter_rules == []: return 0 try: - action = mlist.header_filter_rules[1][1] + action = mlist.header_filter_rules[2][1] return 2 except: - action = mlist.header_filter_rules[0][1] + action = mlist.header_filter_rules[1][1] if action == mm_cfg.HOLD: return 1 if action == mm_cfg.DISCARD: @@ -679,11 +708,14 @@ def set_bogo_level(userdesc, perms, vhost, listname, level): return 0 hfr = [] if int(level) is 1: + hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) elif int(level) is 2: + hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) 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: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False)) if mlist.header_filter_rules != hfr: mlist.Lock() @@ -758,8 +790,9 @@ check_opts = { } def check_options(userdesc, perms, vhost, listname, correct=False): + listname = listname.lower() try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) + mlist = MailList.MailList(vhost+VHOST_SEP+listname, lock=0) except: return 0 try: @@ -838,7 +871,7 @@ 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]) + inverted_listname = listname.lower() + '_' + vhost.lower() mlist.msg_footer = "_______________________________________________\n" \ + "Liste de diffusion %(real_name)s\n" \ + "http://listes.polytechnique.org/members/" + inverted_listname @@ -978,6 +1011,7 @@ server.register_function(del_owner) # moderate.php server.register_function(get_pending_ops) server.register_function(handle_request) +server.register_function(get_pending_sub) server.register_function(get_pending_mail) # options.php server.register_function(get_owner_options)