#!/usr/bin/env python
# vim: set encoding=utf-8 et sw=4 sts=4 :
+import sys
+import logging ; log = logging.getLogger('pymind')
+# First of all, we need to setup the logging framework
+# FIXME: this should go in a configuration file
+logging.basicConfig(
+ level = logging.DEBUG,
+ format = '%(asctime)s %(name)-24s %(levelname)-8s %(message)s',
+ datefmt = '%a, %d %b %Y %H:%M:%S',
+)
+
from pymin.pymindaemon import PyminDaemon
+from pymin.dispatcher import Handler
+from pymin.service import load_service, LoadError
import config
-PyminDaemon(config.Root(), config.bind_addr).run()
+# exit status
+EXIT_NO_SERVICE = 1
+
+class Root(Handler):
+ pass
+
+def build_root(config):
+ # TODO check services dependencies
+ services = dict()
+ for service in config.services:
+ try:
+ s = load_service(service, config.services_dirs)
+ except LoadError, e:
+ log.error("Can't find service called '%s'\n", service)
+ sys.exit(EXIT_NO_SERVICE)
+ services[service] = s
+ root = Root()
+ for name, service in services.items():
+ setattr(root, name, service.get_service(config))
+ return root
+
+# FIXME
+try:
+ f = file("/proc/sys/net/ipv4/ip_forward","w")
+ f.write("1")
+ f.close()
+except (IOError, OSError), e:
+ log.warning("Can't set ip_forward: %s", e)
+
+PyminDaemon(build_root(config), config.bind_addr).run()