From a3bba233cd0feaff33bb4fbab2f43ab95f64c73f Mon Sep 17 00:00:00 2001 From: Sergiusz 'q3k' Bazanski Date: Wed, 14 Nov 2012 14:21:50 +0100 Subject: [PATCH] Basic dispatching. --- run.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/run.py b/run.py index 4b93bb5..7b2ba7a 100755 --- a/run.py +++ b/run.py @@ -2,9 +2,45 @@ import sys, logging import tftpy +import re +import cStringIO +import time + +file_hooks = {} +def hook_dispatcher(path): + for pattern, hook in file_hooks.iteritems(): + match = re.match(pattern, path) + if match: + return hook(path, match) + return None + +def hook(pattern): + def decorator(f): + file_hooks[pattern] = f + return f + return decorator + +@hook(r"^pxelinux.cfg/default$") +def pxelinux_default(path, match): + s = """default menu.c32 + prompt 0 + + menu title "Khepri Boot Menu generated at %s" + menu INCLUDE pxelinux.cfg/graphics.conf + MENU AUTOBOOT Starting Xen Node in # seconds + + label xen + menu label ^Xen Node + menu default + timeout 80 + kernel xen/vmlinuz + append rootfstype=nfs root=/dev/nfs nfsroot=10.8.1.1:/var/khepri/nfs/xen,v4,rsize=16384,wsize=16384 ip=:::::eth0:dhcp +""" % time.strftime("%d/%m/%Y at %H:%M:%S") + return cStringIO.StringIO(s) + def main(): - server = tftpy.TftpServer("/var/khepri/tftp-root/") + server = tftpy.TftpServer("/var/khepri/tftp-root/", dyn_file_func=hook_dispatcher) try: server.listen("10.8.1.1", 5000) except tftpy.TftpException, err: