diff --git a/hbd b/hbd index eefeec7..4221e5f 100755 --- a/hbd +++ b/hbd @@ -2,7 +2,7 @@ # $Id: hbd,v 1.38 2013/07/14 02:25:05 andreas Exp $ # Wait for heartbeat messages and act on them (or their absence) # -VER = 1.62 +VER = 2.00 import time import os @@ -12,6 +12,7 @@ import socket import atexit import select import SocketServer +import BaseHTTPServer import getopt import signal import cPickle @@ -19,6 +20,7 @@ import smtplib import traceback import urllib import httplib +import threading from subprocess import Popen, STDOUT, PIPE @@ -62,11 +64,8 @@ def handler(signum, frame): if verbose: sys.stderr.write("NOT runing signal: %s running: %d" % (sig, running)) sys.exit(2) -# signal.signal(sig, handler) if verbose: sys.stderr.write("signal: %s running: %s frame: %s" % (sig, running, frame)) - running = False -# sys.exit(0) def shortname(name): @@ -168,8 +167,7 @@ def email(s, msg): body = "To: %s\nFrom: %s\nSubject: %s\nDate: %s\n\n%s" % (toaddrs[0], fromaddr, subj, date, msg) try: server = smtplib.SMTP(SMTPSERVER) - if DEBUG > 0: - server.set_debuglevel(1) + if DEBUG > 0: server.set_debuglevel(1) server.sendmail(fromaddr, toaddrs, body) except smtplib.SMTPRecipientsRefused, errs: log("cannot send email: %s\n" % (errs)) @@ -202,7 +200,7 @@ def pushover(msg): # nsupdate: set the DNS A record for a fqdn # return: None if ok, else error text def nsupdate(hostname, newip): - D = {} + u = {} D['domain'] = 'dy.wapanafa.org' D['fqdn'] = '%s.dy.wapanafa.org' % hostname D['dnsttl'] = '5' @@ -278,9 +276,11 @@ def addhost(name, addr): # def on_exit(): - if DEBUG > 0: - sys.stderr.write("on_exit\n") - logf.close() + if DEBUG > 0: sys.stderr.write("on_exit\n") + try: + logf.close() + except: + pass print "exit" @@ -367,11 +367,9 @@ def fromaddr(name, addr, boot, interval, acks): # def readsock(sock): global htab - if DEBUG > 3: - sys.stderr.write("readsock recfrom start") + if DEBUG > 3: sys.stderr.write("readsock recfrom start") data, addr = sock.recvfrom(1024) - if DEBUG > 2: - sys.stderr.write("readsock = %s, %s\n" % (data,addr)) + if DEBUG > 2: sys.stderr.write("readsock = %s, %s\n" % (data,addr)) pairs = string.split(data, ';') boot = 0 shutdown = 0 @@ -455,20 +453,32 @@ def readsock(sock): log("%s command initiated" % name) try: ss=sock.sendto(rmsg, addr) - if DEBUG > 2: - print "msg from %s,%s, sent %s bytes back" % (addr[0], addr[1], ss) + if DEBUG > 2: print "msg from %s,%s, sent %s bytes back" % (addr[0], addr[1], ss) except: pass # # -class HtmlServer(SocketServer.TCPServer): - allow_reuse_address = True -# -# -class HtmlHandler(SocketServer.BaseRequestHandler): +#class HttpServer(BaseHTTPServer.HTTPServer): +class HttpServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): + allow_reuse_address = True + def threaded(): + pass +# +# +class HttpHandler(BaseHTTPServer.BaseHTTPRequestHandler): + + + def do_HEAD(self): + self.send_response(200) + self.send_header("Last-Modified", time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now))) +# self.send_header("Accept-Ranges","bytes") +# self.send_header("Connection","close") + self.send_header("Content-Type","text/html; charset = ISO-8859-1") + self.end_headers() + def buildhead(self, title="Heartbeat", refresh=None): res=[] @@ -508,41 +518,26 @@ class HtmlHandler(SocketServer.BaseRequestHandler): res.append('
%s
' % lcause) res.append('