Software licensing: technical details

From ISPWiki
Jump to: navigation, search

A software licensing system is specially designed to prevent unauthorized use of software products by associating a license with a certain IP address or unique activation key.

General information

A license has a number of main attributes:

  • ID - license unique id.
  • Name - an arbitrary name that a client enters when ordering the license.
  • IP-address - an IP address is required for automatic activation. Users are allowed to change the IP address only once a month to prevent unauthorized copying of licenses.
  • Activation key - can be used for manual activation, if the the license cannot be activated automatically (e.g if the server doesn't have a public IP address).
  • Expiration date - date when the software license will expire.
  • Update date - date when updates for the software license will expire.

Besides, there are a number of hidden attributes, the most important one is "Internal expiration date". It means that from the technical point of view we provide a license for a short period of time rather than for the whole licensing period. Currently, this period may vary from 2 to 3 days, and it cannot exceed the actual licensing period. Once the internal period is over, a you won't be able to use your license, however, it won't affect other services on your server.

Fault-tolerant system

To ensure continuous performance, within 24 hours before the internal licensing period expires, a new license file with updated information and new period will be downloaded. Thus, your server will have enough time (24 hours) to avoid temporary issues with server connection, etc.

Moreover, we use multiple geographically separated licensing servers that are accessed both by IP (to avoid DNS problems) and domain names. A license request is sent to the nearest accessible server. If an error occurred while obtaining the license, a new request will be sent to the next server unless all accessible servers are used.

Every licensing server is not associated with our billing system or any other external systems and has its own database. Data synchronization is performed real-time, and can be restored within minutes in case of failure.

How it works

A request is sent to the licensing server via http port 80 or https port 443 (depending on version).

While sending a license request, its key and server IP address are sent as parameters.

  • A license key is taken from the existing license file, or is provided in the license activation key, or is sent through the licctl utility.
  • A list of IP addresses is based on the IP-addresses that ihttpd listens. If the IP address is set to 0.0.0.0 or ::, all server's addresses that you can view with the ip addr list command, will be used.

When the server receives a request, it will search for the license by its key and check the updatekey internal parameter, which value is modified every time the product requests a license. Thus, only the last server will obtain correct updatekey, and can request a new license. If the key is present in the database, the updatekey matches, and the license is not expired, a new license will be generated and passed back.

If the key is missing, or updatekey does not match, the system will try to automatically identify the license by IP. It will search by the IP addresses that were passed as servers IPs + the IP address that sent the request. If several active licenses are bound to those IP addresses, the license with the largest ID will be selected. In order to avoid fake IP addresses, the license server is trying to connected to the customer's server using the license IP address ( a full URL is taken from the ihttpd configuration), and upload the license. If this operation fails, the error message will be generated.

If the license is not found or already expired:

  • Its IP address is put into the range of IP addresses for the partner, who has the automatic order and renewal. In this case an activation or renewal request will be sent to the billing system. The billing will return an error message asking to try again in 1 minute.
  • If the license is found by its IP address, but it has been already expired, the License expired error message will be returned.
  • In all other cases the system will try registering a trial license. An ISPmanager trial can be issues only on IPv4 for 14 days. When this period is over, a trail license for this IP address can be ordered only in 6 months. Trial licenses for all other software products come with some limitations that are described at our web-site

Possible replies from the licensing server

  • BADINFO — invalid request from client
  • MYSQL FAILED — the MySQL server is not accessible/doesn't respond. This is a technical issue, the request will be sent to another server.
  • MYSQL — error getting license information. This is a technical issue, the request will be sent to another server.
  • NOIPV6 — you are trying to obtain an ISPmanager trial on IPv6
  • EXPIRED — your license has expired
  • OK — your license has been successfully uploaded to the server
  • OK\n... — your license has been successfully generated and sent back.
  • BACK QUERY FAILED — the license is found, but it was not uploaded to the server.
  • BADTIME — your server time differs from the license server for more than 1 hour.
  • ORDER — an attempt to order/prolong a license. Try again.
  • TOOOLD - this error occurs on licenses which version is earlier than 5.45. Update your panel to resolve this issue.

FAQ

* How can I switch from trial, if my commercial license expired?

Delete the license file (e.g.: rm etc/ispmgr.lic) to remove the information about your previous license and a trial will be allocated. However, if your product's configuration exceeds the limits of a trial version, you will be asked to activate a commercial license.

  • Can I delete the file license without serious consequences?

We do not recommend that you do this, because the license cannot be identified. Automatic identification will be required. This procedure may fail and you will have to enter the activation key, besides the license with the newer Id belonging to another user can be allocated (as we allow different users to buy licenses on the same IP address).

  • I cannot activate my license

If the license was not activated automatically due to identification or server connections issues, try activating your license with the activation key and do not delete the license file (otherwise, you will have to re-generate the key and activate the license once again). You can activate the license regardless your network infrastructure NAT, proxy, firewall).