#!/usr/bin/env python3

# 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)
