Example usage for io.netty.util DomainNameMappingBuilder DomainNameMappingBuilder

List of usage examples for io.netty.util DomainNameMappingBuilder DomainNameMappingBuilder

Introduction

In this page you can find the example usage for io.netty.util DomainNameMappingBuilder DomainNameMappingBuilder.

Prototype

public DomainNameMappingBuilder(V defaultValue) 

Source Link

Document

Constructor with default initial capacity of the map holding the mappings

Usage

From source file:com.liferay.sync.engine.lan.server.file.LanFileServerInitializer.java

License:Open Source License

public void updateDomainNameMapping() {
    DomainNameMappingBuilder<SslContext> domainNameMappingBuilder = null;

    for (SyncAccount syncAccount : SyncAccountService.findAll()) {
        if (!syncAccount.isActive() || !syncAccount.isLanEnabled()) {
            continue;
        }/*from w  w w.j a  va  2 s .com*/

        SslContext sslContext = null;

        try {
            X509Certificate x509Certificate = LanPEMParserUtil
                    .parseX509Certificate(syncAccount.getLanCertificate());

            SslContextBuilder sslContextBuilder = SslContextBuilder
                    .forServer(LanPEMParserUtil.parsePrivateKey(syncAccount.getLanKey()), x509Certificate);

            sslContextBuilder.clientAuth(ClientAuth.REQUIRE);
            sslContextBuilder.sslProvider(SslProvider.JDK);
            sslContextBuilder.trustManager(x509Certificate);

            sslContext = sslContextBuilder.build();
        } catch (Exception e) {
            _logger.error(e.getMessage(), e);

            continue;
        }

        if (domainNameMappingBuilder == null) {
            domainNameMappingBuilder = new DomainNameMappingBuilder<>(sslContext);
        }

        domainNameMappingBuilder.add(LanClientUtil.getSNIHostname(syncAccount.getLanServerUuid()), sslContext);
    }

    if (domainNameMappingBuilder == null) {
        return;
    }

    _domainNameMapping = domainNameMappingBuilder.build();
}

From source file:com.linecorp.armeria.server.Server.java

License:Apache License

Server(ServerConfig config) {
    this.config = requireNonNull(config, "config");
    config.setServer(this);

    // Pre-populate the domain name mapping for later matching.
    SslContext lastSslContext = null;/*  ww  w .j  av  a 2 s .  c om*/
    for (VirtualHost h : config.virtualHosts()) {
        lastSslContext = h.sslContext();
    }

    if (lastSslContext == null) {
        sslContexts = null;
        for (ServerPort p : config.ports()) {
            if (p.protocol().isTls()) {
                throw new IllegalArgumentException("no SSL context specified");
            }
        }
    } else {
        final DomainNameMappingBuilder<SslContext> mappingBuilder = new DomainNameMappingBuilder<>(
                lastSslContext);
        for (VirtualHost h : config.virtualHosts()) {
            final SslContext sslCtx = h.sslContext();
            if (sslCtx != null) {
                mappingBuilder.add(h.hostnamePattern(), sslCtx);
            }
        }
        sslContexts = mappingBuilder.build();
    }

    // Invoke the serviceAdded() method in Service so that it can keep the reference to this Server or
    // add a listener to it.
    config.serviceConfigs().forEach(cfg -> ServiceCallbackInvoker.invokeServiceAdded(cfg, cfg.service()));
}

From source file:com.linecorp.armeria.server.ServerConfig.java

License:Apache License

ServerConfig(Iterable<ServerPort> ports, VirtualHost defaultVirtualHost, Iterable<VirtualHost> virtualHosts,
        int numWorkers, int maxPendingRequests, int maxConnections, long idleTimeoutMillis,
        long defaultRequestTimeoutMillis, long defaultMaxRequestLength, Duration gracefulShutdownQuietPeriod,
        Duration gracefulShutdownTimeout, Executor blockingTaskExecutor, String serviceLoggerPrefix) {

    requireNonNull(ports, "ports");
    requireNonNull(virtualHosts, "virtualHosts");
    requireNonNull(defaultVirtualHost, "defaultVirtualHost");

    // Set the primitive properties.
    this.numWorkers = validateNumWorkers(numWorkers);
    this.maxPendingRequests = validateMaxPendingRequests(maxPendingRequests);
    this.maxConnections = validateMaxConnections(maxConnections);
    this.idleTimeoutMillis = validateIdleTimeoutMillis(idleTimeoutMillis);
    this.defaultRequestTimeoutMillis = validateDefaultRequestTimeoutMillis(defaultRequestTimeoutMillis);
    this.defaultMaxRequestLength = validateDefaultMaxRequestLength(defaultMaxRequestLength);
    this.gracefulShutdownQuietPeriod = validateNonNegative(requireNonNull(gracefulShutdownQuietPeriod),
            "gracefulShutdownQuietPeriod");
    this.gracefulShutdownTimeout = validateNonNegative(requireNonNull(gracefulShutdownTimeout),
            "gracefulShutdownTimeout");
    validateGreaterThanOrEqual(gracefulShutdownTimeout, "gracefulShutdownTimeout", gracefulShutdownQuietPeriod,
            "gracefulShutdownQuietPeriod");

    requireNonNull(blockingTaskExecutor, "blockingTaskExecutor");
    if (blockingTaskExecutor instanceof ExecutorService) {
        this.blockingTaskExecutor = new InterminableExecutorService((ExecutorService) blockingTaskExecutor);
    } else {/*from  w ww.j a  va2 s  . c om*/
        this.blockingTaskExecutor = new ExecutorBasedExecutorService(blockingTaskExecutor);
    }

    this.serviceLoggerPrefix = ServiceConfig.validateLoggerName(serviceLoggerPrefix, "serviceLoggerPrefix");

    // Set localAddresses.
    final List<ServerPort> portsCopy = new ArrayList<>();
    for (ServerPort p : ports) {
        if (p == null) {
            break;
        }
        portsCopy.add(p);
    }

    if (portsCopy.isEmpty()) {
        throw new IllegalArgumentException("no ports in the server");
    }

    this.ports = Collections.unmodifiableList(portsCopy);

    // Set virtual host definitions and initialize their domain name mapping.
    defaultVirtualHost = normalizeDefaultVirtualHost(defaultVirtualHost, portsCopy);
    final DomainNameMappingBuilder<VirtualHost> mappingBuilder = new DomainNameMappingBuilder<>(
            defaultVirtualHost);
    final List<VirtualHost> virtualHostsCopy = new ArrayList<>();
    for (VirtualHost h : virtualHosts) {
        if (h == null) {
            break;
        }
        virtualHostsCopy.add(h);
        mappingBuilder.add(h.hostnamePattern(), h);
    }
    virtualHostMapping = mappingBuilder.build();

    // Add the default VirtualHost to the virtualHosts so that a user can retrieve all VirtualHosts
    // via virtualHosts(). i.e. no need to check defaultVirtualHost().
    virtualHostsCopy.add(defaultVirtualHost);

    // Sets the parent of VirtualHost to this configuration.
    virtualHostsCopy.forEach(h -> h.setServerConfig(this));

    if (virtualHostsCopy.stream().allMatch(h -> h.serviceConfigs().isEmpty())) {
        throw new IllegalArgumentException("no services in the server");
    }

    this.virtualHosts = Collections.unmodifiableList(virtualHostsCopy);
    this.defaultVirtualHost = defaultVirtualHost;

    // Build the complete list of the services available in this server.
    services = Collections.unmodifiableList(
            virtualHostsCopy.stream().flatMap(h -> h.serviceConfigs().stream()).collect(Collectors.toList()));
}

From source file:com.linecorp.armeria.server.VirtualHost.java

License:Apache License

/**
 * Ensure that 'hostnamePattern' matches 'defaultHostname'.
 *//*from w  w w  .j  a  v  a 2s.c o m*/
static void ensureHostnamePatternMatchesDefaultHostname(String hostnamePattern, String defaultHostname) {
    if ("*".equals(hostnamePattern)) {
        return;
    }

    // Pretty convoluted way to validate but it's done only once and
    // we don't need to duplicate the pattern matching logic.
    final DomainNameMapping<Boolean> mapping = new DomainNameMappingBuilder<>(Boolean.FALSE)
            .add(hostnamePattern, Boolean.TRUE).build();

    if (!mapping.map(defaultHostname)) {
        throw new IllegalArgumentException("defaultHostname: " + defaultHostname
                + " (must be matched by hostnamePattern: " + hostnamePattern + ')');
    }
}