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"
コメント
コメントを投稿