aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/alias.py74
-rwxr-xr-xserver/server.py58
2 files changed, 74 insertions, 58 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
diff --git a/server/server.py b/server/server.py
index 7b39330..de1ffbe 100755
--- a/server/server.py
+++ b/server/server.py
@@ -1,14 +1,8 @@
-#!/usr/bin/python2
import logging
-from argparse import ArgumentParser
-
from sleekxmpp.componentxmpp import ComponentXMPP
from sleekxmpp.xmlstream.xmlstream import XMLStream
from user import UserHandler
-from config import filename, config
-import daemon
-from lockfile.pidlockfile import PIDLockFile
class ObjectComponent(ComponentXMPP):
@@ -52,56 +46,4 @@ class ObjectComponent(ComponentXMPP):
self.send_presence(pto = event["from"].full)
-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')
-
- 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
- else:
- filename = args.config
- logging.basicConfig(level = args.debug)
- config.read(filename)
-
-with daemon.DaemonContext(detach_process = config.background,
- pidfile = PIDLockFile('alias.pid'),
- working_directory = '.'):
- 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))
-