comparison twisted/plugins/libervia.py @ 331:06a48d805547

server side: make Libervia a Twisted plugin, and add it the --port argument + add a config file for the port. ==> NOTE from Goffi: it's a fixed version of Link Mauve's patch c144b603fb93 Fixes bug 16.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Tue, 04 Feb 2014 17:09:00 +0100
parents
children 2067d6241927
comparison
equal deleted inserted replaced
330:e43a1a0b4f23 331:06a48d805547
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 """
5 Libervia: a Salut à Toi frontend
6 Copyright (C) 2013 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU Affero General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Affero General Public License for more details.
17
18 You should have received a copy of the GNU Affero General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 """
21
22 from zope.interface import implements
23
24 from twisted.python import usage
25 from twisted.plugin import IPlugin
26 from twisted.application.service import IServiceMaker
27 from twisted.application import internet
28
29 from xdg.BaseDirectory import save_config_path
30 from ConfigParser import SafeConfigParser, NoSectionError
31 from os.path import expanduser
32
33 from libervia_server import Libervia
34
35
36 class Options(usage.Options):
37 optParameters = [['port', 'p', 8080, 'The port number to listen on.']]
38
39
40 class LiberviaMaker(object):
41 implements(IServiceMaker, IPlugin)
42 tapname = 'libervia'
43 description = 'The web frontend of Salut à Toi'
44 options = Options
45
46 def makeService(self, options):
47 if not isinstance(options['port'], int):
48 port = int(options['port'])
49 else:
50 try:
51 port = config.getint('libervia', 'port')
52 except NoSectionError:
53 port = 8080
54 return Libervia(port=port)
55
56
57 config_path = save_config_path('sat')
58 config = SafeConfigParser()
59 config.read(map(expanduser, ['/etc/sat.conf', config_path + '/sat.conf', 'sat.conf', '.sat.conf']))
60
61 serviceMaker = LiberviaMaker()