Search in sources :

Example 31 with HttpConfiguration

use of org.eclipse.jetty.server.HttpConfiguration in project nifi by apache.

the class JettyServer method configureConnectors.

private void configureConnectors(final Server server) throws ServerConfigurationException {
    // create the http configuration
    final HttpConfiguration httpConfiguration = new HttpConfiguration();
    final int headerSize = DataUnit.parseDataSize(props.getWebMaxHeaderSize(), DataUnit.B).intValue();
    httpConfiguration.setRequestHeaderSize(headerSize);
    httpConfiguration.setResponseHeaderSize(headerSize);
    if (props.getPort() != null) {
        final Integer port = props.getPort();
        if (port < 0 || (int) Math.pow(2, 16) <= port) {
            throw new ServerConfigurationException("Invalid HTTP port: " + port);
        }
        logger.info("Configuring Jetty for HTTP on port: " + port);
        final List<Connector> serverConnectors = Lists.newArrayList();
        final Map<String, String> httpNetworkInterfaces = props.getHttpNetworkInterfaces();
        if (httpNetworkInterfaces.isEmpty() || httpNetworkInterfaces.values().stream().filter(value -> !Strings.isNullOrEmpty(value)).collect(Collectors.toList()).isEmpty()) {
            // create the connector
            final ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(httpConfiguration));
            // set host and port
            if (StringUtils.isNotBlank(props.getProperty(NiFiProperties.WEB_HTTP_HOST))) {
                http.setHost(props.getProperty(NiFiProperties.WEB_HTTP_HOST));
            }
            http.setPort(port);
            serverConnectors.add(http);
        } else {
            // add connectors for all IPs from http network interfaces
            serverConnectors.addAll(Lists.newArrayList(httpNetworkInterfaces.values().stream().map(ifaceName -> {
                NetworkInterface iface = null;
                try {
                    iface = NetworkInterface.getByName(ifaceName);
                } catch (SocketException e) {
                    logger.error("Unable to get network interface by name {}", ifaceName, e);
                }
                if (iface == null) {
                    logger.warn("Unable to find network interface named {}", ifaceName);
                }
                return iface;
            }).filter(Objects::nonNull).flatMap(iface -> Collections.list(iface.getInetAddresses()).stream()).map(inetAddress -> {
                // create the connector
                final ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(httpConfiguration));
                // set host and port
                http.setHost(inetAddress.getHostAddress());
                http.setPort(port);
                return http;
            }).collect(Collectors.toList())));
        }
        // add all connectors
        serverConnectors.forEach(server::addConnector);
    }
    if (props.getSslPort() != null) {
        final Integer port = props.getSslPort();
        if (port < 0 || (int) Math.pow(2, 16) <= port) {
            throw new ServerConfigurationException("Invalid HTTPs port: " + port);
        }
        logger.info("Configuring Jetty for HTTPs on port: " + port);
        final List<Connector> serverConnectors = Lists.newArrayList();
        final Map<String, String> httpsNetworkInterfaces = props.getHttpsNetworkInterfaces();
        if (httpsNetworkInterfaces.isEmpty() || httpsNetworkInterfaces.values().stream().filter(value -> !Strings.isNullOrEmpty(value)).collect(Collectors.toList()).isEmpty()) {
            final ServerConnector https = createUnconfiguredSslServerConnector(server, httpConfiguration);
            // set host and port
            if (StringUtils.isNotBlank(props.getProperty(NiFiProperties.WEB_HTTPS_HOST))) {
                https.setHost(props.getProperty(NiFiProperties.WEB_HTTPS_HOST));
            }
            https.setPort(port);
            serverConnectors.add(https);
        } else {
            // add connectors for all IPs from https network interfaces
            serverConnectors.addAll(Lists.newArrayList(httpsNetworkInterfaces.values().stream().map(ifaceName -> {
                NetworkInterface iface = null;
                try {
                    iface = NetworkInterface.getByName(ifaceName);
                } catch (SocketException e) {
                    logger.error("Unable to get network interface by name {}", ifaceName, e);
                }
                if (iface == null) {
                    logger.warn("Unable to find network interface named {}", ifaceName);
                }
                return iface;
            }).filter(Objects::nonNull).flatMap(iface -> Collections.list(iface.getInetAddresses()).stream()).map(inetAddress -> {
                final ServerConnector https = createUnconfiguredSslServerConnector(server, httpConfiguration);
                // set host and port
                https.setHost(inetAddress.getHostAddress());
                https.setPort(port);
                return https;
            }).collect(Collectors.toList())));
        }
        // add all connectors
        serverConnectors.forEach(server::addConnector);
    }
}
Also used : Bundle(org.apache.nifi.bundle.Bundle) SslConnectionFactory(org.eclipse.jetty.server.SslConnectionFactory) WebAppContext(org.eclipse.jetty.webapp.WebAppContext) Arrays(java.util.Arrays) FilterChain(javax.servlet.FilterChain) Enumeration(java.util.Enumeration) ServletException(javax.servlet.ServletException) ContextHandlerCollection(org.eclipse.jetty.server.handler.ContextHandlerCollection) UninheritableFlowException(org.apache.nifi.controller.UninheritableFlowException) LoggerFactory(org.slf4j.LoggerFactory) JarFile(java.util.jar.JarFile) FlowService(org.apache.nifi.services.FlowService) StringUtils(org.apache.commons.lang3.StringUtils) InetAddress(java.net.InetAddress) ContentAccess(org.apache.nifi.web.ContentAccess) Configuration(org.eclipse.jetty.webapp.Configuration) AnnotationConfiguration(org.eclipse.jetty.annotations.AnnotationConfiguration) FilterHolder(org.eclipse.jetty.servlet.FilterHolder) QueuedThreadPool(org.eclipse.jetty.util.thread.QueuedThreadPool) Map(java.util.Map) FlowSerializationException(org.apache.nifi.controller.serialization.FlowSerializationException) UiExtension(org.apache.nifi.ui.extension.UiExtension) UiExtensionType(org.apache.nifi.web.UiExtensionType) Filter(javax.servlet.Filter) Server(org.eclipse.jetty.server.Server) EnumSet(java.util.EnumSet) Collection(java.util.Collection) NetworkInterface(java.net.NetworkInterface) Set(java.util.Set) WebApplicationContext(org.springframework.web.context.WebApplicationContext) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) List(java.util.List) ServletResponse(javax.servlet.ServletResponse) UiExtensionMapping(org.apache.nifi.ui.extension.UiExtensionMapping) ExtensionManager(org.apache.nifi.nar.ExtensionManager) DataUnit(org.apache.nifi.processor.DataUnit) DocGenerator(org.apache.nifi.documentation.DocGenerator) Handler(org.eclipse.jetty.server.Handler) HttpConnectionFactory(org.eclipse.jetty.server.HttpConnectionFactory) ResourceHandler(org.eclipse.jetty.server.handler.ResourceHandler) KeyStoreUtils(org.apache.nifi.security.util.KeyStoreUtils) SslContextFactory(org.eclipse.jetty.util.ssl.SslContextFactory) HashMap(java.util.HashMap) BundleDetails(org.apache.nifi.bundle.BundleDetails) CollectionUtils(org.apache.commons.collections4.CollectionUtils) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Strings(com.google.common.base.Strings) JarEntry(java.util.jar.JarEntry) SecureRequestCustomizer(org.eclipse.jetty.server.SecureRequestCustomizer) SocketException(java.net.SocketException) Lists(com.google.common.collect.Lists) HttpConfiguration(org.eclipse.jetty.server.HttpConfiguration) GzipHandler(org.eclipse.jetty.server.handler.gzip.GzipHandler) FlowSynchronizationException(org.apache.nifi.controller.serialization.FlowSynchronizationException) LifeCycleStartException(org.apache.nifi.lifecycle.LifeCycleStartException) NiFiWebConfigurationContext(org.apache.nifi.web.NiFiWebConfigurationContext) ServletRequest(javax.servlet.ServletRequest) WebAppClassLoader(org.eclipse.jetty.webapp.WebAppClassLoader) Logger(org.slf4j.Logger) WebApplicationContextUtils(org.springframework.web.context.support.WebApplicationContextUtils) HandlerList(org.eclipse.jetty.server.handler.HandlerList) HttpServletResponse(javax.servlet.http.HttpServletResponse) ExtensionMapping(org.apache.nifi.nar.ExtensionMapping) IOException(java.io.IOException) BeansException(org.springframework.beans.BeansException) ContextHandler(org.eclipse.jetty.server.handler.ContextHandler) JettyWebXmlConfiguration(org.eclipse.jetty.webapp.JettyWebXmlConfiguration) InputStreamReader(java.io.InputStreamReader) ApplicationContext(org.springframework.context.ApplicationContext) File(java.io.File) NiFiServer(org.apache.nifi.NiFiServer) ServerConnector(org.eclipse.jetty.server.ServerConnector) FileFilter(java.io.FileFilter) NiFiProperties(org.apache.nifi.util.NiFiProperties) Paths(java.nio.file.Paths) Resource(org.eclipse.jetty.util.resource.Resource) FilterConfig(javax.servlet.FilterConfig) DispatcherType(javax.servlet.DispatcherType) ServletContext(javax.servlet.ServletContext) BufferedReader(java.io.BufferedReader) Connector(org.eclipse.jetty.server.Connector) ResourceCollection(org.eclipse.jetty.util.resource.ResourceCollection) Collections(java.util.Collections) HandlerCollection(org.eclipse.jetty.server.handler.HandlerCollection) ServerConnector(org.eclipse.jetty.server.ServerConnector) Connector(org.eclipse.jetty.server.Connector) SocketException(java.net.SocketException) HttpConnectionFactory(org.eclipse.jetty.server.HttpConnectionFactory) NetworkInterface(java.net.NetworkInterface) HttpConfiguration(org.eclipse.jetty.server.HttpConfiguration) ServerConnector(org.eclipse.jetty.server.ServerConnector)

Example 32 with HttpConfiguration

use of org.eclipse.jetty.server.HttpConfiguration in project nifi by apache.

the class JettyServer method createUnconfiguredSslServerConnector.

private ServerConnector createUnconfiguredSslServerConnector(Server server, HttpConfiguration httpConfiguration) {
    // add some secure config
    final HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
    httpsConfiguration.setSecureScheme("https");
    httpsConfiguration.setSecurePort(props.getSslPort());
    httpsConfiguration.addCustomizer(new SecureRequestCustomizer());
    // build the connector
    return new ServerConnector(server, new SslConnectionFactory(createSslContextFactory(), "http/1.1"), new HttpConnectionFactory(httpsConfiguration));
}
Also used : ServerConnector(org.eclipse.jetty.server.ServerConnector) SecureRequestCustomizer(org.eclipse.jetty.server.SecureRequestCustomizer) HttpConnectionFactory(org.eclipse.jetty.server.HttpConnectionFactory) HttpConfiguration(org.eclipse.jetty.server.HttpConfiguration) SslConnectionFactory(org.eclipse.jetty.server.SslConnectionFactory)

Example 33 with HttpConfiguration

use of org.eclipse.jetty.server.HttpConfiguration in project nifi by apache.

the class JettyWebSocketServer method createConnector.

private ServerConnector createConnector(final SslContextFactory sslContextFactory, final Integer listenPort) {
    final ServerConnector serverConnector;
    if (sslContextFactory == null) {
        serverConnector = new ServerConnector(server);
    } else {
        final HttpConfiguration httpsConfiguration = new HttpConfiguration();
        httpsConfiguration.setSecureScheme("https");
        httpsConfiguration.addCustomizer(new SecureRequestCustomizer());
        serverConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory, "http/1.1"), new HttpConnectionFactory(httpsConfiguration));
    }
    serverConnector.setPort(listenPort);
    return serverConnector;
}
Also used : ServerConnector(org.eclipse.jetty.server.ServerConnector) SecureRequestCustomizer(org.eclipse.jetty.server.SecureRequestCustomizer) HttpConnectionFactory(org.eclipse.jetty.server.HttpConnectionFactory) HttpConfiguration(org.eclipse.jetty.server.HttpConfiguration) SslConnectionFactory(org.eclipse.jetty.server.SslConnectionFactory)

Example 34 with HttpConfiguration

use of org.eclipse.jetty.server.HttpConfiguration in project nifi by apache.

the class WebSocketServerExample method setup.

@BeforeClass
public static void setup() throws Exception {
    server = new Server(0);
    final ContextHandlerCollection handlerCollection = new ContextHandlerCollection();
    final ServletContextHandler contextHandler = new ServletContextHandler();
    servletHandler = new ServletHandler();
    contextHandler.insertHandler(servletHandler);
    handlerCollection.setHandlers(new Handler[] { contextHandler });
    server.setHandler(handlerCollection);
    httpConnector = new ServerConnector(server);
    httpConnector.setPort(50010);
    final SslContextFactory sslContextFactory = new SslContextFactory();
    sslContextFactory.setKeyStorePath("src/test/resources/certs/localhost-ks.jks");
    sslContextFactory.setKeyStorePassword("localtest");
    sslContextFactory.setKeyStoreType("JKS");
    final HttpConfiguration https = new HttpConfiguration();
    https.addCustomizer(new SecureRequestCustomizer());
    sslConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory, "http/1.1"), new HttpConnectionFactory(https));
    sslConnector.setPort(50011);
    server.setConnectors(new Connector[] { httpConnector, sslConnector });
    servletHolder = servletHandler.addServletWithMapping(WSServlet.class, "/test");
    servletHolder = servletHandler.addServletWithMapping(ConnectionCheckServlet.class, "/check");
    server.start();
    logger.info("Starting server on port {} for HTTP, and {} for HTTPS", httpConnector.getLocalPort(), sslConnector.getLocalPort());
}
Also used : ServerConnector(org.eclipse.jetty.server.ServerConnector) ServletHandler(org.eclipse.jetty.servlet.ServletHandler) SslContextFactory(org.eclipse.jetty.util.ssl.SslContextFactory) SecureRequestCustomizer(org.eclipse.jetty.server.SecureRequestCustomizer) Server(org.eclipse.jetty.server.Server) HttpConnectionFactory(org.eclipse.jetty.server.HttpConnectionFactory) ContextHandlerCollection(org.eclipse.jetty.server.handler.ContextHandlerCollection) HttpConfiguration(org.eclipse.jetty.server.HttpConfiguration) ServletContextHandler(org.eclipse.jetty.servlet.ServletContextHandler) SslConnectionFactory(org.eclipse.jetty.server.SslConnectionFactory) BeforeClass(org.junit.BeforeClass)

Example 35 with HttpConfiguration

use of org.eclipse.jetty.server.HttpConfiguration in project nifi by apache.

the class TlsCertificateAuthorityService method createServer.

private static Server createServer(Handler handler, int port, KeyStore keyStore, String keyPassword) throws Exception {
    Server server = new Server();
    SslContextFactory sslContextFactory = new SslContextFactory();
    sslContextFactory.setIncludeProtocols("TLSv1.2");
    sslContextFactory.setKeyStore(keyStore);
    sslContextFactory.setKeyManagerPassword(keyPassword);
    HttpConfiguration httpsConfig = new HttpConfiguration();
    httpsConfig.addCustomizer(new SecureRequestCustomizer());
    ServerConnector sslConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory(httpsConfig));
    sslConnector.setPort(port);
    server.addConnector(sslConnector);
    server.setHandler(handler);
    return server;
}
Also used : ServerConnector(org.eclipse.jetty.server.ServerConnector) SslContextFactory(org.eclipse.jetty.util.ssl.SslContextFactory) SecureRequestCustomizer(org.eclipse.jetty.server.SecureRequestCustomizer) Server(org.eclipse.jetty.server.Server) HttpConnectionFactory(org.eclipse.jetty.server.HttpConnectionFactory) HttpConfiguration(org.eclipse.jetty.server.HttpConfiguration) SslConnectionFactory(org.eclipse.jetty.server.SslConnectionFactory)

Aggregations

HttpConfiguration (org.eclipse.jetty.server.HttpConfiguration)199 HttpConnectionFactory (org.eclipse.jetty.server.HttpConnectionFactory)148 ServerConnector (org.eclipse.jetty.server.ServerConnector)148 Server (org.eclipse.jetty.server.Server)103 SecureRequestCustomizer (org.eclipse.jetty.server.SecureRequestCustomizer)88 SslConnectionFactory (org.eclipse.jetty.server.SslConnectionFactory)88 SslContextFactory (org.eclipse.jetty.util.ssl.SslContextFactory)81 QueuedThreadPool (org.eclipse.jetty.util.thread.QueuedThreadPool)42 ServletContextHandler (org.eclipse.jetty.servlet.ServletContextHandler)40 ServletHolder (org.eclipse.jetty.servlet.ServletHolder)34 IOException (java.io.IOException)24 Connector (org.eclipse.jetty.server.Connector)23 File (java.io.File)20 HTTP2ServerConnectionFactory (org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory)18 HttpServletRequest (javax.servlet.http.HttpServletRequest)17 ServletException (javax.servlet.ServletException)15 HttpServletResponse (javax.servlet.http.HttpServletResponse)15 HandlerCollection (org.eclipse.jetty.server.handler.HandlerCollection)15 WebAppContext (org.eclipse.jetty.webapp.WebAppContext)15 HTTP2CServerConnectionFactory (org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory)13