Skip to content
Snippets Groups Projects
Commit 3002d924 authored by taggart's avatar taggart
Browse files

add cron mode for bulk detect that autocloses lists and gives us a report

parent b56abec7
Branches
No related tags found
No related merge requests found
......@@ -3,9 +3,27 @@
# taggart 2019-06
$log='/var/log/sympa/wwsympa.log';
$close = 5000;
$warn = 1000;
# if -c flag, run as a cronjob otherwise report only
if ( $ARGV[0] eq '-c' ) {
$cron = 1;
}
open(LOG, "$log") or die "cannot open log\n";
# load list status into hash
$sql=qq(mysql -N --batch --database=sympa --execute "select name_list, status_list from list_table;");
open(SQL, "$sql|") or die "cannot get dump of bouncers\n";
while (<SQL>) {
chomp;
($name,$status) = split(/\t/);
$lists{$name} = $status;
}
while (<LOG>) {
chomp;
if ( m/.*\[user (.*)\] \[list (.*)\] main::do_add\(\) do_add:(.+)/ ) {
......@@ -16,23 +34,44 @@ while (<LOG>) {
}
format Foo =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>
$owner, $list $count
@>>>>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$count, $list, $status,$owner
.
# set output format
$~= 'Foo';
# print header
$owner = 'Owner adding';
$list = 'List';
$count = 'Add';
write;
$list = 'List';
$status = 'Status';
$owner = 'Owner adding';
if (! $cron ) {
write;
}
foreach $key ( sort { $result{$b} <=> $result{$a} } keys %result) {
($owner,$list) = split /:/,$key;
$count = $result{$key};
write;
$status = $lists{$list};
if ( $cron ) {
if ( $status eq 'open' ) {
if ( $result{$key} > $close ) {
# close
print "$list is $count, autoclosing\n";
`sympa.pl --close_list=$list\@lists.riseup.net` or die "cannot close $list\n";
} elsif ($result{$key} > $warn ) {
# warn
print "$list is $count, send them a warning\n";
} else {
last;
}
}
} else {
write;
}
}
## Notes
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment