예제 #1
0
        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)
예제 #2
0
    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)
예제 #3
0
    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
예제 #4
0
 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)
예제 #5
0
 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)