List of usage examples for io.netty.resolver.dns DnsNameResolverBuilder DnsNameResolverBuilder
public DnsNameResolverBuilder()
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(); }