diff --git a/scripts/adherents/mailman/dir2mailman.pl b/scripts/adherents/mailman/dir2mailman.pl new file mode 100755 index 00000000000..cb7b7346f75 --- /dev/null +++ b/scripts/adherents/mailman/dir2mailman.pl @@ -0,0 +1,86 @@ +#!/usr/bin/perl + +# Copyright (C) 2003 Jean-Louis BERGAMO +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Ce script va lire les adresse contenu dans le repertoire donne en +# argument, et va rajouter ou supprimer ces adresses des listes qu'on +# lui a donne en argument (ou qu'il recupere dans la table des +# constantes) + +use DBI; +use strict; +# get the command line option +use Getopt::Long; + +# command line option hash table +my %optctl=(); +# get command line options +GetOptions(\%optctl,"help!","dir=s"); +if (defined $optctl{'help'}){ + &usage(); +} +my $dir=$optctl{'dir'}||&usage(); +my @lists=(); +my @emails=(); + +opendir(DIR, $dir) || die "can't opendir $dir: $!"; +@lists=grep { /^[^.]/ && -d "$dir/$_" } readdir(DIR); +closedir DIR; +print join(',',@lists),"\n"; + +foreach my $list (@lists){ + my $subdir='subscribe'; + if(opendir(DIR, "$dir/$list/$subdir")){ + @emails=grep { /^[^.].+\@/ && -f "$dir/$list/$subdir/$_" } readdir(DIR); + closedir DIR; + } + if (@emails){ + foreach my $mail(@emails){ + print "register $mail: echo $mail | /usr/sbin/add_members -n - $list\n"; + if (system("echo $mail | /usr/sbin/add_members -n - $list")){ + warn "can't execute echo $mail | /usr/sbin/add_members -n - $list : $!\n"; + }else{ + unlink("$dir/$list/$subdir/$mail"); + } + } + } + @emails=(); + $subdir='unsubscribe'; + if(opendir(DIR, "$dir/$list/$subdir")){ + @emails=grep { /^[^.].+\@/ && -f "$dir/$list/$subdir/$_" } readdir(DIR); + closedir DIR; + } + if (@emails){ + foreach my $mail(@emails){ + print "unsubscribe $mail : /usr/sbin/remove_members $list $mail\n"; + if (system("/usr/sbin/remove_members $list $mail")){ + warn "can't execute /usr/sbin/remove_members $list $mail : $!\n"; + }else{ + unlink("$dir/$list/$subdir/$mail"); + } + } + } +} +exit; + +sub usage{ + print "$0 [--help] --dir=directory \n"; + print " directory is the directory where email are stored."; + print ""; + exit (1); +} +