Requirements
-------------------------------------
1. JDK 8 suitable for your platform.
2. Supported browsers: Chrome, Firefox, Safari, Edge.
3. Ignite cluster should be started with `ignite-rest-http` module in classpath.
 For this copy `ignite-rest-http` folder from `libs\optional` to `libs` folder.

How to run
-------------------------------------
1. Unpack ignite-web-console-x.x.x.zip to some folder.
2. Change work directory to folder where Web Console was unpacked.
3. Start ignite-web-console-xxx executable for you platform:
    For Linux: `sudo ./ignite-web-console-linux`
    For macOS: `sudo ./ignite-web-console-macos`
    For Windows: `ignite-web-console-win.exe`

NOTE: For Linux and macOS `sudo` required because non-privileged users are not allowed to bind to privileged ports (port numbers below 1024).

4. Open URL `localhost` in browser.
5. Login with user `admin@admin` and password `admin`.
6. Start web agent from folder `web agent`. For Web Agent settings see `web-agent\README.txt`.

NOTE: Cluster URL should be specified in `web-agent\default.properties` in `node-uri` parameter.

Technical details
-------------------------------------
1. Package content:
    `libs` - this folder contains Web Console and MongoDB binaries.
    `user_data` - this folder contains all Web Console data (registered users, created objects, ...) and
     should be preserved in case of update to new version.
    `web-agent` - this folder contains Web Agent.
2. Package already contains MongoDB for macOS, Windows, RHEL, CentOs and Ubuntu on other platforms MongoDB will be downloaded on first start. MongoDB executables will be downloaded to `libs\mogodb` folder.
3. Web console will start on default HTTP port `80` and bind to all interfaces `0.0.0.0`.
3. To bind Web Console to specific network interface:
    On Linux: `./ignite-web-console-linux --server:host 192.168.0.1`
    On macOS: `sudo ./ignite-web-console-macos --server:host 192.168.0.1`
    On Windows: `ignite-web-console-win.exe --server:host 192.168.0.1`
4. To start Web Console on another port, for example `3000`:
    On Linux: `sudo ./ignite-web-console-linux --server:port 3000`
    On macOS: `./ignite-web-console-macos --server:port 3000`
    On Windows: `ignite-web-console-win.exe --server:port 3000`

All available parameters with defaults:
    Web Console host:                              --server:host 0.0.0.0
    Web Console port:                              --server:port 80

    Enable HTTPS:                                  --server:ssl false
    Disable self registration:                     --server:disable:signup false

    MongoDB URL:                                   --mongodb:url mongodb://localhost/console

    Enable account activation:                     --activation:enabled false
    Activation timeout(milliseconds):              --activation:timeout 1800000
    Activation send email throttle (milliseconds): --activation:sendTimeout 180000

    Mail service:                                  --mail:service "gmail"
    Signature text:                                --mail:sign "Kind regards, Apache Ignite Team"
    Greeting text:                                 --mail:greeting "Apache Ignite Web Console"
    Mail FROM:                                     --mail:from "Apache Ignite Web Console <someusername@somecompany.somedomain>"
    User to send e-mail:                           --mail:auth:user "someusername@somecompany.somedomain"
    E-mail service password:                       --mail:auth:pass ""

SSL options has no default values:
    --server:key "path to file with server.key"
    --server:cert "path to file with server.crt"
    --server:ca "path to file with ca.crt"
    --server:passphrase "Password for key"
    --server:ciphers "Comma separated ciphers list"
    --server:secureProtocol "The TLS protocol version to use"
    --server:clientCertEngine "Name of an OpenSSL engine which can provide the client certificate"
    --server:pfx "Path to PFX or PKCS12 encoded private key and certificate chain"
    --server:crl "Path to file with CRLs (Certificate Revocation Lists)"
    --server:dhparam "Diffie Hellman parameters"
    --server:ecdhCurve "A string describing a named curve"
    --server:maxVersion "Optional the maximmu TLS version to allow"
    --server:minVersion "Optional the minimum TLS version to allow"
    --server:secureOptions "Optional OpenSSL options"
    --server:sessionIdContext "Opaque identifier used by servers to ensure session state is not shared between applications"
    --server:honorCipherOrder "true or false"
    --server:requestCert "Set to true to specify whether a server should request a certificate from a connecting client"
    --server:rejectUnauthorized "Set to true to automatically reject clients with invalid certificates"

Documentation for SSL options: https://nodejs.org/api/tls.html#tls_tls_createsecurecontext_options

Sample usages:
    `ignite-web-console-win.exe --mail:auth:user "my_user@gmail.com" --mail:auth:pass "my_password"`
    `ignite-web-console-win.exe --server:port 11443 --server:ssl true --server:requestCert true --server:key "server.key" --server:cert "server.crt" --server:ca "ca.crt" --server:passphrase "my_password"`

Advanced configuration of SMTP for Web Console.
-------------------------------------
1. Create sub-folder "config" in folder with Web Console executable.
2. Create in config folder file "settings.json".
3. Specify SMTP settings in settings.json (updating to your specific names and passwords):

Sample "settings.json":
{
    "mail": {
        "service": "gmail",
        "greeting": "My Company Greeting",
        "from": "My Company Web Console <some_name@gmail.com>",
        "sign": "Kind regards,<br>My Company Team",
        "auth": {
            "user": "some_name@gmail.com",
            "pass": "my_password"
        }
    }
}

Web Console sends e-mails with help of NodeMailer: https://nodemailer.com.

Documentation available here:
   https://nodemailer.com/smtp
   https://nodemailer.com/smtp/well-known

In case of non GMail SMTP server it may require to change options in "settings.json" according to NodeMailer documentation.

Troubleshooting
-------------------------------------
1. On Windows check that MongoDB is not blocked by Antivirus/Firewall/Smartscreen.
2. Root permission is required to bind to 80 port under macOS and Linux, but you may always start Web Console
   on another port if you don't have such permission.
3. For extended debug output start Web Console as following:
     On Linux execute command in terminal: `DEBUG=mongodb-* ./ignite-web-console-linux`
     On macOS execute command in terminal: `DEBUG=mongodb-* ./ignite-web-console-macos`
     On Windows execute two commands in terminal:
         `SET DEBUG=mongodb-*`
         `ignite-web-console-win.exe`
