annotate idavoll/tap.py @ 176:17fc5dd77158

Move around service setup.
author Ralph Meijer <ralphm@ik.nu>
date Wed, 09 Apr 2008 13:15:39 +0000
parents 958e69630e52
children faf1c9bc2612
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
1 # Copyright (c) 2003-2007 Ralph Meijer
155
5191ba7c4df8 Work towards first release 0.5.0.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
2 # See LICENSE for details.
5191ba7c4df8 Work towards first release 0.5.0.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
3
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
4 from twisted.application import service
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
5 from twisted.python import usage
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
6 from twisted.words.protocols.jabber.jid import JID
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
7
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
8 from wokkel.component import Component
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
9 from wokkel.disco import DiscoHandler
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
10 from wokkel.generic import FallbackHandler, VersionHandler
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
11 from wokkel.iwokkel import IPubSubService
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
12
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
13 from idavoll.backend import BackendService
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
14
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
15 __version__ = '0.6.0'
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
16
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
17 class Options(usage.Options):
156
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
18 optParameters = [
170
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
19 ('jid', None, 'pubsub', 'JID this component will be available at'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
20 ('secret', None, 'secret', 'Jabber server component secret'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
21 ('rhost', None, '127.0.0.1', 'Jabber server host'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
22 ('rport', None, '5347', 'Jabber server port'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
23 ('backend', None, 'memory', 'Choice of storage backend'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
24 ('dbuser', None, '', 'Database user (pgsql backend)'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
25 ('dbname', None, 'pubsub', 'Database name (pgsql backend)'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
26 ('dbpass', None, '', 'Database password (pgsql backend)'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
27 ('dbhost', None, '', 'Database host (pgsql backend)'),
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
28 ('dbport', None, '', 'Database port (pgsql backend)'),
156
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
29 ]
76
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 42
diff changeset
30
156
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
31 optFlags = [
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
32 ('verbose', 'v', 'Show traffic'),
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
33 ('hide-nodes', None, 'Hide all nodes for disco')
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
34 ]
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
35
156
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
36 def postOptions(self):
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
37 if self['backend'] not in ['pgsql', 'memory']:
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
38 raise usage.UsageError, "Unknown backend!"
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
39
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
40 def makeService(config):
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
41 s = service.MultiService()
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
42
176
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
43 # Create backend service with storage
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
44
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
45 if config['backend'] == 'pgsql':
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
46 from idavoll.pgsql_storage import Storage
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
47 st = Storage(user=config['dbuser'],
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
48 database=config['dbname'],
170
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
49 password=config['dbpass'],
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
50 host=config['dbhost'],
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
51 port=config['dbport'])
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
52 elif config['backend'] == 'memory':
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
53 from idavoll.memory_storage import Storage
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
54 st = Storage()
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
55
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
56 bs = BackendService(st)
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
57 bs.setServiceParent(s)
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
58
176
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
59 # Set up XMPP server-side component with publish-subscribe capabilities
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
60
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
61 cs = Component(config["rhost"], int(config["rport"]),
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
62 config["jid"], config["secret"])
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
63 cs.setServiceParent(s)
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
64
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
65 cs.factory.maxDelay = 900
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
66
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
67 if config["verbose"]:
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
68 cs.logTraffic = True
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
69
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
70 FallbackHandler().setHandlerParent(cs)
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
71 VersionHandler('Idavoll', __version__).setHandlerParent(cs)
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
72 DiscoHandler().setHandlerParent(cs)
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
73
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
74 ps = IPubSubService(bs)
169
96afb248df5e Fix typos in service creation. Make disco not respond when a resource is provided.
Ralph Meijer <ralphm@ik.nu>
parents: 167
diff changeset
75 ps.setHandlerParent(cs)
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
76 ps.hideNodes = config["hide-nodes"]
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
77 ps.serviceJID = JID(config["jid"])
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
78
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
79 return s