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