FMLのメンバー管理コマンドの自動生成

 お仕事では、メーリングリストをFMLで運用しています。

ML管理者として登録された人は、コマンドメールを使ってリストのメンバー更新ができるのがありがたい機能。

しかしながら、このメンバー管理が曲者で、メンバーリストからメンバーを削除しても、その記録が延々と残る仕様です。このため、メーリングリストの利用期間が長くなるにつれ、メンバーリストがだんだんと太ってきます。

このため、メンバーを更新しようとしたときに、メンバーが登録もしくは削除済みなのかを目視でメンバーリストを点検して把握することが大変になってきました。

あまりに大変なので、自動チェックのWebページをつくりました。

左上のフォームに設定したいメンバーのリスト、左下のフォームに現在のメンバーリスト(設定直前にadmin membersで取得したもの)を入力し、Generateボタンをクリックすると右側にコマンドメールに書くべきコマンドが表示されます。これをメーリングリスト名にctlをつけた宛先にメールすればよい。というものです。


(参考)perlです。

@tg=("taro@foo.com","jiro@bar.com");    #新しいメンバーリスト
@cu=("ichiro@foo.com","jiro@bar.com");  #members で取得した現在のリスト

sub checkAssoc {
    my (@ad)= @_;
    my (%reg)=();

    foreach $ad (@ad) {
            $reg{$ad}=1;
    }
    return %reg;
}

%tg = checkAssoc(@tg);#メアドをキーとする連想配列を作る
%cu = checkAssoc(@cu);
@cmd=();
#----- bye ---- 現在のリストの項目のうち、新しいリストに含まれないものは削除するコマンドを追加
foreach $ad (@cu) {
    next if $tg{$ad};
    push(@cmd,"admin bye $ad\n");
}
#----- add ---- 新しいのリストの項目のうち、現在のリストに含まれないものを追加するコマンドを追加
foreach $ad (@tg) {
    next if $cu{$ad};
    push(@cmd,"admin add $ad\n");
}
$cmd = join('',@cmd); # "admin bye ichiro@foo.com admin add taro@foo.com"

コメント

このブログの人気の投稿

SwiftUIでカスタム地図を表示する(その2)

SwiftUIでカスタム地図を表示する(その1)

カーメン君のガーデンチャンネル「萌木の村」