Files
LicenseManager/README.md

7.7 KiB
Raw Permalink Blame History

LicenseManager — пользовательская документация

Назначение

LicenseManager — настольное приложение на Qt5 для ведения базы клиентов и выпуска файлов лицензий на основе аппаратного идентификатора.

Возможности

  • хранение клиентов в локальной базе SQLite;
  • добавление, редактирование и удаление записей;
  • импорт данных клиента из JSON-файла (drag-and-drop или выбор файла);
  • выдача файла лицензии по выбранной записи;
  • отображение статуса базы и информации о сборке.

Требования

  • ОС: Linux/Windows/macOS (Qt5);
  • зависимости при сборке: Qt5 (Core, Gui, Widgets, Sql), OpenSSL;
  • для SQLite: системный драйвер Qt QSQLITE (например, пакет libqt5sql5-sqlite в Debian/Ubuntu).

Сборка из исходников

cmake -S . -B build
cmake --build build -j
./build/LicenseManager

Установка как .deb (опционально)

./deb/build.sh /path/to/LicenseManager
sudo dpkg -i licensemanager_*.deb

Первое использование и база данных

  • Приложение хранит данные в ./db.sqlite относительно текущей рабочей директории.
  • При первом запуске, если структура базы отсутствует, приложение предложит создать базу.
  • Если нужен фиксированный путь, запускайте приложение из нужной папки или измените DB_PATH в коде.

Интерфейс

Таблица клиентов

Столбцы:

  • Фамилия, Имя, Отчество
  • Email, Телефон
  • Компания, Город
  • Срок лицензии (если пусто — отображается Permanent)
  • Комментарий

Панель инструментов

  • Add client — добавить запись;
  • Edit client — редактировать выбранную запись;
  • Delete client — удалить выбранные записи;
  • Get info — информация о сборке.

Контекстное меню таблицы

  • Reload table — обновить список;
  • Add/Edit/Delete client — действия с записями;
  • Get license file — сформировать файл лицензии.

Иконки действий

Действие Иконка Файл
App icon App deps/icon.png
Reload table Reload deps/reload.png
Add client Add deps/add.png
Edit client Edit deps/edit.png
Delete client Delete deps/delete.png
Get info Info deps/info.png
Get license file License file deps/getLicenseFile.png
Drop files (автозаполнение) Drop files deps/dropFiles.png

Строка статуса

Показывает состояние базы (готова/ошибка/в работе).

Работа с клиентами

Добавление

  1. Нажмите Add client.
  2. Вкладка File autofilled:
    • перетащите JSON-файл на область или нажмите и выберите файл;
    • данные будут подставлены автоматически.
  3. Вкладка Main info:
    • заполните поля вручную.
  4. Вкладка License time:
    • включите License is temporally, чтобы выбрать дату окончания.
  5. Нажмите Save.

Важно: поле Hardware hash можно редактировать только при добавлении записи.

Редактирование

  1. Выберите одну запись.
  2. Нажмите Edit client.
  3. Измените данные и нажмите Save.

Если нужно изменить Hardware hash, удалите запись и создайте новую.

Удаление

Выберите записи и нажмите Delete client (или через контекстное меню). Подтвердите удаление.

Обновление списка

Используйте Reload table для перечитывания данных из базы.

Генерация файла лицензии

  1. Выберите одну запись в таблице.
  2. Нажмите Get license file.
  3. Укажите место сохранения (по умолчанию — Documents/ или Home/).
  4. Файл сохраняется с расширением .dat (если расширение не указано, оно добавляется автоматически).

Внутри файла содержится зашифрованный (RSA) CBOR/JSON с полями:

  • machineId — аппаратный идентификатор (hardwareHash);
  • validUntil — дата окончания лицензии в ISO-формате (опционально).

Формат JSON для авто‑заполнения

Пример:

{
  "lastName": "Иванов",
  "firstName": "Иван",
  "patronymic": "Иванович",
  "email": "ivan@example.com",
  "phone": "+7(777)777-77-77",
  "city": "Москва",
  "yourCompany": "ООО Ромашка",
  "hardwareHash": "abcdef0123456789"
}

Любое поле можно опустить — оно останется пустым. Для выдачи лицензии важно заполнить hardwareHash.

Хранилище данных

SQLite-файл: db.sqlite в рабочей директории.

Таблица clients:

  • id (INTEGER, PK, AUTOINCREMENT)
  • city, email, firstName, hardwareHash, lastName, patronymic, phone, yourCompany (TEXT, NOT NULL)
  • licenseTime (TEXT, nullable)
  • comment (TEXT, nullable)

Настройки

Размеры окон сохраняются через QSettings (организация LicenseManager). Расположение конфигурации зависит от ОС (на Linux обычно ~/.config/LicenseManager/).

Технический обзор (для сопровождения)

  • Стек: C++20, Qt5 Widgets/Sql, OpenSSL, SQLite.
  • Основные модули:
    • MainWidget — главное окно, таблица, меню, выдача лицензии.
    • LicenseModel — модель таблицы и работа с SQLite (в асинхронных задачах).
    • EditClientDialog — диалог добавления/редактирования, импорт JSON.
    • LicenseGenerator/Crypt — утилиты шифрования и генерации файла (часть функций не привязана к UI).
  • Ресурсы Qt (deps.qrc) включают иконки, tables.ddl для инициализации БД и приватный ключ Key.
  • Для смены ключа шифрования замените deps/Key и пересоберите проект.