Floating License

Floating license

Floating licenses work by installing and running a server on a computer in the local network or on a dedicated server. Server installation is covered below. First, we'll look at client-side activation.

Running Autograph with a floating license

After installing the software and launching Autograph for the first time, the node-locked licensing page will appear. Click on the Use a Floating License instead link at the bottom.

This will take you to the floating server configuration page.

Note:

After successfully obtaining a lease from the floating server, subsequently running Autograph will attempt to directly get a lease from the same server to avoid showing the server configuration page again on startup. If you want to drop the active lease or change server configuration, you can do so by clicking on Deactivate in the License Management section of the Preferences.

The floating server address should be the server IP address or URL. The server port should be the one that was sent to the config.xml server file. If the server is hosted on a remote server via HTTPS, you should set the port to 443.

If the server is only accessible through a proxy server, you should enter the proxy server address such as http://user:[email protected]:8080

Clicking on Activate Floating License will contact the floating server instance and try to get a lease from it. When successful, the dialog page will close and show Autograph. In the event of an error, the error message will be visible at the bottom of the page. Make sure that the server address and port are correct and the computer on which the server is hosted is accessible on the network.

When using a floating license, you are not logged in to a Left Angle user account. Any functionalities linked to your Left Angle account are not accessible.

Activating a Floating Server

Before you can use a floating server it must be activated. To activate a floating server online, simply pass the product key like this:

Copy

  FloatingServer.exe -a="ABCD-EFGH-IJKL-MNOP-QRST-UVWX" -config="C:\\Absolute\\Path\\To\\config.xml" -pdets="C:\\Absolute\\Path\To\\AutographStudio.dat"

Online activation will connect to the activation servers using port 80 (HTTP) or port 443 (HTTPS). If you specify a proxy in the configuration file, then the floating server instance will try to connect to the activation servers through that.

If you've already activated and you want to reactivate, then you don't need to pass a new product key. You can just call the floating server with the "-a" command-line argument.

Running the Floating Server

Once activated, the server can be run by using the "-x" command-line argument:

Copy

  FloatingServer.exe -x -config="C:\\Absolute\\Path\\To\\config.xml" -pdets="C:\\Absolute\\Path\To\\AutographStudio.dat"

Installing and running the Floating Server as a service

On Windows and macOS, you can use a simple command-line switch "-i" to set up your floating server. Upon success, the program will return 0; on failure, it will return non-zero.

On Windows this installation does three things:

On macOS this installation does two things:

If you have any firewall software running on macOS then you'll have to set it to allow incoming connections to the floating server instance.

On Windows, start an "Elevated" command prompt (right click "cmd" in the start menu, then click on "Run as Admin"). Then, in the elevate command prompt run the following:

Copy

  FloatingServer.exe -i -config="C:\\Absolute\\Path\\To\\config.xml" -pdets="C:\\Absolute\\Path\To\\AutographStudio.dat"

Or, on macOS:

Copy

  sudo ./FloatingServer -i -config="/Users/absolute/path/to/config.xml" -pdets="/Users/absolute/path/to/AutographStudio.dat"

On Linux, installing the floating server as a service is not supported out of the box, however you can manually build an init script yourself (for systemd, upstart, or any other init system) to launch the server instance when the computer starts.

When running from your init script, you can run the following command-line to start the server:

Copy

  /path/to/FloatingServer -d -silent -config="/absolute/path/to/config.xml" -pdets="/absolute/path/to/AutographStudio.dat"

Uninstalling the Floating Server (macOS and Windows)

To uninstall the floating server, simply use the "-u" command-line switch. Here again, you'll need to run the command from an elevated command prompt:

Copy

  FloatingServer.exe -u -config="C:\\Absolute\\Path\\To\\config.xml" -pdets="C:\\Absolute\\Path\To\\AutographStudio.dat"

Or, on macOS:

Copy

  sudo ./FloatingServer -u -config="/Users/absolute/path/to/config.xml" -pdets="/Users/absolute/path/to/AutographStudio.dat"

On Windows this uninstalling does three things:

On macOS this uninstalling does two things:

For both Windows & macOS this uninstall process leaves the files intact (FloatingServer.exe, config.xml, and resources.dat). If you want the files removed you'll have to remove them after using the "-u" command-line switch.

Deactivating the Floating server

If you want to move the floating server from one computer to another, you have to deactivate from the first computer before you can activate on a second computer:

Copy

  FloatingServer.exe -deact -config="C:\\Absolute\\Path\\To\\config.xml" -pdets="C:\\Absolute\\Path\To\\AutographStudio.dat"

Upgrading the Floating server

We're continually improving the floating server, fixing bugs, improving performance, and adding features.

To upgrade the floating server instance, simply:

Configuring the Floating Server

The config.xml file passed to the floating server allows you to control several server behaviors. For most end-users, almost all of the configuration settings will be good right out of the box. Because the configuration file is an XML file, some characters can't be used because they have a special meaning in XML files. The appropriate "XML entities" must be used in their place:

Copy

    Use this...    ...in place of this
    &          &
    &lt;           <
    &gt;           >
    &quot;         "
    &apos;         '

The configuration file is only loaded at the start of the floating server. If you make any changes to the configuration file while the floating server is running, they'll be ignored until the next time the floating server is started.

<log .../> (Required)

This element configures the log file to write errors, warnings, and any information. For example:

<log file="tfs-log.txt" level="warning"/>

You can use either an absolute path or a relative path. If you use a relative path then the log file will be written relative to the floating server executable file.

<bind .../> (Required)

Set up the port you want the floating server to bind to. For example:

<bind port="13"/>

The floating server instance will listen for TCP connections on this port for both IPv4 and IPv6. If the system doesn't support IPv6, then the floating server instance will only listen on IPv4. <cpu .../> (Required)

Set up how many worker threads you want the server to use. We recommend setting this to 1 thread per CPU "core". If you set this value to "0" then the floating server will automatically detect how many cores the computer has and use that value. For example:

<cpu threads="0"/>

<lease .../> (Required)

Set up how long a license lease should last. The time is in seconds. We recommend 30 minutes (i.e. 1800 seconds):

<lease length="1800"/>

The shorter you make this time, the more often the "client" programs will have to contact this server, and thus, the more load on the server, the more traffic on the network. The only time "long" leases will be a problem is if the client programs end abruptly without first telling the server that the lease is no longer needed. Thus a "zombie" lease will take up one of the lease slots until it expires.

The absolute minimum time you can use is 30 seconds. <isgenuine .../> (Required)

Set how often to recheck this floating server's activation. This floating server instance will contact the activation servers through wyday.com on port 443. (So, https://wyday.com must be whitelisted for this process so that it can contact those sites).

-"days_between" attribute: how many days between check; minimum 1; maximum 90. We recommend 90.

-"grace" attribute: the number of grace period days on an internet failure; maximum 14.

<isgenuine days_between="90" grace="14"/>

<proxy .../> (Optional)

The proxy that this floating server instance will need to use when it needs to contact wyday.com to activate, reactivate, and verify with the servers.

<proxy url="http://user:[email protected]:8080/"/>

Configuring Floating Server for HTTPS communication

The floating server supports HTTPS communication. In addition to (or in place of) the default "raw" binary communication over the port you specified in the "bind" element, you can configure the floating server to communicate over HTTPS. You can do this by "binding" the floating server to an address and port for SCGI communication with an existing web server (e.g. Apache, NGINX, etc.).

This guide covers the very basics of the HTTPS server configuration. We assume you have experience running an HTTPS server.

In the example config.xml file you'll see an XML element like this:


                <scgi just_scgi="false">>
                    <bind address="127.0.0.1" port="42" />
                </scgi>
            

There are 3 options to configure:

For security, we always recommend binding to a local address (like "127.0.0.1") so that all data that touches the floating server must first go through an HTTPS server.

Configure the HTTPS server (Apache)

If you're using the Apache HTTPS server, modify your httpd.conf file to enable the scgi module (so Apache can communicate with the floating server instance):

Copy

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
    LoadModule ssl_module modules/mod_ssl.so

Next add a "VirtualHost" element that will accept HTTP connections and pass them along to the floating server:

Copy

    <VirtualHost yourhostaddress:443>
        # Pass *everything* to the Floating Server via SCGI
        SetEnvIf Request_URI .* proxy-scgi-pathinfo
        ProxyPass / scgi://127.0.0.1:42/

        # ServerName gives the name and port that the server
        # uses to identify itself. This can often be determined
        # automatically, but we recommend you specify it
        # explicitly to prevent problems during startup.
        ServerName yourhostaddress:443

        # Turn SSL on
        SSLEngine on
    </VirtualHost>

Replace "yourhostaddress" with the address name that the floating server instance will be accessed from (i.e. the "public" address -- even if that "public" address is local network specific). Also, if you changed the SCGI "address" or "port" in the config.xml file you'll also need to change the "ProxyPass" directive to use the address and port you changed them to.

Configure the HTTPS server (Nginx)

If you're using the NGINX HTTPS server, first make sure your NGINX has been compiled with the SCGI module. You can do this by running "nginx -V" via commandline and you should see something like this:

Copy

    nginx version: nginx/1.15.7
    built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)
    built with OpenSSL 1.1.1a  20 Nov 2018
    TLS SNI support enabled
    configure arguments: --sbin-path=/usr/local/sbin --with-http_ssl_module --with-http_v2_module --without-http_uwsgi_module --with-pcre-jit --with-threads

If you don't see --without-http_scgi_module in the configure arguments, then you know the NGINX instance was compiled with the SCGI module. It's compiled by default, so it should be available in every vanilla distribution of NGINX.

Next, modify your nginx.conf file to pass all communication to the address / port of your choosing to the floating server instance via SCGI:

Copy

    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name  yourhostaddress;

        # Maximum "request" size (i.e. max size the client sends us)
        client_max_body_size 10m;

        # pass every connection to the Hosted TFS on this machine.
        location / {
            scgi_param  SCGI               1;
            scgi_param  HTTPS              $https if_not_empty;
            scgi_param  REQUEST_METHOD     $request_method;
            scgi_param  CONTENT_LENGTH     $content_length;
            scgi_param  REMOTE_ADDR        $remote_addr;
            scgi_pass   127.0.0.1:42;
        }
    }

Replace yourhostaddress with the address name that the floating server instance will be accessed from (i.e. the "public" address -- even if that "public" address is local network specific). Also, if you changed the SCGI "address" or "port" in the "FloatingServer-config.xml" file you'll also need to change the "scgi_pass" directive to use the address and port you changed them to.

Once both the floating server and HTTPS servers are successfully started, you're ready to test if the floating server is accessible via HTTPS. You can do this by opening a browser on your computer and typing the host address you've configured in your HTTPS server configuration.

So, in this example, "yourhostaddress" is the address that the HTTPS server is accessible from. Type, "https://yourhostaddress" into your browser, and the page should confirm you've configured everything correctly.

Extra activation data

If you see a certificate error page, then make sure you're using SSL certificates signed by a Certificate Authority. There are multiple options available, but the best certificate authority (CA) is free (Let's Encrypt).