Floating Controller - JEB Decompiler
Author: PNF Software

# Floating Controllers

## Getting Started

JEB Pro Floating provide more flexibility than individual builds, and can be distributed to many users within an organization. A floating build licensed for N seats will allow N clients to connect to it concurrently. When a client leaves, its seat is vacated, allowing another JEB client to start by connecting to the Controller.

JEB Clients regularly probe the Controller to determine whether or not they are allowed to run. The check is based on the number of seats available in your licensed build: for example, a floating license for 5 seats allows 5 different users to run JEB concurrently.

In order to start the Controller, use the `--controller` flag along with the `-c` flag. Example on a Linux machine:

    $ jeb_linux.sh -c --controller

Additional Controller-specific command-line flags (`--interface`, `--port`, `--protocol`) are detailed later.

After starting the Controller, follow the prompt: You will asked to input your password, accept the license agreement, and generate a license key.

Sample log output:

    C:\jeb>jeb_wincon.bat -c --controller
    JEB decryption password: ***************
    ...
    <EULA>
    ...
    Write "yes" to agree, then press enter: yes
    Hello Nicolas Falliere. Set up your JEB controller by generating a license key. This one-time operation will only take a few seconds.
    Please visit https://www.pnfsoftware.com/genlk, and use the following "license data" blob to generate a key
    License data: .............................................
    Input your license key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Mode: Controller for floating clients
    Note: X client(s) may simultaneously connect to this controller instance
    Listening on 0.0.0.0/0.0.0.0:23477...

If you need to customize the Controller's address or protocol, you may now stop it with the Ctrl+C keyboard command.

## Controller Settings

After the first step is completed successfully, executing the controller should display something like the following:

    C:\jeb>jeb_wincon.bat -c --controller
    Mode: Controller for floating clients
    Note: X client(s) may simultaneously connect to this controller instance
    Listening on 0.0.0.0/0.0.0.0:23477...

As can be seen, by default, the controller is listening on port 23477 on all interfaces, and uses the HTTP protocol. This can be changed by editing the configuration file `bin/jeb-client.cfg` and adding entries: `.ControllerInterface`, `.ControllerPort`, and `.ControllerProtocol`. Protocols currently supported are HTTP (0, the default) and HTTPS (1).

Example 1: the Controller listens exclusively on localhost, port 30000:

    .ControllerInterface = localhost
    .ControllerPort = 35000

Example 2: the Controller listens on 10.0.0.25, port 8443, and uses HTTPS instead of HTTP:

    .ControllerInterface = 10.0.0.25
    .ControllerPort = 8443
    .ControllerProtocol = 1

## Client Settings

Start your desktop client using one of the standard start-up scripts. For example, on a Windows machine:

    $ jeb_wincon.bat

Your JEB Client settings should mirror your Controller settings: specify the controller hostname/interface, port, and protocol, in your client's jeb-client.cfg.

The first time you start your JEB Desktop client, a dialog box will request you to specify your Controller's location. You will also have the opportunity to configure your proxy settings, if you are using one.

## Technical Notes

- JEB Clients as well as JEB Controller are the same binary file: there is no separate package for the Controller.
- The --controller flag is only available for Floating builds.
- The Controller should be started before Clients.
- Clients regularly contact the Controller. Therefore, the Controller should always be reachable by running instances of JEB. In order to minimize potential problems due to network latency, it is recommended to run JEB and the Controller within the same local network.
- By default, the Controller listens on all interfaces, on port 23477. This can be changed by setting the .ControllerInterface and .ControllerPort values in your configuration file.
- By default, the Controller and Clients use HTTP for communication. In order to use HTTPS, make sure to set the .ControllerProtocol value in your configuration file to 1. (HTTPS is only available for JEB 3.0.6 and above.)
- JEB Client instance and the Controller may be run in different environments (eg, a Controller on Linux, Clients on Windows or macOS, etc.)
- The controller property '.ControllerMessage' is used to provide messages, visible by clients on the Controller portal.

## Updating the Controller

There is no auto-update feature in the controller. The update procedure is:

- Check your registered email address for a JEB update email ("JEB xxx is available...")
- Download the software archive
- Copy the archive to the root of your JEB folder and rename the file to `update.zip`
- Create a text file named `update.pwd`
- Store the email-provided password inside this file
- Start your controller as normal (eg, `... -c --controller`); the update will be installed automatically

#### Search

From here you can search these documents. Enter your search terms below.

#### Keyboard Shortcuts

Keys | Action
--- | ---
`?` | Open this help
`n` | Next page
`p` | Previous page
`s` | Search