7.7 KiB
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 — сформировать файл лицензии.
Иконки действий
Строка статуса
Показывает состояние базы (готова/ошибка/в работе).
Работа с клиентами
Добавление
- Нажмите
Add client. - Вкладка
File autofilled:- перетащите JSON-файл на область или нажмите и выберите файл;
- данные будут подставлены автоматически.
- Вкладка
Main info:- заполните поля вручную.
- Вкладка
License time:- включите
License is temporally, чтобы выбрать дату окончания.
- включите
- Нажмите
Save.
Важно: поле Hardware hash можно редактировать только при добавлении записи.
Редактирование
- Выберите одну запись.
- Нажмите
Edit client. - Измените данные и нажмите
Save.
Если нужно изменить Hardware hash, удалите запись и создайте новую.
Удаление
Выберите записи и нажмите Delete client (или через контекстное меню). Подтвердите удаление.
Обновление списка
Используйте Reload table для перечитывания данных из базы.
Генерация файла лицензии
- Выберите одну запись в таблице.
- Нажмите
Get license file. - Укажите место сохранения (по умолчанию —
Documents/илиHome/). - Файл сохраняется с расширением
.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и пересоберите проект.