#!/bin/sh
#
# Author: Petter Reinholdtsen
# Date:   2007-09-12
#
# List mailing lists stats in munin format for graphing

majlister="annonsering pressemelding"
mmlister="$(/usr/lib/mailman/bin/list_lists -b)"

listdir=/usr/local/majordomo/lists

list_subscribers() {
    liste=$1
    case $liste in
        annonsering|pressemelding)
            if [ ! -s $listdir/$liste ] && [ -f $listdir/$liste.remail ] ; then
                cat $listdir/$liste.remail
            else
                cat $listdir/$liste
            fi
            ;;
        # Mailman lists
        *)
            /usr/lib/mailman/bin/list_members $liste
            ;;
    esac
}

# Copied from munin
clean_fieldname () {
    # Clean up field name so it complies with munin requirements.
    #
    # usage: name="$(clean_fieldname "$item")"
    #
    echo "$@" | sed -e 's/^[^A-Za-z_]/_/' -e 's/[^A-Za-z0-9_]/_/g'
}

config() {
    cat <<EOF
graph_category NUUG
graph_title Mailing list subscriber count
graph_args --base 1000 -l 0
graph_vlabel subscribers
graph_scale no
EOF
    for list in $majlister $mmlister ; do
	name=$(clean_fieldname $list)
	echo "$name.label $list"
    done
}

values() {
    for list in $majlister $mmlister ; do
	name=$(clean_fieldname $list)
	count=$(list_subscribers $list | wc -l)
	echo "$name.value $count"
    done
}

case "$1" in
    autoconf)
	echo "yes"
	;;
    config)
	config
	;;
    *)
	values
	;;
esac
