Software licensing: technical details
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.
A license has a number of main attributes:
- ID — license unique id.
- Name — any name that a client specifies 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 license cannot be activated automatically (e.g if the server doesn't have a public IP address).
- Expiration date — the date when the software license will expire.
- Update date — the date when updates for the software license will expire.
Besides, there are a number of hidden attributes. The most important one is the "Internal expiration date". From a 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, you won't be able to use your license, however, it won't affect other services on your server.
To ensure continuous performance, 24 hours before the internal licensing period expires, a new license file with updated information and a new period will be downloaded. 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 the HTTP port 80 or the https port 443 (depending on the version).
- A license key is taken from the existing license file, or is specified on the license activation form, or is sent as the parameter through the licctl utility.
- A list of IP addresses is based on the IP-addresses that ihttpd listens. If the IP address is 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 connect 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 included in the list of partner IP addresses who has the automatic order and renewal options enabled. 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 issued only on IPv4 for 14 days. When this period is over, a trial 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 website.
Possible replies from the licensing server
- BADINFO — invalid request from the 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.