#!/usr/bin/env python

# Monitor Interfaces, send hb msg when add changes
import time
import os

SLEEP = 60
SRV = "colo2.wapanafa.org"
DBG = 0

home = os.environ.get('HOME', '/var/tmp')
HBC = "%s/bin/hbc" % home

IFS = []
f = os.popen('/sbin/ifconfig -a 2>/dev/null', 'r')
for l in f.readlines():
	if len(l) > 1 and not l[0] in [' ', '\t']:
		r = l.split()
		if DBG:
			print r
		if r[0][-1] == ':':
			r[0] = r[0][:-1]
		if r[0][:2] == 'lo':
			continue
		IFS.append(r[0])
if DBG:
	print IFS
addrs = {}
for I in IFS:
	addrs[I] = ""

while 1:

	for I in IFS:
		f = os.popen('/sbin/ifconfig %s 2>/dev/null' % I, 'r')
		ifaddrs = []
		for l in f.readlines():
			r = l.split()
			if DBG > 1:
				print "x2", r
			if len(r) == 0 or (r[0] != 'inet' and r[0] != 'inet6'):
				continue
			if r[1].find('addr:') == 0:
				ifaddr = r[1][5:]
			else:
				ifaddr = r[1]
			ifaddrs.append(ifaddr)

		if ifaddrs != [] and ifaddrs != addrs[I]:
			msg = '%s -m "ifadd %s %s" %s' % (HBC, I, ",".join(ifaddrs), SRV)
			if DBG:
				print msg
			else:
				os.system(msg)
			addrs[I] = ifaddrs
		f.close()

	time.sleep(SLEEP)
