9c01e4
#!/bin/sh
9c01e4
tmp=$(mktemp -d memberaliases.XXXXXXXXXX)
9c01e4
cd "$tmp" || exit 1
9c01e4

9c01e4
nsca_client_name='mx1.infra.opensuse.org'
9c01e4
nsca_client_service='openSUSE virtual_users'
9c01e4
nsca_server_ip='192.168.47.7'
9c01e4
nsca_config='/etc/send_nsca.cfg'
9c01e4
#status_code=3
9c01e4
#status_message='unknown'
9c01e4

9c01e4
send_nsca_message(){
9c01e4
	local status_code="$1"
9c01e4
	local status_message="$2"
9c01e4
	echo -e "$nsca_client_name\t$nsca_client_service\t$status_code\t$status_message" | send_nsca -H $nsca_server_ip -c "$nsca_config"
9c01e4
}
9c01e4

9c01e4
wget -q --timeout=15 --tries=3 -O member.aliases.new \
9c01e4
	'https://connect.opensuse.org/services/api/rest/txt/?method=connect.membersadmin.maildump&api_key=e28d9177fdc1268bc003f2ba6cdbb221ef8f24d8'
9c01e4

9c01e4
# need to make sure it is ordered
9c01e4
LC_ALL=C sort -d -k1 member.aliases.new >member.aliases.ordered
9c01e4

9c01e4
added=$(diff -B /etc/postfix/virtual-opensuse-users member.aliases.ordered | grep ^\> | wc -l)
9c01e4
removed=$(diff -B /etc/postfix/virtual-opensuse-users member.aliases.ordered | grep ^\< | wc -l)
9c01e4
total=$(wc -l 
9c01e4

9c01e4
# if too many would be removed, something's probably wrong.
9c01e4
if test $removed -gt 20
9c01e4
then
9c01e4
        printf "New member-aliases list (%u entries) would remove %u aliases ?\n" $total $removed
9c01e4
	send_nsca_message "1" "New member-aliases list ($total entries)  would remove $removed aliases | total=$total; added=$added; removed=$removed;"
9c01e4
	# tidy up
9c01e4
	rm -Rf "$tmp"
9c01e4
        exit 1
9c01e4
fi
9c01e4

9c01e4
# if we had any changes, update our alias list
9c01e4
if test $added -gt 0 -o $removed -gt 0
9c01e4
then
9c01e4
        printf "virtual-opensuse-users updated: %u additions, %u removals, now %u entries\n" $added $removed $total
9c01e4
        send_nsca_message "0" "virtual-opensuse-users updated: $added additions, $removed removals, now $total entries | total=$total; added=$added; removed=$removed;"
9c01e4
	# debug
9c01e4
	diff -B /etc/postfix/virtual-opensuse-users member.aliases.ordered
9c01e4

9c01e4
	mv member.aliases.ordered /etc/postfix/virtual-opensuse-users
9c01e4
        postmap /etc/postfix/virtual-opensuse-users
9c01e4
        postfix reload
9c01e4
else
9c01e4
#        printf "virtual-opensuse-users not updated, no changes found.\n"
9c01e4
        send_nsca_message "0" "virtual-opensuse-users not updated, no changes found | total=$total; added=$added; removed=$removed;" >/dev/null
9c01e4
fi
9c01e4

9c01e4
# tidy up
9c01e4
rm -Rf "$tmp"