Below is the file 'service.py' from this revision. You can also download the file.
#!/usr/bin/python import os import sys import service import syslog import traceback from ZSI import dispatch from mod_python import apache mod = __import__('encodings.utf_8', globals(), locals(), '*') mod = __import__('encodings.utf_16_be', globals(), locals(), '*') ## soap methods def plugin_results(results): syslog.syslog("results=%s" % str(results)) return [] def handler(req): dispatch.AsHandler(modules=(service,), request=req) return apache.OK ## end soap methods def authenhandler(req): passphrase_file = '/home/grahame/monotone/phonehome/passphrases' passphrases = {} for line in open(passphrase_file): line = line.strip() if not line: continue fields = line.split() passphrases[fields[0]] = fields[1] remote_host = req.get_remote_host(apache.REMOTE_NOLOOKUP) pw = req.get_basic_auth_pw() syslog.syslog("auth attempt: %s %s" % (remote_host, pw)) if not passphrases.has_key(remote_host): return apache.HTTP_UNAUTHORIZED if pw == passphrases[remote_host]: return apache.OK else: return apache.HTTP_UNAUTHORIZED