def setupService(self): """ Setup the application component. """ is_secure, host, port, resource, path, params = parse_ws_url(self.url) # factory for use ApplicationSession def create(): cfg = ComponentConfig(self.realm, self.extra) session = self.make(cfg) return session # create a WAMP-over-WebSocket transport client factory transport_factory = self.factory(create, url=self.url) # setup the client from a Twisted endpoint if is_secure: from twisted.application.internet import SSLClient ctx = self.context_factory if ctx is None: from twisted.internet.ssl import optionsForClientTLS ctx = optionsForClientTLS(host) client = SSLClient(host, port, transport_factory, contextFactory=ctx) else: if self.context_factory is not None: raise Exception("context_factory specified on non-secure URI") from twisted.application.internet import TCPClient client = TCPClient(host, port, transport_factory) client.setServiceParent(self)
def __init__(self, amqp_url=None, publish_confirms=True): """Initialize the service.""" service.MultiService.__init__(self) self._parameters = pika.URLParameters(amqp_url or config.conf["amqp_url"]) self._confirms = publish_confirms if amqp_url.startswith("amqps"): _configure_tls_parameters(self._parameters) if self._parameters.client_properties is None: self._parameters.client_properties = config.conf[ "client_properties"] factory = FedoraMessagingFactoryV2(self._parameters, self._confirms) if self._parameters.ssl_options: self._service = SSLClient( host=self._parameters.host, port=self._parameters.port, factory=factory, contextFactory=_ssl_context_factory(self._parameters), ) else: self._service = TCPClient(host=self._parameters.host, port=self._parameters.port, factory=factory) self._service.factory = factory name = "{}{}:{}".format( "ssl:" if self._parameters.ssl_options else "", self._parameters.host, self._parameters.port, ) self._service.setName(name) self._service.setServiceParent(self)
def makeService(self, options): service = MultiService() contextFactory = DefaultOpenSSLContextFactory(options["key"], options["certificate"]) apnsFactory = APNSClientFactory() apnsService = SSLClient(options["apns-host"], int(options["apns-port"]), apnsFactory, contextFactory) apnsService.setServiceParent(service) database = RegistrationDatabase(options["database"]) topicName = parseTopicFromCertificate(options["certificate"]) xapsService = UNIXServer(options["socket"], XAPSFactory(database, topicName, apnsFactory)) xapsService.setServiceParent(service) return service
def connect(self): factory = self.factoryClass(self._parameters, self._bindings) if self._parameters.ssl_options: serv = SSLClient( host=self._parameters.host, port=self._parameters.port, factory=factory, contextFactory=_ssl_context_factory(self._parameters), ) else: serv = TCPClient( host=self._parameters.host, port=self._parameters.port, factory=factory ) serv.factory = factory name = "{}{}:{}".format( "ssl:" if self._parameters.ssl_options else "", self._parameters.host, self._parameters.port, ) serv.setName(name) serv.setServiceParent(self)
def connect(self): factory = self.factoryClass(self._parameters, self._bindings) if self._parameters.ssl_options: serv = SSLClient( host=self._parameters.host, port=self._parameters.port, factory=factory, contextFactory=ssl.ClientContextFactory(), ) else: serv = TCPClient( host=self._parameters.host, port=self._parameters.port, factory=factory, ) serv.factory = factory name = '{}{}:{}'.format( 'ssl:' if self._parameters.ssl_options else '', self._parameters.host, self._parameters.port, ) serv.setName(name) serv.setServiceParent(self)