Ejemplo n.º 1
0
    def _zmq_bind(self, connClass, address):
        """
        Bind to an address.

        :param connClass: The connection class to be used.
        :type connClass: txzmq.ZmqConnection
        :param address: The address to bind to.
        :type address: str

        :return: The binded connection and port.
        :rtype: (txzmq.ZmqConnection, int)
        """
        connection = connClass(self._factory)
        socket = connection.socket
        if zmq_has_curve():
            public, secret = maybe_create_and_get_certificates(
                self._config_prefix, self.component_type)
            socket.curve_publickey = public
            socket.curve_secretkey = secret
            self._start_thread_auth(connection.socket)
        # check if port was given
        protocol, addr, port = ADDRESS_RE.match(address).groups()
        if port == "0":
            port = socket.bind_to_random_port("%s://%s" % (protocol, addr))
        else:
            socket.bind(address)
            port = int(port)
        logger.debug("Binded %s to %s://%s:%d."
                     % (connClass, protocol, addr, port))
        self._connections.append(connection)
        return connection, port
Ejemplo n.º 2
0
    def _zmq_connect(self, connClass, address):
        """
        Connect to an address.

        :param connClass: The connection class to be used.
        :type connClass: txzmq.ZmqConnection
        :param address: The address to connect to.
        :type address: str

        :return: The binded connection.
        :rtype: txzmq.ZmqConnection
        """
        connection = connClass(self._factory)
        # create and configure socket
        socket = connection.socket
        if zmq_has_curve():
            public, secret = maybe_create_and_get_certificates(
                self._config_prefix, self.component_type)
            server_public_file = os.path.join(
                self._config_prefix, PUBLIC_KEYS_PREFIX, "server.key")
            server_public, _ = zmq.auth.load_certificate(server_public_file)
            socket.curve_publickey = public
            socket.curve_secretkey = secret
            socket.curve_serverkey = server_public
        socket.connect(address)
        logger.debug("Connected %s to %s." % (connClass, address))
        self._connections.append(connection)
        return connection
Ejemplo n.º 3
0
    def _zmq_bind(self, connClass, address):
        """
        Bind to an address.

        :param connClass: The connection class to be used.
        :type connClass: txzmq.ZmqConnection
        :param address: The address to bind to.
        :type address: str

        :return: The binded connection and port.
        :rtype: (txzmq.ZmqConnection, int)
        """
        connection = connClass(self._factory)
        socket = connection.socket
        if zmq_has_curve():
            public, secret = maybe_create_and_get_certificates(
                self._config_prefix, self.component_type)
            socket.curve_publickey = public
            socket.curve_secretkey = secret
            self._start_thread_auth(connection.socket)

        proto, addr, port = ADDRESS_RE.search(address).groups()

        if port is None or port is '0':
            params = proto, addr
            port = socket.bind_to_random_port("%s://%s" % params)
            # XXX this log doesn't appear
            logger.debug("Binded %s to %s://%s." % ((connClass,) + params))
        else:
            params = proto, addr, int(port)
            socket.bind("%s://%s:%d" % params)
            # XXX this log doesn't appear
            logger.debug("Binded %s to %s://%s:%d." % ((connClass,) + params))
        self._connections.append(connection)
        return connection, port
Ejemplo n.º 4
0
    def _zmq_connect(self, socktype, address):
        """
        Connect to an address using with a zmq socktype.

        :param socktype: The ZMQ socket type.
        :type socktype: int
        :param address: The address to connect to.
        :type address: str

        :return: A ZMQ connection stream.
        :rtype: ZMQStream
        """
        logger.debug("Connecting %s to %s." % (socktype, address))
        socket = self._context.socket(socktype)
        # configure curve authentication
        if zmq_has_curve():
            public, private = maybe_create_and_get_certificates(
                self._config_prefix, "client")
            server_public_file = os.path.join(self._config_prefix,
                                              PUBLIC_KEYS_PREFIX, "server.key")
            server_public, _ = zmq.auth.load_certificate(server_public_file)
            socket.curve_publickey = public
            socket.curve_secretkey = private
            socket.curve_serverkey = server_public
        stream = zmqstream.ZMQStream(socket, self._loop)
        socket.connect(address)
        return stream
Ejemplo n.º 5
0
    def _zmq_connect(self, socktype, address):
        """
        Connect to an address using with a zmq socktype.

        :param socktype: The ZMQ socket type.
        :type socktype: int
        :param address: The address to connect to.
        :type address: str

        :return: A ZMQ connection stream.
        :rtype: ZMQStream
        """
        logger.debug("Connecting %s to %s." % (socktype, address))
        socket = self._context.socket(socktype)
        # configure curve authentication
        if zmq_has_curve():
            public, private = maybe_create_and_get_certificates(
                self._config_prefix, "client")
            server_public_file = os.path.join(
                self._config_prefix, PUBLIC_KEYS_PREFIX, "server.key")
            server_public, _ = zmq.auth.load_certificate(server_public_file)
            socket.curve_publickey = public
            socket.curve_secretkey = private
            socket.curve_serverkey = server_public
        stream = zmqstream.ZMQStream(socket, self._loop)
        socket.connect(address)
        return stream
Ejemplo n.º 6
0
    def _zmq_bind(self, connClass, address):
        """
        Bind to an address.

        :param connClass: The connection class to be used.
        :type connClass: txzmq.ZmqConnection
        :param address: The address to bind to.
        :type address: str

        :return: The binded connection and port.
        :rtype: (txzmq.ZmqConnection, int)
        """
        proto, addr, port = ADDRESS_RE.search(address).groups()

        endpoint = ZmqEndpoint(ZmqEndpointType.bind, address)
        connection = connClass(self._factory)

        if self.use_curve:
            socket = connection.socket

            public, secret = maybe_create_and_get_certificates(
                self._config_prefix, self.component_type)
            socket.curve_publickey = public
            socket.curve_secretkey = secret
            self._start_authentication(connection.socket)

        if proto == 'tcp' and int(port) == 0:
            connection.endpoints.extend([endpoint])
            port = connection.socket.bind_to_random_port('tcp://%s' % addr)
        else:
            connection.addEndpoints([endpoint])

        return connection, int(port)
Ejemplo n.º 7
0
    def _zmq_connect(self, connClass, address):
        """
        Connect to an address.

        :param connClass: The connection class to be used.
        :type connClass: txzmq.ZmqConnection
        :param address: The address to connect to.
        :type address: str

        :return: The binded connection.
        :rtype: txzmq.ZmqConnection
        """
        endpoint = ZmqEndpoint(ZmqEndpointType.connect, address)
        connection = connClass(self._factory)

        if self.use_curve:
            socket = connection.socket
            public, secret = maybe_create_and_get_certificates(
                self._config_prefix, self.component_type)
            server_public_file = os.path.join(
                self._config_prefix, PUBLIC_KEYS_PREFIX, "server.key")

            server_public, _ = zmq.auth.load_certificate(server_public_file)
            socket.curve_publickey = public
            socket.curve_secretkey = secret
            socket.curve_serverkey = server_public

        connection.addEndpoints([endpoint])
        return connection
Ejemplo n.º 8
0
    def _zmq_connect(self, connClass, address):
        """
        Connect to an address.

        :param connClass: The connection class to be used.
        :type connClass: txzmq.ZmqConnection
        :param address: The address to connect to.
        :type address: str

        :return: The binded connection.
        :rtype: txzmq.ZmqConnection
        """
        connection = connClass(self._factory)
        # create and configure socket
        socket = connection.socket
        if zmq_has_curve():
            public, secret = maybe_create_and_get_certificates(
                self._config_prefix, self.component_type)
            server_public_file = os.path.join(self._config_prefix,
                                              PUBLIC_KEYS_PREFIX, "server.key")
            server_public, _ = zmq.auth.load_certificate(server_public_file)
            socket.curve_publickey = public
            socket.curve_secretkey = secret
            socket.curve_serverkey = server_public
        socket.connect(address)
        logger.debug("Connected %s to %s." % (connClass, address))
        self._connections.append(connection)
        return connection
Ejemplo n.º 9
0
    def _zmq_bind(self, connClass, address):
        """
        Bind to an address.

        :param connClass: The connection class to be used.
        :type connClass: txzmq.ZmqConnection
        :param address: The address to bind to.
        :type address: str

        :return: The binded connection and port.
        :rtype: (txzmq.ZmqConnection, int)
        """
        connection = connClass(self._factory)
        socket = connection.socket
        if zmq_has_curve():
            public, secret = maybe_create_and_get_certificates(
                self._config_prefix, self.component_type)
            socket.curve_publickey = public
            socket.curve_secretkey = secret
            self._start_thread_auth(connection.socket)

        proto, addr, port = ADDRESS_RE.search(address).groups()

        if port is None or port is '0':
            params = proto, addr
            port = socket.bind_to_random_port("%s://%s" % params)
            # XXX this log doesn't appear
            logger.debug("Binded %s to %s://%s." % ((connClass, ) + params))
        else:
            params = proto, addr, int(port)
            socket.bind("%s://%s:%d" % params)
            # XXX this log doesn't appear
            logger.debug("Binded %s to %s://%s:%d." % ((connClass, ) + params))
        self._connections.append(connection)
        return connection, port
Ejemplo n.º 10
0
    def setUp(self):
        self.factory = ZmqFactory()
        self._config_prefix = os.path.join(self.tempdir, "leap", "events")

        self.public, self.secret = maybe_create_and_get_certificates(
            self._config_prefix, 'server')

        self.authenticator = auth.TxAuthenticator(self.factory)
        self.authenticator.start()
        self.auth_req = auth.TxAuthenticationRequest(self.factory)
Ejemplo n.º 11
0
    def setUp(self):
        self.factory = ZmqFactory()
        self._config_prefix = os.path.join(self.tempdir, "leap", "events")

        self.public, self.secret = maybe_create_and_get_certificates(
            self._config_prefix, 'server')

        self.authenticator = auth.TxAuthenticator(self.factory)
        self.authenticator.start()
        self.auth_req = auth.TxAuthenticationRequest(self.factory)