Example usage for io.netty.resolver.dns DnsNameResolverBuilder DnsNameResolverBuilder

List of usage examples for io.netty.resolver.dns DnsNameResolverBuilder DnsNameResolverBuilder

Introduction

In this page you can find the example usage for io.netty.resolver.dns DnsNameResolverBuilder DnsNameResolverBuilder.

Prototype

public DnsNameResolverBuilder() 

Source Link

Document

Creates a new builder.

Usage

From source file:org.curioswitch.common.server.framework.armeria.ClientBuilderFactory.java

License:Open Source License

@Inject
public ClientBuilderFactory(MeterRegistry meterRegistry, Tracing tracing,
        Function<Client<HttpRequest, HttpResponse>, LoggingClient<HttpRequest, HttpResponse>> loggingClient,
        Optional<SelfSignedCertificate> selfSignedCertificate, Optional<TrustManagerFactory> caTrustManager,
        Lazy<Factory> googleCredentialsDecoratingClient, ServerConfig serverConfig) {
    this.tracing = tracing;
    this.meterRegistry = meterRegistry;
    this.loggingClient = loggingClient;
    final TrustManagerFactory trustManagerFactory;
    if (serverConfig.isDisableClientCertificateVerification()) {
        logger.warn("Disabling client SSL verification. This should only happen on local!");
        trustManagerFactory = InsecureTrustManagerFactory.INSTANCE;
    } else if (caTrustManager.isPresent()) {
        trustManagerFactory = caTrustManager.get();
    } else {//from w  w  w  .j a  v a  2  s  . c  om
        trustManagerFactory = null;
    }

    final Consumer<SslContextBuilder> clientCertificateCustomizer;
    if (selfSignedCertificate.isPresent()) {
        SelfSignedCertificate certificate = selfSignedCertificate.get();
        clientCertificateCustomizer = sslContext -> sslContext.keyManager(certificate.certificate(),
                certificate.privateKey());
    } else if (serverConfig.getTlsCertificatePath().isEmpty()
            || serverConfig.getTlsPrivateKeyPath().isEmpty()) {
        throw new IllegalStateException(
                "No TLS configuration provided, Curiostack does not support clients without TLS "
                        + "certificates. Use gradle-curio-cluster-plugin to set up a namespace and TLS.");
    } else {
        String certPath = !serverConfig.getClientTlsCertificatePath().isEmpty()
                ? serverConfig.getClientTlsCertificatePath()
                : serverConfig.getTlsCertificatePath();
        String keyPath = !serverConfig.getClientTlsPrivateKeyPath().isEmpty()
                ? serverConfig.getClientTlsPrivateKeyPath()
                : serverConfig.getTlsPrivateKeyPath();
        clientCertificateCustomizer = sslContext -> SslContextKeyConverter.execute(
                ResourceUtil.openStream(certPath), ResourceUtil.openStream(keyPath), sslContext::keyManager);
    }

    final Consumer<SslContextBuilder> clientTlsCustomizer;
    if (trustManagerFactory != null) {
        clientTlsCustomizer = sslContext -> {
            clientCertificateCustomizer.accept(sslContext);
            sslContext.trustManager(trustManagerFactory);
        };
    } else {
        clientTlsCustomizer = clientCertificateCustomizer;
    }
    ClientFactoryBuilder factoryBuilder = new ClientFactoryBuilder().sslContextCustomizer(clientTlsCustomizer)
            .meterRegistry(meterRegistry);
    if (serverConfig.getDisableEdns()) {
        factoryBuilder.addressResolverGroupFactory(eventLoopGroup -> new DnsAddressResolverGroup(
                new DnsNameResolverBuilder().channelType(TransportType.datagramChannelType(eventLoopGroup))
                        .nameServerProvider(DnsServerAddressStreamProviders.platformDefault())
                        .optResourceEnabled(false)));
    }
    clientFactory = factoryBuilder.build();
}