Python twisted.application.service.MultiService() Examples
The following are 30
code examples of twisted.application.service.MultiService().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.application.service
, or try the search function
.
Example #1
Source File: server.py From worker with GNU General Public License v3.0 | 7 votes |
def run(): config.read() logs.api() top_service = service.MultiService() db = Db() datalib.db = db db.setServiceParent(top_service) http_service = internet.TCPServer(config.HTTP_PORT, Site(db), interface=config.HTTP_ADDR) http_service.setServiceParent(top_service) top_service.startService() reactor.addSystemEventTrigger('before', 'shutdown', top_service.stopService) reactor.run()
Example #2
Source File: tap.py From python-for-android with Apache License 2.0 | 6 votes |
def makeService(config): import client, cache, hosts ca, cl = [], [] if config['cache']: ca.append(cache.CacheResolver(verbose=config['verbose'])) if config['recursive']: cl.append(client.createResolver(resolvconf=config['resolv-conf'])) if config['hosts-file']: cl.append(hosts.Resolver(file=config['hosts-file'])) f = server.DNSServerFactory(config.zones, ca, cl, config['verbose']) p = dns.DNSDatagramProtocol(f) f.noisy = 0 ret = service.MultiService() for (klass, arg) in [(internet.TCPServer, f), (internet.UDPServer, p)]: s = klass(config['port'], arg, interface=config['interface']) s.setServiceParent(ret) for svc in config.svcs: svc.setServiceParent(ret) return ret
Example #3
Source File: test_application.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def testUNIX(self): # FIXME: This test is far too dense. It needs comments. # -- spiv, 2004-11-07 s = service.MultiService() s.startService() factory = protocol.ServerFactory() factory.protocol = TestEcho TestEcho.d = defer.Deferred() t = internet.UNIXServer('echo.skt', factory) t.setServiceParent(s) factory = protocol.ClientFactory() factory.protocol = Foo factory.d = defer.Deferred() factory.line = None internet.UNIXClient('echo.skt', factory).setServiceParent(s) factory.d.addCallback(self.assertEqual, b'lalala') factory.d.addCallback(lambda x : s.stopService()) factory.d.addCallback(lambda x : TestEcho.d) factory.d.addCallback(self._cbTestUnix, factory, s) return factory.d
Example #4
Source File: tap.py From python-for-android with Apache License 2.0 | 6 votes |
def makeService(config): credCheckers = config.get('credCheckers', []) wordsRealm = service.InMemoryWordsRealm(config['hostname']) wordsPortal = portal.Portal(wordsRealm, credCheckers) msvc = MultiService() # XXX Attribute lookup on config is kind of bad - hrm. for plgName in config.interfacePlugins: port = config.get(plgName + '-port') if port is not None: factory = config.interfacePlugins[plgName].getFactory(wordsRealm, wordsPortal) svc = strports.service(port, factory) svc.setServiceParent(msvc) # This is bogus. createGroup is async. makeService must be # allowed to return a Deferred or some crap. for g in config['groups']: wordsRealm.createGroup(g) return msvc
Example #5
Source File: test_application.py From python-for-android with Apache License 2.0 | 6 votes |
def testTCP(self): s = service.MultiService() s.startService() factory = protocol.ServerFactory() factory.protocol = TestEcho TestEcho.d = defer.Deferred() t = internet.TCPServer(0, factory) t.setServiceParent(s) num = t._port.getHost().port factory = protocol.ClientFactory() factory.d = defer.Deferred() factory.protocol = Foo factory.line = None internet.TCPClient('127.0.0.1', num, factory).setServiceParent(s) factory.d.addCallback(self.assertEqual, 'lalala') factory.d.addCallback(lambda x : s.stopService()) factory.d.addCallback(lambda x : TestEcho.d) return factory.d
Example #6
Source File: tap.py From learn_python3_spider with MIT License | 6 votes |
def makeService(config): credCheckers = config.get('credCheckers', []) wordsRealm = service.InMemoryWordsRealm(config['hostname']) wordsPortal = portal.Portal(wordsRealm, credCheckers) msvc = MultiService() # XXX Attribute lookup on config is kind of bad - hrm. for plgName in config.interfacePlugins: port = config.get(plgName + '-port') if port is not None: factory = config.interfacePlugins[plgName].getFactory(wordsRealm, wordsPortal) svc = strports.service(port, factory) svc.setServiceParent(msvc) # This is bogus. createGroup is async. makeService must be # allowed to return a Deferred or some crap. for g in config['groups']: wordsRealm.createGroup(g) return msvc
Example #7
Source File: test_app.py From scrapy-do with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_service_maker(self): #----------------------------------------------------------------------- # Incorrect HTTP config #----------------------------------------------------------------------- config_class = Mock() config = build_mock_config(self.config) config_class.return_value = config options = self.service_maker.options() with patch('scrapy_do.app.Config', config_class): self.config['web']['interfaces'] = '' service = self.service_maker.makeService(options) self.assertIsInstance(service, MultiService) self.config['web']['interfaces'] = 'localhost:7654' #----------------------------------------------------------------------- # Broken controller #----------------------------------------------------------------------- with patch('scrapy_do.app.Config', config_class): self.config['scrapy-do']['project-store'] = '/dev/null/foo' service = self.service_maker.makeService(options) self.assertIsInstance(service, MultiService) self.config['scrapy-do']['project-store'] = self.pstore_path #---------------------------------------------------------------------------
Example #8
Source File: test_service.py From magic-wormhole-mailbox-server with MIT License | 6 votes |
def test_defaults(self): o = server_tap.Options() o.parseOptions([]) cdb = object() udb = object() r = mock.Mock() ws = object() with mock.patch("wormhole_mailbox_server.server_tap.create_or_upgrade_channel_db", return_value=cdb) as ccdb: with mock.patch("wormhole_mailbox_server.server_tap.create_or_upgrade_usage_db", return_value=udb) as ccub: with mock.patch("wormhole_mailbox_server.server_tap.make_server", return_value=r) as ms: with mock.patch("wormhole_mailbox_server.server_tap.make_web_server", return_value=ws) as mws: s = server_tap.makeService(o) self.assertEqual(ccdb.mock_calls, [mock.call("relay.sqlite")]) self.assertEqual(ccub.mock_calls, [mock.call(None)]) self.assertEqual(ms.mock_calls, [mock.call(cdb, allow_list=True, advertise_version=None, signal_error=None, blur_usage=None, usage_db=udb, log_file=None)]) self.assertEqual(mws.mock_calls, [mock.call(r, True, [])]) self.assertIsInstance(s, MultiService) self.assertEqual(len(r.mock_calls), 1) # setServiceParent
Example #9
Source File: socksmon.py From socksmon with BSD 2-Clause "Simplified" License | 6 votes |
def main(): with open('/tmp/server.pem', 'rb') as fp: certData = fp.read() sslcert = ssl.PrivateCertificate.loadPEM(certData) logging.basicConfig(level=logging.INFO) socks = MySOCKSv4Factory("http://127.0.0.1:2357", "http://127.0.0.1:8080", sslcert) socks.protocol = MySOCKSv4 srv = service.MultiService() srv.addService(internet.TCPServer(9050, socks)) srv.addService(internet.TCPServer(2357, server.Site(WebEchoService()))) application = service.Application("Receive Request") srv.setServiceParent(application) srv.startService() reactor.run()
Example #10
Source File: test_manhole_tap.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_sshPort(self): """ L{manhole_tap.makeService} will make a SSH service on the port defined by C{--sshPort}. It will not make a telnet service. """ # Why the sshKeyDir and sshKeySize params? To prevent it stomping over # (or using!) the user's private key, we just make a super small one # which will never be used in a temp directory. self.options.parseOptions(["--sshKeyDir", self.mktemp(), "--sshKeySize", "512", "--sshPort", "tcp:223"]) service = manhole_tap.makeService(self.options) self.assertIsInstance(service, MultiService) self.assertEqual(len(service.services), 1) self.assertIsInstance(service.services[0], StreamServerEndpointService) self.assertIsInstance(service.services[0].factory, manhole_ssh.ConchFactory) self.assertEqual(service.services[0].endpoint._port, 223)
Example #11
Source File: component.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def __init__(self, jid, password): service.MultiService.__init__(self) # Setup defaults self.jabberId = jid self.xmlstream = None # Internal buffer of packets self._packetQueue = [] # Setup the xmlstream factory self._xsFactory = componentFactory(self.jabberId, password) # Register some lambda functions to keep the self.xmlstream var up to date self._xsFactory.addBootstrap(xmlstream.STREAM_CONNECTED_EVENT, self._connected) self._xsFactory.addBootstrap(xmlstream.STREAM_AUTHD_EVENT, self._authd) self._xsFactory.addBootstrap(xmlstream.STREAM_END_EVENT, self._disconnected) # Map addBootstrap and removeBootstrap to the underlying factory -- is this # right? I have no clue...but it'll work for now, until i can think about it # more. self.addBootstrap = self._xsFactory.addBootstrap self.removeBootstrap = self._xsFactory.removeBootstrap
Example #12
Source File: tap.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def makeService(config): credCheckers = config.get('credCheckers', []) wordsRealm = service.InMemoryWordsRealm(config['hostname']) wordsPortal = portal.Portal(wordsRealm, credCheckers) msvc = MultiService() # XXX Attribute lookup on config is kind of bad - hrm. for plgName in config.interfacePlugins: port = config.get(plgName + '-port') if port is not None: factory = config.interfacePlugins[plgName].getFactory(wordsRealm, wordsPortal) svc = strports.service(port, factory) svc.setServiceParent(msvc) # This is bogus. createGroup is async. makeService must be # allowed to return a Deferred or some crap. for g in config['groups']: wordsRealm.createGroup(g) return msvc
Example #13
Source File: test_application.py From learn_python3_spider with MIT License | 6 votes |
def testTCP(self): s = service.MultiService() s.startService() factory = protocol.ServerFactory() factory.protocol = TestEcho TestEcho.d = defer.Deferred() t = internet.TCPServer(0, factory) t.setServiceParent(s) num = t._port.getHost().port factory = protocol.ClientFactory() factory.d = defer.Deferred() factory.protocol = Foo factory.line = None internet.TCPClient('127.0.0.1', num, factory).setServiceParent(s) factory.d.addCallback(self.assertEqual, b'lalala') factory.d.addCallback(lambda x : s.stopService()) factory.d.addCallback(lambda x : TestEcho.d) return factory.d
Example #14
Source File: tap.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def makeService(config): import client, cache, hosts ca, cl = [], [] if config['cache']: ca.append(cache.CacheResolver(verbose=config['verbose'])) if config['recursive']: cl.append(client.createResolver(resolvconf=config['resolv-conf'])) if config['hosts-file']: cl.append(hosts.Resolver(file=config['hosts-file'])) f = server.DNSServerFactory(config.zones, ca, cl, config['verbose']) p = dns.DNSDatagramProtocol(f) f.noisy = 0 ret = service.MultiService() for (klass, arg) in [(internet.TCPServer, f), (internet.UDPServer, p)]: s = klass(config['port'], arg, interface=config['interface']) s.setServiceParent(ret) for svc in config.svcs: svc.setServiceParent(ret) return ret
Example #15
Source File: test_web_api.py From bitmask-dev with GNU General Public License v3.0 | 6 votes |
def __init__(self): service.MultiService.__init__(self) bf = BonafideService self.init('bonafide', bf, '/tmp/') km = mail_services.KeymanagerService self.init('keymanager', km) sol = mail_services.SoledadService self.init('soledad', sol) mail = mail_services.StandardMailService self.init('mail', mail) self.core_cmds = BackendCommands(self) self.tokens = {}
Example #16
Source File: server_tap.py From magic-wormhole-mailbox-server with MIT License | 5 votes |
def makeService(config, channel_db="relay.sqlite", reactor=reactor): increase_rlimits() parent = MultiService() channel_db = create_or_upgrade_channel_db(config["channel-db"]) usage_db = create_or_upgrade_usage_db(config["usage-db"]) log_file = (os.fdopen(int(config["log-fd"]), "w") if config["log-fd"] is not None else None) server = make_server(channel_db, allow_list=config["allow-list"], advertise_version=config["advertise-version"], signal_error=config["signal-error"], blur_usage=config["blur-usage"], usage_db=usage_db, log_file=log_file, ) server.setServiceParent(parent) rebooted = time.time() def expire(): now = time.time() old = now - CHANNEL_EXPIRATION_TIME try: server.prune_all_apps(now, old) except Exception as e: # catch-and-log exceptions during prune, so a single error won't # kill the loop. See #13 for details. log.msg("error during prune_all_apps") log.err(e) server.dump_stats(now, rebooted=rebooted) TimerService(EXPIRATION_CHECK_PERIOD, expire).setServiceParent(parent) log_requests = config["blur-usage"] is None site = make_web_server(server, log_requests, config["websocket-protocol-options"]) ep = endpoints.serverFromString(reactor, config["port"]) # to listen StreamServerEndpointService(ep, site).setServiceParent(parent) log.msg("websocket listening on ws://HOSTNAME:PORT/v1") return parent
Example #17
Source File: test_service.py From magic-wormhole-transit-relay with MIT License | 5 votes |
def test_defaults(self): o = server_tap.Options() o.parseOptions([]) with mock.patch("wormhole_transit_relay.server_tap.transit_server.Transit") as t: s = server_tap.makeService(o) self.assertEqual(t.mock_calls, [mock.call(blur_usage=None, log_file=None, usage_db=None)]) self.assertIsInstance(s, MultiService)
Example #18
Source File: test_application.py From python-for-android with Apache License 2.0 | 5 votes |
def testNamedChild(self): s = service.Service() p = service.MultiService() s.setName("hello") s.setServiceParent(p) self.failUnlessEqual(list(p), [s]) self.failUnlessEqual(s.parent, p) self.failUnlessEqual(p.getServiceNamed("hello"), s)
Example #19
Source File: test_application.py From python-for-android with Apache License 2.0 | 5 votes |
def testParent(self): s = service.Service() p = service.MultiService() s.setServiceParent(p) self.failUnlessEqual(list(p), [s]) self.failUnlessEqual(s.parent, p)
Example #20
Source File: server_tap.py From magic-wormhole-transit-relay with MIT License | 5 votes |
def makeService(config, reactor=reactor): increase_rlimits() ep = endpoints.serverFromString(reactor, config["port"]) # to listen log_file = (os.fdopen(int(config["log-fd"]), "w") if config["log-fd"] is not None else None) f = transit_server.Transit(blur_usage=config["blur-usage"], log_file=log_file, usage_db=config["usage-db"]) parent = MultiService() StreamServerEndpointService(ep, f).setServiceParent(parent) TimerService(5*60.0, f.timerUpdateStats).setServiceParent(parent) return parent
Example #21
Source File: applepush.py From ccs-calendarserver with Apache License 2.0 | 5 votes |
def stopService(self): """ In addition to stopping the provider and feedback sub-services, stop the LoopingCall """ self.log.debug("ApplePushNotifierService stopService") service.MultiService.stopService(self)
Example #22
Source File: tap.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def makeService(config): if config['passwd']: credCheckers = [checkers.FilePasswordDB(config['passwd'], cache=True)] elif config['checkers']: credCheckers = config['checkers'] else: credCheckers = [] wordsRealm = service.InMemoryWordsRealm(config['hostname']) wordsPortal = portal.Portal(wordsRealm, credCheckers) msvc = MultiService() # XXX Attribute lookup on config is kind of bad - hrm. for plgName in config.interfacePlugins: port = config.get(plgName + '-port') if port is not None: factory = config.interfacePlugins[plgName].getFactory(wordsRealm, wordsPortal) svc = strports.service(port, factory) svc.setServiceParent(msvc) # This is bogus. createGroup is async. makeService must be # allowed to return a Deferred or some crap. for g in config['groups']: wordsRealm.createGroup(g) return msvc
Example #23
Source File: mail.py From python-for-android with Apache License 2.0 | 5 votes |
def __init__(self): service.MultiService.__init__(self) # Domains and portals for "client" protocols - POP3, IMAP4, etc self.domains = DomainWithDefaultDict({}, BounceDomain()) self.portals = {} self.monitor = FileMonitoringService() self.monitor.setServiceParent(self) self.smtpPortal = cred.portal.Portal(self)
Example #24
Source File: component.py From python-for-android with Apache License 2.0 | 5 votes |
def __init__(self, jid, password): service.MultiService.__init__(self) # Setup defaults self.jabberId = jid self.xmlstream = None # Internal buffer of packets self._packetQueue = [] # Setup the xmlstream factory self._xsFactory = componentFactory(self.jabberId, password) # Register some lambda functions to keep the self.xmlstream var up to # date self._xsFactory.addBootstrap(xmlstream.STREAM_CONNECTED_EVENT, self._connected) self._xsFactory.addBootstrap(xmlstream.STREAM_AUTHD_EVENT, self._authd) self._xsFactory.addBootstrap(xmlstream.STREAM_END_EVENT, self._disconnected) # Map addBootstrap and removeBootstrap to the underlying factory -- is # this right? I have no clue...but it'll work for now, until i can # think about it more. self.addBootstrap = self._xsFactory.addBootstrap self.removeBootstrap = self._xsFactory.removeBootstrap
Example #25
Source File: tap.py From python-for-android with Apache License 2.0 | 5 votes |
def makeService(config): s = service.MultiService() if config['root']: root = config['root'] if config['indexes']: config['root'].indexNames = config['indexes'] else: # This really ought to be web.Admin or something root = demo.Test() if isinstance(root, static.File): root.registry.setComponent(interfaces.IServiceCollection, s) if config['logfile']: site = server.Site(root, logPath=config['logfile']) else: site = server.Site(root) site.displayTracebacks = not config["notracebacks"] if config['personal']: personal = strports.service( config['port'], makePersonalServerFactory(site)) personal.setServiceParent(s) else: if config['https']: from twisted.internet.ssl import DefaultOpenSSLContextFactory i = internet.SSLServer(int(config['https']), site, DefaultOpenSSLContextFactory(config['privkey'], config['certificate'])) i.setServiceParent(s) strports.service(config['port'], site).setServiceParent(s) return s
Example #26
Source File: app.py From scrapy-do with BSD 3-Clause "New" or "Revised" License | 5 votes |
def makeService(self, options): top_service = MultiService() config_file = os.path.expanduser(options['config']) config = Config([config_file]) #----------------------------------------------------------------------- # Set up the controller #----------------------------------------------------------------------- try: controller = Controller(config) controller.setServiceParent(top_service) except Exception as e: log.msg(format="Unable to set up the controller: %(reason)s", reason=exc_repr(e), logLevel=logging.ERROR) return top_service #----------------------------------------------------------------------- # Set up the web server #----------------------------------------------------------------------- try: web_servers = self._configure_web_server(config, controller) for web_server in web_servers: web_server.setServiceParent(top_service) except Exception as e: log.msg(format="Scrapy-Do web interface could not have been " "configured: %(reason)s", reason=exc_repr(e), logLevel=logging.ERROR) return top_service return top_service
Example #27
Source File: common.py From magic-wormhole with MIT License | 5 votes |
def _setup_relay(self, error, advertise_version=None): self.sp = service.MultiService() self.sp.startService() # need to talk to twisted team about only using unicode in # endpoints.serverFromString db = create_channel_db(":memory:") self._usage_db = create_usage_db(":memory:") self._rendezvous = make_server( db, advertise_version=advertise_version, signal_error=error, usage_db=self._usage_db) ep = endpoints.TCP4ServerEndpoint(reactor, 0, interface="127.0.0.1") site = make_web_server(self._rendezvous, log_requests=False) # self._lp = yield ep.listen(site) s = MyInternetService(ep, site) s.setServiceParent(self.sp) self.rdv_ws_port = yield s.getPort() self._relay_server = s # self._rendezvous = s._rendezvous self.relayurl = u"ws://127.0.0.1:%d/v1" % self.rdv_ws_port # ws://127.0.0.1:%d/wormhole-relay/ws self.transitport = allocate_tcp_port() ep = endpoints.serverFromString( reactor, "tcp:%d:interface=127.0.0.1" % self.transitport) self._transit_server = f = Transit( blur_usage=None, log_file=None, usage_db=None) internet.StreamServerEndpointService(ep, f).setServiceParent(self.sp) self.transit = u"tcp:127.0.0.1:%d" % self.transitport
Example #28
Source File: demo-journal.py From magic-wormhole with MIT License | 5 votes |
def __init__(self, basedir, reactor): service.MultiService.__init__(self) self._basedir = basedir self._reactor = reactor root = Root() site = server.Site(root) ep = endpoints.serverFromString(reactor, "tcp:8220") internet.StreamServerEndpointService(ep, site).setServiceParent(self) self._jm = journal.JournalManager(self._save_state) root.putChild(b"", static.Data("root", "text/plain")) root.putChild(b"list-invitations", Status(self._list_invitations)) root.putChild(b"invite", Action(self._invite)) # {petname:} root.putChild(b"accept", Action(self._accept)) # {petname:, code:} self._state_fn = os.path.join(self._basedir, "state.json") self._state = State.from_filename(self._state_fn) self._wormholes = {} for iid, invitation_state in self._state.get_all_invitations().items(): def _dispatch(event, *args, **kwargs): self._dispatch_wormhole_event(iid, event, *args, **kwargs) w = wormhole.journaled_from_data(invitation_state["wormhole"], reactor=self._reactor, journal=self._jm, event_handler=self, event_handler_args=(iid,)) self._wormholes[iid] = w w.setServiceParent(self)
Example #29
Source File: sim.py From ccs-calendarserver with Apache License 2.0 | 5 votes |
def attachServices(self, output): self.ms = MultiService() for svcclass in self.serviceClasses(): svcclass(self, output).setServiceParent(self.ms) attachService(self.reactor, self, self.ms) self.startAmpHub()
Example #30
Source File: test_application.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def testDoublyNamedChild(self): s = service.Service() p = service.MultiService() s.setName("hello") s.setServiceParent(p) self.failUnlessRaises(RuntimeError, s.setName, "lala")