Class WebServerPortConfig

java.lang.Object
com.iizix.prop.GProp<GProp<?>[]>
com.iizix.prop.PropCnr
com.iizix.server.prop.WebServerPortConfig
All Implemented Interfaces:
EventListener, IGProp<GProp<?>[]>, IPropCnr, IWebServerPortConfig, Cloneable
Direct Known Subclasses:
EditorWebServerPortConfig

public class WebServerPortConfig extends PropCnr implements IWebServerPortConfig
Property container for the configuration of a Port "group" of the web server. A port group is defines a bind address for a single or a range of ports to use, and the protocol to bind to (HTTP or HTTPS).
  • Field Details

  • Constructor Details

    • 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 Details

    • getType

      public 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 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 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 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 String getKeyStorePassword()
      Gets the KeyStore password.
      Specified by:
      getKeyStorePassword in interface IWebServerPortConfig
      Returns:
      The password, null for none.
    • getKeyStore

      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:
      KeyStoreException - If no Provider supports a KeyStoreSpi implementation for the PKCS#12 type.
      NoSuchAlgorithmException - If the algorithm used to check the integrity of the KeyStore cannot be found.
      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.
      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.
      UnrecoverableEntryException - For errors in keystore.
    • getKeyStore

      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:
      KeyStoreException - If no Provider supports a KeyStoreSpi implementation for the PKCS#12 type.
      NoSuchAlgorithmException - If the algorithm used to check the integrity of the KeyStore cannot be found.
      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.
      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.
      UnrecoverableEntryException - For errors in keystore.
    • setProperty

      public <T> T setProperty(String name, T property, Class<T> propClass) throws 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:
      ClassCastException - If the object is not null and is not assignable to the type T.
    • getProperty

      public <T> T getProperty(String name, Class<T> propClass) throws 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:
      ClassCastException - If the object is not null and is not assignable to the type T.
    • getDomainNames

      public 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 Set<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 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 Set<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(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 String[] getExcludedSecureProtocols()
      Gets the excluded secure protocols.
      Specified by:
      getExcludedSecureProtocols in interface IWebServerPortConfig
      Returns:
      Empty string for none, otherwise e.g. "TLSv1", "TLSv1.1".