def makeService(config): s = service.MultiService() router = component.Router() # Set up the XMPP server service serverService = server.ServerService(router, secret=config['server-secret']) serverService.domains = config['domains'] serverService.logTraffic = config['verbose'] # Hook up XMPP server-to-server service s2sFactory = server.XMPPS2SServerFactory(serverService) s2sFactory.logTraffic = config['verbose'] s2sService = strports.service(config['server-port'], s2sFactory) s2sService.setServiceParent(s) # Hook up XMPP external server-side component service cFactory = component.XMPPComponentServerFactory(router, config['component-secret']) cFactory.logTraffic = config['verbose'] cServer = strports.service(config['component-port'], cFactory) cServer.setServiceParent(s) return s
def makeService(config): router = component.Router() factory = component.XMPPComponentServerFactory(router, config['secret']) if config['verbose']: factory.logTraffic = True return strports.service(config['port'], factory)
def test_addRoute(self): """ Test route registration and routing on incoming stanzas. """ router = component.Router() routed = [] router.route = lambda element: routed.append(element) pipe = XmlPipe() router.addRoute('example.org', pipe.sink) self.assertEqual(1, len(router.routes)) self.assertEqual(pipe.sink, router.routes['example.org']) element = domish.Element(('testns', 'test')) pipe.source.send(element) self.assertEqual([element], routed)
def test_route(self): """ Test routing of a message. """ component1 = XmlPipe() component2 = XmlPipe() router = component.Router() router.addRoute('component1.example.org', component1.sink) router.addRoute('component2.example.org', component2.sink) outgoing = [] component2.source.addObserver('/*', lambda element: outgoing.append(element)) stanza = domish.Element((None, 'presence')) stanza['from'] = 'component1.example.org' stanza['to'] = 'component2.example.org' component1.source.send(stanza) self.assertEqual([stanza], outgoing)
def test_route(self): """ Test routing of a message. """ component1 = XmlPipe() component2 = XmlPipe() router = component.Router() router.addRoute("component1.example.org", component1.sink) router.addRoute("component2.example.org", component2.sink) outgoing = [] component2.source.addObserver("/*", lambda element: outgoing.append(element)) stanza = domish.Element((None, "presence")) stanza["from"] = "component1.example.org" stanza["to"] = "component2.example.org" component1.source.send(stanza) self.assertEqual([stanza], outgoing)
def test_routeDefault(self): """ Test routing of a message using the default route. The default route is the one with L{None} as its key in the routing table. It is taken when there is no more specific route in the routing table that matches the stanza's destination. """ component1 = XmlPipe() s2s = XmlPipe() router = component.Router() router.addRoute('component1.example.org', component1.sink) router.addRoute(None, s2s.sink) outgoing = [] s2s.source.addObserver('/*', lambda element: outgoing.append(element)) stanza = domish.Element((None, 'presence')) stanza['from'] = 'component1.example.org' stanza['to'] = 'example.com' component1.source.send(stanza) self.assertEqual([stanza], outgoing)
def setUp(self): self.router = component.Router() self.factory = component.XMPPComponentServerFactory( self.router, 'secret') self.xmlstream = self.factory.buildProtocol(None) self.xmlstream.thisEntity = JID('component.example.org')