DTL_LicenseServer — Reference Manual

Functional and technical description of the license service

Version v1.0-6Date July 21, 2026License MITLanguage Français

Preface

DTL_LicenseServer is a lightweight license-management service for Windows applications. It centralizes license creation, machine authorization, online validation, and revocation, while keeping server secrets and direct database access out of distributed software.

This manual is the product’s descriptive reference. It defines its responsibilities, architecture, data, interfaces, and guarantees. It is intended for technical owners, developers, operators, and people evaluating the system.

Out of scope. Installation, configuration, administration commands, and integration procedures will be documented in a separate User Guide. This manual contains no operating instructions.

Context and scope

Purpose

The service associates a usage entitlement with a product, an email address, and a maximum number of machines. It decides whether a machine may receive or retain an activation and produces a signed token attesting that decision.

Trust boundaries

Excluded responsibilities

DTL_LicenseServer is not a payment system, customer portal, or identity directory. It provides no graphical administration interface and does not replace access control, backup, or hosting supervision.

Architecture

Windows application ── HTTPS / JSON ──► PHP API ──► MariaDB │ │ │ └── Ed25519: token signatures └── SHA-256 fingerprint + local token Administration utility ── HTTPS + X-Admin-Key ──► license creation

Server API

PHP 8.1+JSONHTTPS

Exposes health, activation, validation, deactivation, and administrative creation operations. The shared library applies checks, accesses data, and manages signatures.

Database

MariaDBInnoDButf8mb4

Acts as the source of authority for the state of a license and its machines. The distributed schema is database/netdtl_licenses.sql.

Administration utility

Python 3.10+Command line

Creates licenses through the administrative interface and displays the plaintext key only once. Its messages are available in English and French.

Embeddable client

PythonWindows

Computes a stable machine fingerprint, communicates with the service, and stores the signed activation token and control metadata.

License lifecycle

License created
Machine activated
Token validated
Known machine refresh
Deactivation and token revocation
Reactivation when quota is available

Creation

A license belongs to a product and has a reference email, a status, an optional expiry, and an activation ceiling. The plaintext key is returned only on creation; only its SHA-256 digest is subsequently retained.

Activation and refresh

The server checks the product, key, email, status, expiry, and quota. A first machine receives an activation row and an Ed25519 token. A later request from the same non-revoked machine refreshes its information without consuming another slot.

Deactivation and reactivation

Deactivation records the activation’s revocation time, after which its token is invalid. If the same machine later presents the license credentials again and a slot is available, the server reuses its row, clears the revocation time, and issues a new token. The quota is checked before reactivation.

Statuses

StatusMeaning
activeThe license may authorize and validate machines, subject to all other checks.
suspendedThe entitlement is temporarily disabled.
revokedThe entitlement has been withdrawn.
expiredThe license expiry has passed.

Data model

ObjectRole
productsCatalog of products that may receive licenses, including code and active state.
licensesCustomer identity, key digest, status, expiry, quota, and notes.
activationsAssociation between a license and machine fingerprint, client information, and optional revocation.
license_eventsHistory of creations, activation decisions, refusals, and validations, with network context.
admin_usersStructure reserved by the schema; it is unused by the current API.
license_statusSummary view for license state and activation counts.

Activation token

The signed token binds a decision to a product, license, activation, and machine. Its payload contains the format version, product_code, license_id, activation_id, machine_id_hash, and issued_at. Its signature protects integrity; current state remains subject to server-side validation.

Functional capabilities

The schema’s example product uses the code MYPRODUCT and the name MyProduct. It illustrates the service’s generic nature and does not prescribe the licensed software’s name.

Service interface

All responses use JSON. The interface separates health observation, activation-related operations, and administrative creation.

EndpointMethodProtectionResponsibility
health.phpGETNoneService and MariaDB connection status.
activate.phpPOSTLicense key + emailMachine activation, refresh, or reactivation.
validate.phpPOSTSigned tokenOnline validation of an existing activation.
deactivate.phpPOSTSigned tokenRevocation of the current machine.
admin_create_license.phpPOSTX-Admin-KeyAdministrative license creation.

Response classes

Ordinary successes use HTTP classes 200 and 201. Invalid requests, missing authentication, license refusals, unknown objects, and quota conflicts use the 400 classes. Configuration, signing, and database failures use the 500 classes. Responses contain a success indicator and, for refusals, a stable error code.

Security model

Core principle. A valid signature proves a token’s integrity, not the license’s current state. Online validation remains authoritative for later suspension, revocation, expiry, or deactivation.

Internal components

ComponentResponsibility
server/lib.phpConfiguration, connection, JSON responses, shared checks, tokens, and event logging.
server/activate.phpActivation decision, quota enforcement, and token issuance.
server/validate.phpCryptographic verification and consistency with current data.
server/deactivate.phpRevocation of the activation designated by the token.
server/admin_create_license.phpProtected creation and one-time return of the plaintext key.
server/health.phpVersion identification and MariaDB status.
admin/DTLlicense.pyCommand-line administrative client.
client/dtl_license_client.pyWindows fingerprint, service calls, and local token persistence.
dtl_licenseserver_i18n.pyBilingual catalog shared by the Python tools.

Invariants

Known limitations

The service version is 1.0.6. Any change to the protocol, schema, or token payload must preserve compatibility or explicitly declare its break.

Glossary

TermDefinition
LicenseAn entitlement granted for a product, customer, and maximum number of machines.
ActivationA persistent association between a license and a machine fingerprint.
TokenA signed attestation issued by the server for an activation.
FingerprintA SHA-256 digest derived from identifiers available on the Windows machine.
RevocationThe state of an activation whose token must no longer be accepted.
QuotaThe maximum number of simultaneously non-revoked activations.