diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/alias.py | 39 | ||||
| -rw-r--r-- | server/config.py | 8 | ||||
| -rw-r--r-- | server/object.py | 11 | ||||
| -rw-r--r-- | server/plugin.py | 3 | ||||
| -rwxr-xr-x | server/server.py | 6 | ||||
| -rw-r--r-- | server/user.py | 3 |
6 files changed, 41 insertions, 29 deletions
diff --git a/server/alias.py b/server/alias.py index ae3d191..8d75ec2 100644 --- a/server/alias.py +++ b/server/alias.py @@ -1,10 +1,12 @@ #!/usr/bin/python2 import logging from argparse import ArgumentParser -from config import filename, config +from config import config import daemon import daemon.pidfile from server import ObjectComponent +import os.path +import sys if __name__ == '__main__': commandline = ArgumentParser(description = 'Connect the alias \ @@ -31,16 +33,12 @@ if __name__ == '__main__': 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') + help = 'location of the log file (default /var/log/${name}.log') commandline.add_argument('--pidfile', - help = 'location of the pid file (default /var/run/${name}.pid', - action = 'store_const') - + help = 'location of the pid file (default /var/run/${name}.pid') 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 @@ -51,24 +49,31 @@ if __name__ == '__main__': 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") + if config.logfile is None: + config.logfile = os.path.join('/var/log/', config.name + '.log') + if config.pidfile is None: + config.pidfile = os.path.join('/var/run/', config.name + '.pid') + + #set up the logger handler = logging.FileHandler(config.logfile) + formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") + handler.setFormatter(formatter) + + logger = logging.getLogger("alias") + logger.setLevel(args.debug) logger.addHandler(handler) + import pdb; pdb.set_trace() context = daemon.DaemonContext(detach_process = config.background, pidfile = daemon.pidfile.TimeoutPIDLockFile(config.pidfile,10), - files_preserve=[handler.stream]) + files_preserve=[handler.stream.fileno()], + stdout=sys.stdout, stderr=sys.stderr) with context: component = ObjectComponent(config.name, config.secret, config.host, config.port, config.root) - if component.connect(): - logging.info('Component {} connected'.format(component.boundjid)) + if component.connect(): + logger.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 + logger.error("Component {} couldn't connect".format(component.boundjid)) diff --git a/server/config.py b/server/config.py index 755477b..ab9be52 100644 --- a/server/config.py +++ b/server/config.py @@ -1,16 +1,16 @@ import ConfigParser -filename = None - class AliasConfigParser(ConfigParser.RawConfigParser): - def read(self, filenames): - ConfigParser.RawConfigParser.read(self, filenames) + def read(self, filename): + ConfigParser.RawConfigParser.read(self, filename) self.name = self.get("component", "name") self.root = self.get("component", "root") self.host = self.get("component", "host") self.secret = self.get("component", "secret") self.port = self.getint("component", "port") self.background = self.getboolean("component", "background") + self.logfile = self.get("component", "logfile") + self.pidfile = self.get("component", "pidfile") config = AliasConfigParser() diff --git a/server/object.py b/server/object.py index c72a9a0..6ff04d3 100644 --- a/server/object.py +++ b/server/object.py @@ -8,6 +8,7 @@ import zlib import datetime import fileinput import logging +logger = logging.getLogger("alias") from permission import * from config import config @@ -28,7 +29,7 @@ class ObjectReader(Object): def __init__(self, owner, hash = None): Object.__init__(self, owner, hash) if not os.path.exists(self.object_path): - logging.error("Object {} can't be found for user {}".format(self.hash, + logger.error("Object {} can't be found for user {}".format(self.hash, self.owner)) raise ObjectError @@ -59,7 +60,7 @@ class ObjectReader(Object): def get_child_list(self, user): perm = self.get_permission(user) if not perm & LIST: - logging.error("User {} doesn't have the list permission for object {}" + logger.error("User {} doesn't have the list permission for object {}" .format(user, self.hash)) raise PermissionError @@ -70,7 +71,7 @@ class ObjectReader(Object): try: child = ObjectReader(self.owner, name) except ObjectError: - logging.error("Object {} can't be find for user {}".format(self.hash, + logger.error("Object {} can't be find for user {}".format(self.hash, self.owner)) else: perm, key = child.get_permission_key(user) @@ -83,7 +84,7 @@ class ObjectReader(Object): def get_content(self, user): perm, key = self.get_permission_key(user) if not perm & READ : - logging.error("User {} doesn't have read access to object {}" + logger.error("User {} doesn't have read access to object {}" .format(user, self.hash)) raise PermissionError @@ -99,7 +100,7 @@ class ObjectWriter(Object): def __init__(self, owner, hash = None): Object.__init__(self, owner, hash) if not os.path.exists(self.owner_path): - logging.error("User {} is not registered".format(self.owner)) + logger.error("User {} is not registered".format(self.owner)) os.makedirs(self.object_path) for filename in ['permissions', 'childs', 'object']: file=open(os.path.join(self.object_path, filename), "w") diff --git a/server/plugin.py b/server/plugin.py index 8d2e8c2..0af0a73 100644 --- a/server/plugin.py +++ b/server/plugin.py @@ -1,4 +1,5 @@ import logging +logger = logging.getLogger("alias") import base64 import hashlib from xml.etree import cElementTree as ET @@ -68,7 +69,7 @@ class AliasPlugin(base.base_plugin): try: callee = base64.b64decode(iq['to'].user) except TypeError: - logging.error("callee field not base64 encoded") + logger.error("callee field not base64 encoded") node = iq['alias']['node'] node = ObjectReader(callee, node) diff --git a/server/server.py b/server/server.py index de1ffbe..d91181c 100755 --- a/server/server.py +++ b/server/server.py @@ -1,4 +1,5 @@ import logging +logger = logging.getLogger("alias") from sleekxmpp.componentxmpp import ComponentXMPP from sleekxmpp.xmlstream.xmlstream import XMLStream @@ -24,16 +25,19 @@ class ObjectComponent(ComponentXMPP): for user in self.userHandler.get_user_list(): self.send_presence(pto = user, ptype = "unavailable") XMLStream.disconnect(self, reconnect) - logging.info('Component {} disconnected'.format(self.boundjid.bare)) + logger.info('Component {} disconnected'.format(self.boundjid.bare)) def message(self, msg): + logger.info("test") msg.reply("Thanks for sending\n{[body]}".format(msg)).send() def presence_subscription(self, subscription): if subscription["type"] == "subscribe": userJID = subscription["from"].full + import pdb;pdb.set_trace() if not self.userHandler.registered(userJID): self.userHandler.register(userJID) + logger.info('registering user {}'.format(userJID)) subscription.reply().send() self.send_presence(pto = userJID) self.send_presence_subscription(pto = userJID, ptype = "subscribe") diff --git a/server/user.py b/server/user.py index 3c47dbe..0d01b1d 100644 --- a/server/user.py +++ b/server/user.py @@ -3,6 +3,7 @@ import os.path import shutil import hashlib import logging +logger = logging.getLogger("alias") from object import ObjectWriter class UserHandler: @@ -13,7 +14,7 @@ class UserHandler: def register(self, name): userDir = self.root + '/' + name if os.path.exists(userDir): - logging.error("User {} path already exists".format(name)) + logger.error("User {} path already exists".format(name)) os.mkdir(userDir) ObjectWriter(name) |
