private MqttConnectionSettings applySSLSocketFactory(final Connection connection, final MqttConnectionSettings connectionSettings, final DittoHeaders dittoHeaders) { final SSLContextCreator sslContextCreator = connection.isValidateCertificates() ? SSLContextCreator.fromConnection(connection, dittoHeaders) : SSLContextCreator.withTrustManager(ACCEPT_ANY_TRUST_MANAGER, dittoHeaders); final Credentials clientCredentials = connection.getCredentials().orElseGet(ClientCertificateCredentials::empty); final SSLContext sslContext = clientCredentials.accept(sslContextCreator); return SocketFactoryExtension.withSocketFactory(connectionSettings, sslContext.getSocketFactory()); }
private MqttConnectionSettings applySSLSocketFactory(final Connection connection, final MqttConnectionSettings connectionSettings, final DittoHeaders dittoHeaders) { final SSLContextCreator sslContextCreator = connection.isValidateCertificates() ? SSLContextCreator.fromConnection(connection, dittoHeaders) : SSLContextCreator.withTrustManager(ACCEPT_ANY_TRUST_MANAGER, dittoHeaders); final Credentials clientCredentials = connection.getCredentials().orElseGet(ClientCertificateCredentials::empty); final SSLContext sslContext = clientCredentials.accept(sslContextCreator); return SocketFactoryExtension.withSocketFactory(connectionSettings, sslContext.getSocketFactory()); }
public static String buildAmqpConnectionUriFromConnection(final Connection connection) { final String id = connection.getId(); final String username = connection.getUsername().orElse(null); final String password = connection.getPassword().orElse(null); final String protocol = connection.getProtocol(); final String hostname = connection.getHostname(); final int port = connection.getPort(); final boolean failoverEnabled = connection.isFailoverEnabled(); final Map<String, String> specificConfig = connection.getSpecificConfig(); final String baseUri = formatUri(protocol, hostname, port); final boolean anonymous = username == null || username.isEmpty() || password == null || password.isEmpty(); final List<String> parameters = new ArrayList<>(getAmqpParameters(anonymous, specificConfig)); final boolean isSecuredConnectionWithAcceptInvalidCertificates = isSecuredConnection(connection) && !connection.isValidateCertificates(); parameters.addAll(getTransportParameters(isSecuredConnectionWithAcceptInvalidCertificates, specificConfig)); final String nestedUri = baseUri + parameters.stream().collect(Collectors.joining("&", "?", "")); final List<String> globalParameters = new ArrayList<>(getJmsParameters(id, username, password, specificConfig)); final String connectionUri; if (failoverEnabled) { globalParameters.addAll(getFailoverParameters(specificConfig)); connectionUri = wrapWithFailOver(nestedUri) + globalParameters.stream().collect(Collectors.joining("&", "?", "")); } else { connectionUri = nestedUri + globalParameters.stream().collect(Collectors.joining("&", "&", "")); } LOGGER.debug("[{}] URI: {}", id, connectionUri); return connectionUri; }
public static String buildAmqpConnectionUriFromConnection(final Connection connection) { final String id = connection.getId(); final String username = connection.getUsername().orElse(null); final String password = connection.getPassword().orElse(null); final String protocol = connection.getProtocol(); final String hostname = connection.getHostname(); final int port = connection.getPort(); final boolean failoverEnabled = connection.isFailoverEnabled(); final Map<String, String> specificConfig = connection.getSpecificConfig(); final String baseUri = formatUri(protocol, hostname, port); final boolean anonymous = username == null || username.isEmpty() || password == null || password.isEmpty(); final List<String> parameters = new ArrayList<>(getAmqpParameters(anonymous, specificConfig)); final boolean isSecuredConnectionWithAcceptInvalidCertificates = isSecuredConnection(connection) && !connection.isValidateCertificates(); parameters.addAll(getTransportParameters(isSecuredConnectionWithAcceptInvalidCertificates, specificConfig)); final String nestedUri = baseUri + parameters.stream().collect(Collectors.joining("&", "?", "")); final List<String> globalParameters = new ArrayList<>(getJmsParameters(id, username, password, specificConfig)); final String connectionUri; if (failoverEnabled) { globalParameters.addAll(getFailoverParameters(specificConfig)); connectionUri = wrapWithFailOver(nestedUri) + globalParameters.stream().collect(Collectors.joining("&", "?", "")); } else { connectionUri = nestedUri + globalParameters.stream().collect(Collectors.joining("&", "&", "")); } LOGGER.debug("[{}] URI: {}", id, connectionUri); return connectionUri; }
@Override public JmsConnection createConnection(final Connection connection, final ExceptionListener exceptionListener) throws JMSException, NamingException { checkNotNull(connection, "Connection"); checkNotNull(exceptionListener, "Exception Listener"); final Context ctx = createContext(connection); final org.apache.qpid.jms.JmsConnectionFactory cf = (org.apache.qpid.jms.JmsConnectionFactory) ctx.lookup(connection.getId()); if (isSecuredConnection(connection) && connection.isValidateCertificates()) { cf.setSslContext(SSLContextCreator.fromConnection(connection, null).withoutClientCertificate()); } @SuppressWarnings("squid:S2095") final JmsConnection jmsConnection = (JmsConnection) cf.createConnection(); jmsConnection.setExceptionListener(exceptionListener); return jmsConnection; }
@Override public JmsConnection createConnection(final Connection connection, final ExceptionListener exceptionListener) throws JMSException, NamingException { checkNotNull(connection, "Connection"); checkNotNull(exceptionListener, "Exception Listener"); final Context ctx = createContext(connection); final org.apache.qpid.jms.JmsConnectionFactory cf = (org.apache.qpid.jms.JmsConnectionFactory) ctx.lookup(connection.getId()); if (isSecuredConnection(connection) && connection.isValidateCertificates()) { cf.setSslContext(SSLContextCreator.fromConnection(connection, null).withoutClientCertificate()); } @SuppressWarnings("squid:S2095") final JmsConnection jmsConnection = (JmsConnection) cf.createConnection(); jmsConnection.setExceptionListener(exceptionListener); return jmsConnection; }
@Override public ConnectionFactory createConnectionFactory(final Connection connection, final ExceptionHandler exceptionHandler) { checkNotNull(connection, "Connection"); checkNotNull(exceptionHandler, "Exception Handler"); try { final ConnectionFactory connectionFactory = new CustomConnectionFactory(); if (SECURE_AMQP_SCHEME.equalsIgnoreCase(connection.getProtocol())) { if (connection.isValidateCertificates()) { final SSLContextCreator sslContextCreator = SSLContextCreator.fromConnection(connection, null); connectionFactory.useSslProtocol(sslContextCreator.withoutClientCertificate()); } else { // attention: this accepts all certificates whether they are valid or not connectionFactory.useSslProtocol(); } } connectionFactory.setUri(connection.getUri()); // this makes no difference as the used newmotion client always sets the AutomaticRecoveryEnabled to false: connectionFactory.setAutomaticRecoveryEnabled(connection.isFailoverEnabled()); connectionFactory.setExceptionHandler(exceptionHandler); configureConnectionFactory(connectionFactory, connection.getSpecificConfig()); return connectionFactory; } catch (final NoSuchAlgorithmException | KeyManagementException | URISyntaxException e) { LOGGER.warn(e.getMessage()); throw new IllegalStateException("Failed to create RabbitMQ connection factory.", e); } }
@Override public ConnectionFactory createConnectionFactory(final Connection connection, final ExceptionHandler exceptionHandler) { checkNotNull(connection, "Connection"); checkNotNull(exceptionHandler, "Exception Handler"); try { final ConnectionFactory connectionFactory = new CustomConnectionFactory(); if (SECURE_AMQP_SCHEME.equalsIgnoreCase(connection.getProtocol())) { if (connection.isValidateCertificates()) { final SSLContextCreator sslContextCreator = SSLContextCreator.fromConnection(connection, null); connectionFactory.useSslProtocol(sslContextCreator.withoutClientCertificate()); } else { // attention: this accepts all certificates whether they are valid or not connectionFactory.useSslProtocol(); } } connectionFactory.setUri(connection.getUri()); // this makes no difference as the used newmotion client always sets the AutomaticRecoveryEnabled to false: connectionFactory.setAutomaticRecoveryEnabled(connection.isFailoverEnabled()); connectionFactory.setExceptionHandler(exceptionHandler); configureConnectionFactory(connectionFactory, connection.getSpecificConfig()); return connectionFactory; } catch (final NoSuchAlgorithmException | KeyManagementException | URISyntaxException e) { LOGGER.warn(e.getMessage()); throw new IllegalStateException("Failed to create RabbitMQ connection factory.", e); } }
/** * Returns a new {@code ConnectionBuilder} object. * * @param connection the connection to use for initializing the builder. * @return new instance of {@code ImmutableConnectionBuilder}. * @throws NullPointerException if {@code connection} is {@code null}. */ public static ConnectionBuilder getBuilder(final Connection connection) { checkNotNull(connection, "Connection"); return new Builder(connection.getConnectionType()) .id(connection.getId()) .connectionStatus(connection.getConnectionStatus()) .credentials(connection.getCredentials().orElse(null)) .uri(connection.getUri()) .trustedCertificates(connection.getTrustedCertificates().orElse(null)) .failoverEnabled(connection.isFailoverEnabled()) .validateCertificate(connection.isValidateCertificates()) .processorPoolSize(connection.getProcessorPoolSize()) .sources(connection.getSources()) .targets(connection.getTargets()) .clientCount(connection.getClientCount()) .specificConfig(connection.getSpecificConfig()) .mappingContext(connection.getMappingContext().orElse(null)) .name(connection.getName().orElse(null)) .tags(connection.getTags()); }
/** * Returns a new {@code ConnectionBuilder} object. * * @param connection the connection to use for initializing the builder. * @return new instance of {@code ImmutableConnectionBuilder}. * @throws NullPointerException if {@code connection} is {@code null}. */ public static ConnectionBuilder getBuilder(final Connection connection) { checkNotNull(connection, "Connection"); return new Builder(connection.getConnectionType()) .id(connection.getId()) .connectionStatus(connection.getConnectionStatus()) .credentials(connection.getCredentials().orElse(null)) .uri(connection.getUri()) .trustedCertificates(connection.getTrustedCertificates().orElse(null)) .failoverEnabled(connection.isFailoverEnabled()) .validateCertificate(connection.isValidateCertificates()) .processorPoolSize(connection.getProcessorPoolSize()) .sources(connection.getSources()) .targets(connection.getTargets()) .clientCount(connection.getClientCount()) .specificConfig(connection.getSpecificConfig()) .mappingContext(connection.getMappingContext().orElse(null)) .name(connection.getName().orElse(null)) .tags(connection.getTags()); }