Package io.lumify.web

Source Code of io.lumify.web.WebServer

package io.lumify.web;

import io.lumify.core.cmdline.CommandLineBase;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;

public abstract class WebServer extends CommandLineBase {
    public static final String PORT_OPTION_VALUE = "port";
    public static final String HTTPS_PORT_OPTION_VALUE = "httpsPort";
    public static final String KEY_STORE_PATH_OPTION_VALUE = "keyStorePath";
    public static final String KEY_STORE_PASSWORD_OPTION_VALUE = "keyStorePassword";
    public static final String TRUST_STORE_PATH_OPTION_VALUE = "trustStorePath";
    public static final String TRUST_STORE_PASSWORD_OPTION_VALUE = "trustStorePassword";
    public static final String REQUIRE_CLIENT_CERT_OPTION_VALUE = "requireClientCert";
    public static final String WEB_APP_DIR_OPTION_VALUE = "webAppDir";
    public static final String CONTEXT_PATH_OPTION_VALUE = "contextPath";
    public static final String SESSION_TIMEOUT_OPTION_VALUE = "sessionTimeout";
    public static final int DEFAULT_SERVER_PORT = 8080;
    public static final int DEFAULT_HTTPS_SERVER_PORT = 8443;
    public static final String DEFAULT_CONTEXT_PATH = "/";
    public static final int DEFAULT_SESSION_TIMEOUT = 30;

    private int httpPort;
    private int httpsPort;
    private String keyStorePath;
    private String keyStorePassword;
    private String trustStorePath;
    private String trustStorePassword;
    private boolean requireClientCert = false;
    private String webAppDir;
    private String contextPath;
    private int sessionTimeout;

    public int getHttpPort() {
        return httpPort;
    }

    public int getHttpsPort() {
        return httpsPort;
    }

    public String getKeyStorePath() {
        return keyStorePath;
    }

    public String getKeyStorePassword() {
        return keyStorePassword;
    }

    public String getTrustStorePath() {
        if (trustStorePath != null && trustStorePath.trim().length() > 0) {
            return trustStorePath;
        } else {
            return keyStorePath;
        }
    }

    public String getTrustStorePassword() {
        if (trustStorePassword != null && trustStorePassword.trim().length() > 0) {
            return trustStorePassword;
        } else {
            return keyStorePassword;
        }
    }

    public boolean getRequireClientCert() { return requireClientCert; }

    public String getContextPath() {
        return contextPath;
    }

    public String getWebAppDir() {
        return webAppDir;
    }

    public int getSessionTimeout() { return sessionTimeout; }

    @Override
    protected Options getOptions() {
        final Options options = new Options();

        options.addOption(
                OptionBuilder
                        .withLongOpt(PORT_OPTION_VALUE)
                        .withDescription("The port to run the HTTP connector on")
                        .withArgName("port_number")
                        .hasArg()
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(HTTPS_PORT_OPTION_VALUE)
                        .withDescription("The port to run the HTTPS connector on")
                        .withArgName("https_port_number")
                        .hasArg()
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(KEY_STORE_PATH_OPTION_VALUE)
                        .withDescription("Path to the JKS keystore used for SSL")
                        .withArgName("key_store_path")
                        .hasArg()
                        .isRequired()
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(KEY_STORE_PASSWORD_OPTION_VALUE)
                        .withDescription("JKS keystore password")
                        .withArgName("key_store_password")
                        .hasArg()
                        .isRequired()
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(TRUST_STORE_PATH_OPTION_VALUE)
                        .withDescription("Path to the JKS truststore used for SSL")
                        .withArgName("trust_store_path")
                        .hasArg()
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(TRUST_STORE_PASSWORD_OPTION_VALUE)
                        .withDescription("JKS truststore password")
                        .withArgName("trust_store_password")
                        .hasArg()
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(REQUIRE_CLIENT_CERT_OPTION_VALUE)
                        .withDescription("require client certificate")
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(WEB_APP_DIR_OPTION_VALUE)
                        .withDescription("Path to the webapp directory")
                        .isRequired()
                        .hasArg(true)
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(CONTEXT_PATH_OPTION_VALUE)
                        .withDescription("Context path for the webapp")
                        .hasArg(true)
                        .create()
        );

        options.addOption(
                OptionBuilder
                        .withLongOpt(SESSION_TIMEOUT_OPTION_VALUE)
                        .withDescription("number of minutes before idle sessions expire")
                        .hasArg(true)
                        .create()
        );

        return options;
    }

    @Override
    protected void processOptions(CommandLine cmd) throws Exception {
        keyStorePath = cmd.getOptionValue(KEY_STORE_PATH_OPTION_VALUE);
        keyStorePassword = cmd.getOptionValue(KEY_STORE_PASSWORD_OPTION_VALUE);

        final String insecurePort = cmd.getOptionValue(PORT_OPTION_VALUE);
        if (insecurePort == null) {
            httpPort = DEFAULT_SERVER_PORT;
        } else {
            httpPort = Integer.parseInt(insecurePort);
        }

        final String securePort = cmd.getOptionValue(HTTPS_PORT_OPTION_VALUE);
        if (securePort == null) {
            httpsPort = DEFAULT_HTTPS_SERVER_PORT;
        } else {
            httpsPort = Integer.parseInt(securePort);
        }

        trustStorePath = cmd.getOptionValue(TRUST_STORE_PATH_OPTION_VALUE);
        trustStorePassword = cmd.getOptionValue(TRUST_STORE_PASSWORD_OPTION_VALUE);

        requireClientCert = cmd.hasOption(REQUIRE_CLIENT_CERT_OPTION_VALUE);

        webAppDir = cmd.getOptionValue(WEB_APP_DIR_OPTION_VALUE);
        contextPath = cmd.getOptionValue(CONTEXT_PATH_OPTION_VALUE, DEFAULT_CONTEXT_PATH);

        final String timeout = cmd.getOptionValue(SESSION_TIMEOUT_OPTION_VALUE);
        if (timeout == null) {
            sessionTimeout = DEFAULT_SESSION_TIMEOUT;
        } else {
            sessionTimeout = Integer.parseInt(timeout);
        }
    }
}
TOP

Related Classes of io.lumify.web.WebServer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.