diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2011-04-24 11:38:37 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2011-04-24 11:38:37 -0400 |
| commit | 31d5c3bc03fd50c076026c4954a1cdb5bcef40b0 (patch) | |
| tree | 52da868b151e0a135ddeaff92b5de33de8815a7a /server/alias.py | |
| parent | b0a365ec96927f6076e08004ec2a73f1eb83370d (diff) | |
| download | alias-31d5c3bc03fd50c076026c4954a1cdb5bcef40b0.tar.gz | |
Plugged the logging facility into the daemon.
need more work, think it's broken as it is.
Diffstat (limited to 'server/alias.py')
| -rw-r--r-- | server/alias.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/server/alias.py b/server/alias.py new file mode 100644 index 0000000..ae3d191 --- /dev/null +++ b/server/alias.py @@ -0,0 +1,74 @@ +#!/usr/bin/python2 +import logging +from argparse import ArgumentParser +from config import filename, config +import daemon +import daemon.pidfile +from server import ObjectComponent + +if __name__ == '__main__': + commandline = ArgumentParser(description = 'Connect the alias \ + component to a given server') + commandline.add_argument('-p', '--port', + help = 'Port to connect to', + type = int) + commandline.add_argument('-s', '--secret', + help = 'password') + commandline.add_argument('-n', '--name', + help = 'Name the component will have') + commandline.add_argument('-r', '--root', + help = 'Root directory of the user files') + commandline.add_argument('-c', '--config', + help = 'Name of the config file to use') + commandline.add_argument('-d', '--debug', + help = 'Set log level to DEBUG', + action = 'store_const', + const = logging.DEBUG, + default = logging.INFO) + commandline.add_argument('-o', '--host', + help = 'Host to connect to') + commandline.add_argument('-b', '--background', + help = 'run the server in the background', + action = 'store_true') + commandline.add_argument('--logfile', + help = 'location of the log file (default /var/log/${name}.log', + action = 'store_const') + commandline.add_argument('--pidfile', + help = 'location of the pid file (default /var/run/${name}.pid', + action = 'store_const') + + args = commandline.parse_args() + + if args.config is None: + logging.basicConfig(level = args.debug) + config.name = args.name + config.port = args.port + config.secret = args.secret + config.root = args.root + config.host = args.host + config.background = args.background + config.logfile = args.logfile + config.pidfile = args.pidfile + else: + filename = args.config + logging.basicConfig(level = args.debug) + config.read(filename) + + logger = logging.getLogger("DaemonLog") + logger.setLevel(logging.INFO) + formatter = logging.Formatter( +"%(asctime)s - %(name)s - %(levelname)s - %(message)s") + handler = logging.FileHandler(config.logfile) + logger.addHandler(handler) + context = daemon.DaemonContext(detach_process = config.background, + pidfile = daemon.pidfile.TimeoutPIDLockFile(config.pidfile,10), + files_preserve=[handler.stream]) + with context: + component = ObjectComponent(config.name, config.secret, + config.host, config.port, + config.root) + if component.connect(): + logging.info('Component {} connected'.format(component.boundjid)) + component.process(False) + else: + logging.error("Component {} couldn't connect".format(component.boundjid))
\ No newline at end of file |
