private boolean isSecureConnection(final Connection connection) { return "ssl".equals(connection.getProtocol()) || "wss".equals(connection.getProtocol()); } }
private boolean isSecureConnection(final Connection connection) { return "ssl".equals(connection.getProtocol()) || "wss".equals(connection.getProtocol()); } }
private static boolean isSecuredConnection(final Connection connection) { return SECURE_AMQP_SCHEME.equalsIgnoreCase(connection.getProtocol()); }
private static boolean isSecuredConnection(final Connection connection) { return SECURE_AMQP_SCHEME.equalsIgnoreCase(connection.getProtocol()); }
/** * Check whether the URI scheme of the connection belongs to an accepted scheme. * * @param connection the connection to check. * @param dittoHeaders headers of the command that triggered the connection validation. * @param acceptedSchemes valid URI schemes for the connection type. * @param protocolName protocol name of the connection type. * @throws DittoRuntimeException if the URI scheme is not accepted. */ protected static void validateUriScheme(final Connection connection, final DittoHeaders dittoHeaders, final Collection<String> acceptedSchemes, final String protocolName) { if (!acceptedSchemes.contains(connection.getProtocol())) { final String message = MessageFormat.format("The URI scheme ''{0}'' is not valid for {1}.", connection.getProtocol(), protocolName); final String description = MessageFormat.format("Accepted URI schemes are: {0}", String.join(", ", acceptedSchemes)); throw ConnectionUriInvalidException.newBuilder(connection.getUri()) .message(message) .description(description) .dittoHeaders(dittoHeaders) .build(); } }
/** * Check whether the URI scheme of the connection belongs to an accepted scheme. * * @param connection the connection to check. * @param dittoHeaders headers of the command that triggered the connection validation. * @param acceptedSchemes valid URI schemes for the connection type. * @param protocolName protocol name of the connection type. * @throws DittoRuntimeException if the URI scheme is not accepted. */ protected static void validateUriScheme(final Connection connection, final DittoHeaders dittoHeaders, final Collection<String> acceptedSchemes, final String protocolName) { if (!acceptedSchemes.contains(connection.getProtocol())) { final String message = MessageFormat.format("The URI scheme ''{0}'' is not valid for {1}.", connection.getProtocol(), protocolName); final String description = MessageFormat.format("Accepted URI schemes are: {0}", String.join(", ", acceptedSchemes)); throw ConnectionUriInvalidException.newBuilder(connection.getUri()) .message(message) .description(description) .dittoHeaders(dittoHeaders) .build(); } }
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 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); } }