From 6bd19f91b98517af02a3dae766d49c1610967815 Mon Sep 17 00:00:00 2001 From: "jimpop@template.hostname" <> Date: Wed, 4 Nov 2015 21:09:42 +0000 Subject: Auto-Moderate Verbose Members --- Mailman/Utils.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'Mailman/Utils.py') diff --git a/Mailman/Utils.py b/Mailman/Utils.py index f22e45b4..516514ac 100644 --- a/Mailman/Utils.py +++ b/Mailman/Utils.py @@ -1246,6 +1246,32 @@ def IsDMARCProhibited(mlist, email): return False +# Check a known list in order to auto-moderate verbose members +recentMemberPostings = {}; +def IsVerboseMember(mlist, email): + + threshold = 5 if mlist.member_verbosity_threshold is None else mlist.member_verbosity_threshold + if threshold == 0: + return False + + interval = 5 if mlist.member_verbosity_interval is None else mlist.member_verbosity_interval + email = email.lower() + + t = time.time() + recentMemberPostings.setdefault(email,[]).append(t) + + syslog('vette', 'DEBUG: %s: Appended %f to recentMemberPostings[%s] (%d).', + mlist.real_name, t, email, len(recentMemberPostings[email])) + + for t in recentMemberPostings[email]: + if t < time.time() - float(interval): + recentMemberPostings[email].remove(t) + syslog('vette', 'DEBUG: %s: Removed %f from recentMemberPostings[%s] (%d).', + mlist.real_name, t, email, len(recentMemberPostings[email])) + + return len(recentMemberPostings[email]) >= threshold + + def check_eq_domains(email, domains_list): """The arguments are an email address and a string representing a list of lists in a form like 'a,b,c;1,2' representing [['a', 'b', -- cgit v1.2.3 From a777ae450ed966ca75f22c140fee938c5fd37996 Mon Sep 17 00:00:00 2001 From: "jimpop@template.hostname" <> Date: Wed, 4 Nov 2015 21:43:43 +0000 Subject: Removed 2 development debugging lines --- Mailman/Utils.py | 5 ----- 1 file changed, 5 deletions(-) (limited to 'Mailman/Utils.py') diff --git a/Mailman/Utils.py b/Mailman/Utils.py index 516514ac..a4eb05da 100644 --- a/Mailman/Utils.py +++ b/Mailman/Utils.py @@ -1260,14 +1260,9 @@ def IsVerboseMember(mlist, email): t = time.time() recentMemberPostings.setdefault(email,[]).append(t) - syslog('vette', 'DEBUG: %s: Appended %f to recentMemberPostings[%s] (%d).', - mlist.real_name, t, email, len(recentMemberPostings[email])) - for t in recentMemberPostings[email]: if t < time.time() - float(interval): recentMemberPostings[email].remove(t) - syslog('vette', 'DEBUG: %s: Removed %f from recentMemberPostings[%s] (%d).', - mlist.real_name, t, email, len(recentMemberPostings[email])) return len(recentMemberPostings[email]) >= threshold -- cgit v1.2.3 From b8811f8fc2d9bd27d1963c000ddaf05d951b5bda Mon Sep 17 00:00:00 2001 From: "jimpop@template.hostname" <> Date: Wed, 4 Nov 2015 22:49:05 +0000 Subject: Improvements based on feedback from Mark Sapiro https://code.launchpad.net/~jimpop/mailman/mailman-auto-mod-verbose-members/+merge/276706/comments/699744 --- Mailman/Utils.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'Mailman/Utils.py') diff --git a/Mailman/Utils.py b/Mailman/Utils.py index a4eb05da..70ef34e8 100644 --- a/Mailman/Utils.py +++ b/Mailman/Utils.py @@ -1250,21 +1250,19 @@ def IsDMARCProhibited(mlist, email): recentMemberPostings = {}; def IsVerboseMember(mlist, email): - threshold = 5 if mlist.member_verbosity_threshold is None else mlist.member_verbosity_threshold - if threshold == 0: + if mlist.member_verbosity_threshold == 0: return False - interval = 5 if mlist.member_verbosity_interval is None else mlist.member_verbosity_interval email = email.lower() t = time.time() recentMemberPostings.setdefault(email,[]).append(t) for t in recentMemberPostings[email]: - if t < time.time() - float(interval): + if t < time.time() - float(mlist.member_verbosity_interval): recentMemberPostings[email].remove(t) - return len(recentMemberPostings[email]) >= threshold + return len(recentMemberPostings[email]) >= mlist.member_verbosity_threshold def check_eq_domains(email, domains_list): -- cgit v1.2.3