#!/usr/bin/env python
# $Id: hbc,v 1.1 2005/07/14 19:28:59 andreas Exp $
import sys, time, socket, os, signal

ADDR="204.29.161.33"
#ADDR="10.99.1.4"
PORT=50003
INTERVAL=20

def handler(signum, frame):
	global up
	if signum == 1:
		os.execv("/usr/bin/env", ["python", sys.argv[0],"relaunch"])
	if up == 0:
		return
	sys.exit(0)
iam=socket.gethostname()
sock=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
msg="interval=%s;name=%s" % (INTERVAL, iam)

if len(sys.argv) <= 1 or sys.argv[1] != "relaunch":
	msgboot="boot=1;interval=%s;name=%s" % (INTERVAL, iam)
	while 1:
		try:
			sock.sendto(msgboot, (ADDR, PORT))
			break
		except:
			time.sleep(10)
	
up=1
signal.signal(signal.SIGTERM, handler)
signal.signal(signal.SIGHUP, handler)

while up:
	try:
		time.sleep(10)
	except:
		break
	try:
		sock.sendto(msg, (ADDR, PORT))
	except:
		pass

up=0
msg="shutdown=1;name=%s" % (iam)
sock.sendto(msg, (ADDR, PORT))
time.sleep(1)
sock.close()
