#!/bin/sh
#
# Script to remove subscribers on medlemmer@ automatically from
# interesserte@, to avoid duplicate delivery.

ACTIVE=false

bindir=$(dirname $0)

listdir=/usr/local/majordomo/lists
tmpdir=/tmp

listmembers() {
    case "$1" in
	*)
	    /usr/lib/mailman/bin/list_members -p $1
	    ;;
    esac
}

run() {
    echo $@
    if [ true = "$ACTIVE" ] ; then
	$@
    fi
}

tomajordomo() {
    echo $@
    if [ true = "$ACTIVE" ] ; then
	echo $@ | mail majordomo@nuug.no
    fi
}

append_to_interesserte() {
    addr=$1
    echo $addr >> $tmpdir/interesserte.sort && \
	sort $tmpdir/interesserte.sort > $tmpdir/interesserte.sort.new && \
	mv $tmpdir/interesserte.sort.new $tmpdir/interesserte.sort
}

$bindir/medlemsliste-dump -mei | sort -u > $tmpdir/memberaddrs.txt

listmembers interesserte | sort -u > $tmpdir/interesserte.sort
listmembers medlemmer   | sort -u > $tmpdir/medlemmer.sort

# First, add new addresses from the member database
for addr in `comm -23 $tmpdir/memberaddrs.txt $tmpdir/medlemmer.sort` ; do
    run "echo $addr | /usr/lib/mailman/bin/add_members -r - medlemmer"
done

# Next, migrade ex- and non-memberdb addresses to interesserte@
for list in medlemmer interesserte ; do 
    for addr in $(comm -13 $tmpdir/memberaddrs.txt $tmpdir/medlemmer.sort) ; do
	case $list in
	    interesserte)
		if grep -q "^$addr\$" $tmpdir/interesserte.sort ; then
		    :
		else
		    run "echo $addr | /usr/lib/mailman/bin/add_members -r - interesserte"
		    append_to_interesserte $addr
		fi
		;;
	    medlemmer)
	        run /usr/lib/mailman/bin/remove_members medlemmer $addr
		;;
	esac
    done
done

# Last, remove members from interesserte@, as they receive the same
# messages through medlemmer@.
for addr in `comm -12 $tmpdir/interesserte.sort $tmpdir/memberaddrs.txt` ; do
    run "/usr/lib/mailman/bin/remove_members interesserte $addr"
done

rm $tmpdir/memberaddrs.txt $tmpdir/medlemmer.sort $tmpdir/interesserte.sort
