Class WebServerPortConfig

    • Field Detail

      • PORT_START

        public static final java.lang.String PORT_START
        The name of the port start value.
        See Also:
        Constant Field Values
      • PORT_END

        public static final java.lang.String PORT_END
        The name of the port end value.
        See Also:
        Constant Field Values
      • PROTOCOL

        public static final java.lang.String PROTOCOL
        The protocol to use (HTTP or HTTPS).
        See Also:
        Constant Field Values
      • BIND_ADDRESS

        public static final java.lang.String BIND_ADDRESS
        The protocol to use (HTTP or HTTPS).
        See Also:
        Constant Field Values
      • FRONT_END_SECURED

        public static final java.lang.String FRONT_END_SECURED
        If the port is secure by means of a front-end proxy, even if the server protocol uses HTTP.
        See Also:
        Constant Field Values
      • ID_PKCS12

        public static final java.lang.String ID_PKCS12
        The PKCS#12 identity.
        See Also:
        Constant Field Values
      • ID_PASSWORD

        public static final java.lang.String ID_PASSWORD
        The PKCS#12 identity password.
        See Also:
        Constant Field Values
      • DOMAIN_NAMES

        public static final java.lang.String DOMAIN_NAMES
        Domain names.
        See Also:
        Constant Field Values
      • LETS_ENCRYPT_DOMAINS

        public static final java.lang.String LETS_ENCRYPT_DOMAINS
        Domain names associated with Let's Encrypt, comma separated list.
        See Also:
        Constant Field Values
      • DEFAULT_PASSWORD

        public static final java.lang.String DEFAULT_PASSWORD
        The default password used for keystores, Let's Encrypt certificates, etc: "changeit".
        See Also:
        Constant Field Values
      • EXCLUDE_TLS_VERSION

        public static final java.lang.String EXCLUDE_TLS_VERSION
        Protocols to exclude: 0 = none, 1 = TLSv1.0, 2 = TLSv1.0 + 1.1.
        See Also:
        Constant Field Values
    • Constructor Detail

      • WebServerPortConfig

        public WebServerPortConfig()
        Creates the port configuration without a name. The name must be set in all cases using the setPropertyAtom call.
      • WebServerPortConfig

        public WebServerPortConfig​(Atom atom)
        Creates the port configuration with a name.
        Parameters:
        atom - The name of the property.
    • Method Detail

      • getType

        public java.lang.String getType()
        Gets the type of port: HTTP or HTTPS.
        Specified by:
        getType in interface IWebServerPortConfig
        Returns:
        The type string, or "Undefined" if undefined.
      • isHTTPS

        public boolean isHTTPS()
        Returns true if it's a secure HTTPS protocol port.
        Returns:
        true if HTTPS is used for the port, false if HTTP.
      • isHTTP

        public boolean isHTTP()
        Returns true if it's an unsecured HTTP port.
        Returns:
        true if HTTP is used for the port, false if HTTPS.
      • isFrontEndSecured

        public boolean isFrontEndSecured()
        Returns if the connection is secure by means of a front-end proxy, load balancer, etc. This means that the protocol can be HTTP but still be secure.
        Specified by:
        isFrontEndSecured in interface IWebServerPortConfig
        Returns:
        true if secure and HTTPS is used by the client side, false otherwise.
      • getDescription

        public java.lang.String getDescription()
        Gets the description of the port configuration.
        Specified by:
        getDescription in interface IWebServerPortConfig
        Returns:
        The description, "ports NN to MM, PROTOCOL" or "port NN, PROTOCOL" if not defined.
      • getPortDescription

        public java.lang.String getPortDescription()
        Gets the description of the port configuration.
        Specified by:
        getPortDescription in interface IWebServerPortConfig
        Returns:
        The description, "ports NN to MM, PROTOCOL" or "port NN, PROTOCOL" if not defined.
      • clone

        public WebServerPortConfig clone()
        Creates a clone out of this property. The cloning is overridden by the subclasses in order to handle cloning of its class variables appropriately.
        Overrides:
        clone in class PropCnr
      • getPortStart

        public int getPortStart()
        Gets the port start in a range.
        Specified by:
        getPortStart in interface IWebServerPortConfig
        Returns:
        The port start, or -1 if not defined.
      • getPortEnd

        public int getPortEnd()
        Gets the port end in a range.
        Specified by:
        getPortEnd in interface IWebServerPortConfig
        Returns:
        The port end, or "getPortStart()" value if not defined.
      • getProtocol

        public int getProtocol()
        Gets the protocol to use.
        Specified by:
        getProtocol in interface IWebServerPortConfig
        Returns:
        The protocol: 0=HTTP, 1=HTTPS, or -1 if not defined.
      • getBindAddress

        public java.lang.String getBindAddress()
        Gets the bind address.
        Specified by:
        getBindAddress in interface IWebServerPortConfig
        Returns:
        The bind address, or null if not defined (never empty string).
      • getKeyStorePassword

        public java.lang.String getKeyStorePassword()
        Gets the KeyStore password.
        Specified by:
        getKeyStorePassword in interface IWebServerPortConfig
        Returns:
        The password, null for none.
      • getKeyStore

        public java.security.KeyStore getKeyStore()
                                           throws java.security.KeyStoreException,
                                                  java.security.NoSuchAlgorithmException,
                                                  java.security.cert.CertificateException,
                                                  java.io.IOException,
                                                  java.security.UnrecoverableEntryException
        Gets the KeyStore from a PKCS#12 identity property and password.
        Specified by:
        getKeyStore in interface IWebServerPortConfig
        Returns:
        The configured KeyStore, or null if not defined.
        Throws:
        java.security.KeyStoreException - If no Provider supports a KeyStoreSpi implementation for the PKCS#12 type.
        java.security.NoSuchAlgorithmException - If the algorithm used to check the integrity of the KeyStore cannot be found.
        java.security.cert.CertificateException - If any of the certificates in the KeyStore could not be loaded or the Let's Encrypt domain was not found and this configuration is associated with Let's Encrypt.
        java.io.IOException - If there is an I/O or format problem with the KeyStore data, if a password is required but not given, or if the given password was incorrect. If the error is due to a wrong password, the cause of the IOException should be an UnrecoverableKeyException.
        java.security.UnrecoverableEntryException - For errors in keystore.
      • getKeyStore

        public java.security.KeyStore getKeyStore​(java.lang.StringBuilder pwReturn)
                                           throws java.security.KeyStoreException,
                                                  java.security.NoSuchAlgorithmException,
                                                  java.security.cert.CertificateException,
                                                  java.io.IOException,
                                                  java.security.UnrecoverableEntryException
        Gets the KeyStore from a PKCS#12 identity property and password. If the configuration is associated with a Let's Encrypt domain
        Specified by:
        getKeyStore in interface IWebServerPortConfig
        Parameters:
        pwReturn - A StringBuilder instance that is filled with the password, null for none.
        Returns:
        The configured KeyStore, or null if not defined.
        Throws:
        java.security.KeyStoreException - If no Provider supports a KeyStoreSpi implementation for the PKCS#12 type.
        java.security.NoSuchAlgorithmException - If the algorithm used to check the integrity of the KeyStore cannot be found.
        java.security.cert.CertificateException - If any of the certificates in the KeyStore could not be loaded or the Let's Encrypt domain was not found and this configuration is associated with Let's Encrypt.
        java.io.IOException - If there is an I/O or format problem with the KeyStore data, if a password is required but not given, or if the given password was incorrect. If the error is due to a wrong password, the cause of the IOException should be an UnrecoverableKeyException.
        java.security.UnrecoverableEntryException - For errors in keystore.
      • setProperty

        public <T> T setProperty​(java.lang.String name,
                                 T property,
                                 java.lang.Class<T> propClass)
                          throws java.lang.ClassCastException
        Sets a runtime property based on a HashMap.
        Specified by:
        setProperty in interface IWebServerPortConfig
        Parameters:
        name - The property name.
        property - The property, or null to remove it.
        propClass - The class of the property to return if replaced.
        Returns:
        The previous property, null for none.
        Throws:
        java.lang.ClassCastException - If the object is not null and is not assignable to the type T.
      • getProperty

        public <T> T getProperty​(java.lang.String name,
                                 java.lang.Class<T> propClass)
                          throws java.lang.ClassCastException
        Gets a runtime property based on a HashMap.
        Specified by:
        getProperty in interface IWebServerPortConfig
        Parameters:
        name - The property name.
        propClass - The class of the property to return if replaced.
        Returns:
        The property, null if not previously set.
        Throws:
        java.lang.ClassCastException - If the object is not null and is not assignable to the type T.
      • getDomainNames

        public java.lang.String getDomainNames()
        Gets the Let's Encrypt domain name associated with this port configuration.
        Returns:
        The domain name as e.g. "hello.example.com", or null if not associated with Let's Encrypt.
      • getDomainNamesSet

        public java.util.Set<java.lang.String> getDomainNamesSet()
        Gets the different domain names as String set. The domains names set includes all defined domain names that are configured for this port.
        Returns:
        A new set of domain names.
      • getLetsEncryptDomainNames

        public java.lang.String getLetsEncryptDomainNames()
        Gets the Let's Encrypt domain name(s) associated with this port configuration.
        Specified by:
        getLetsEncryptDomainNames in interface IWebServerPortConfig
        Returns:
        The domain name(s) as e.g. "hello.example.com", or null if not associated with Let's Encrypt.
      • getLetsEncryptDomainNamesSet

        public java.util.Set<java.lang.String> getLetsEncryptDomainNamesSet()
        Gets a new set of Let's Encrypt domain name(s) associated with this port configuration.
        Specified by:
        getLetsEncryptDomainNamesSet in interface IWebServerPortConfig
        Returns:
        The domain name(s) as e.g. "hello.example.com", or empty list if not associated with Let's Encrypt.
      • getLetsEncryptDomains

        public LetsEncryptDomain[] getLetsEncryptDomains()
        Gets the Let's Encrypt domain instances associated with this port configuration.
        Returns:
        The domain instance that are configured and found.
      • getLetsEncryptDomain

        public LetsEncryptDomain getLetsEncryptDomain​(java.lang.String domain)
        Gets the Let's Encrypt domain instance for a specific domain name.
        Parameters:
        domain - The domain name.
        Returns:
        The Let's encrypt domain for that name, null if not found.
      • setConfig

        public void setConfig​(PortConfig config)
        Sets the Jetty server connector configuration used with this configuration.
        Specified by:
        setConfig in interface IWebServerPortConfig
        Parameters:
        config - The configuration instance.
      • restartConnector

        public void restartConnector()
        Restarts the Jetty (HTTPS) server connector after Let's Encrypt domain certificate renewal.
      • getController

        public IPortController getController()
        Gets the Jetty port controller.
        Returns:
        The port controller, or null if not initialized.
      • getExcludedSecureProtocols

        public java.lang.String[] getExcludedSecureProtocols()
        Gets the excluded secure protocols.
        Specified by:
        getExcludedSecureProtocols in interface IWebServerPortConfig
        Returns:
        Empty string for none, otherwise e.g. "TLSv1", "TLSv1.1".