equal
deleted
inserted
replaced
4 import sys |
4 import sys |
5 |
5 |
6 import irc, api |
6 import irc, api |
7 |
7 |
8 class Nexus (object) : |
8 class Nexus (object) : |
9 def __init__ (self) : |
9 """ |
10 """ |
10 The core component, which has the set of registered ModuleInfo's from api, and the IRC connection |
11 Must set .irc/.api attrs to irc.Factory/api.ServerFactory instances |
11 """ |
12 """ |
12 |
|
13 # runtime config options as a dict |
|
14 config = None |
13 |
15 |
|
16 # the irc.Factory instance |
|
17 irc = None |
|
18 |
|
19 # the api.ServerFactory instance |
|
20 api = None |
|
21 |
|
22 def __init__ (self, config) : |
|
23 self.config = config |
14 self.modules = dict() |
24 self.modules = dict() |
15 |
|
16 |
25 |
17 def registerModule (self, module, transport) : |
26 def registerModule (self, module, transport) : |
18 self.modules[module.name] = (module, transport) |
27 self.modules[module.name] = (module, transport) |
19 |
28 |
20 self.irc.connection.moduleConnected(module, transport.transport.getPeer()) |
29 self.irc.connection.moduleConnected(module, transport.transport.getPeer()) |
34 module, connection = self.modules[name] |
43 module, connection = self.modules[name] |
35 |
44 |
36 return module, connection.transport.getPeer() |
45 return module, connection.transport.getPeer() |
37 |
46 |
38 def makeService (config) : |
47 def makeService (config) : |
39 n = Nexus() |
48 n = Nexus(config) |
40 s = service.MultiService() |
49 s = service.MultiService() |
41 |
50 |
42 # the IRC side |
51 # the IRC side |
43 n.irc = irc.Factory(n, |
52 n.irc = irc.Factory(n, |
44 config['irc-nickname'], |
53 config['irc-nickname'], |
50 irc_client = internet.TCPClient(config['irc-server'], config['irc-port'], n.irc) |
59 irc_client = internet.TCPClient(config['irc-server'], config['irc-port'], n.irc) |
51 |
60 |
52 irc_client.setServiceParent(s) |
61 irc_client.setServiceParent(s) |
53 |
62 |
54 # the API side |
63 # the API side |
55 n.api = api.ServerFactory(n, config['api-secret']) |
64 n.api = api.ServerFactory(n, config) |
56 |
65 |
57 log.msg("Starting API server on [%s:%d]", config['api-port'], config['api-listen']) |
66 log.msg("Starting API server on [%s:%d]", config['api-port'], config['api-listen']) |
58 api_server = internet.TCPServer(config['api-port'], n.api, interface=config['api-listen']) |
67 api_server = internet.TCPServer(config['api-port'], n.api, interface=config['api-listen']) |
59 |
68 |
60 api_server.setServiceParent(s) |
69 api_server.setServiceParent(s) |