.. | ||
.gitignore | ||
CHANGELOG.md | ||
config_example.yaml | ||
go.mod | ||
go.sum | ||
logging.go | ||
main.go | ||
README.md |
Клиент сервера лицензий
Данное приложение дает возможность активации продукте через сервер лицензий.
Сборка
Перед началом сборки, нужно настроить go чтобы он мог работать с приватным репозиторием.
В начале, вызываем go mod tidy
чтобы получить все зависимости, после этого, выполняем go build
в текущей папке чтобы собрать приложение.
API
Генерация токена
Чтобы получить токен активации, пользователь должен вызвать /token/
с запросом GET. Аргумент serial
должно быть предоставлено. Это должен быть "полный" uuid лицензии.
UUID запроса полной лицензии на сервере лицензий:
{
licenseFullUuid(id: 1)
}
с получение ответа:
{
"data": {
"licenseFullUuid": "373f50bb-1c1b-4675-b19e-51089a3cd8a6"
}
}
Запрос к клиенту будет выглядеть так:
curl -X GET localhost:8050/token/?serial=373f50bb-1c1b-4675-b19e-51089a3cd8a6
На что мы получим ответ:
{"status":"ok","reason":"","response":"==================BEGIN=================\r\nNz9QuxwbRnWxnlEImjzYpmGI2RCl+zuDs453Zw/N\r\n6HIAAAAeMjAyMS0wOC0wMVQxMDoyODozMi4yNTY1MjYyNjFa\r\n==================END==================="}
Поле response
вместе со всеми \r\n
необходимо отправить на сервер лицензий для получения файла активации.
Активация лицензии
При получени нашего зароса активации, сервер лицензий проверяет его и отвечает нам файлом лицензии:
{"license":"eyJ1dWlkIjoiNzhkMDg3OTAtN2QzNi00YjBiLWFiNDEtY2Q2NWI3ZDVhMDliIiwiaGFyZHdhcmUiOiI2MTg4ZDkxMC1hNWZiLTNiODMtYjM4ZS03NzY3MGZjZGU4NzIiLCJjdXN0b21lciI6IlNpZW1lbnMiLCJwcm9kdWN0IjoiQ29uc29sZSIsInR5cGUiOiJFTlRFUlBSSVNFIiwiZmVhdHVyZXMiOltdLCJvcHRpb25zIjp7fSwiZXZhbHVhdGlvblN0YXJ0IjoiMjAyMS0wNy0zMFQyMDoxODo1OC4zOTY3NTdaIiwiZXZhbHVhdGlvbkVuZCI6IjIwMjEtMDgtMjlUMjA6MTg6NTguMzk2NzY1WiJ9","signature":"O+wkQ5ApkX22qmhf29Bz4q3kYYmW0fk0gLLrXzGBAKT0XQP9FrA4L2eXsooJl5qLcQ3D9vIk9pufCgz4P5bP2/L6urxDA97t/qVKOjwryb8Mi98F23cfY0mFmavUvgJLXEwouFGx8/k05wMZW1ogkvp5/sZMzjnTmUR+8g42y5EpfxFuqrpsODe765t8kqj8hYF7QxPocpg3Zz6ULZM7jgCFaaEGPxePgEayv6bbo1veHJUlIyfJAN2axDdkMQrgpUaOjfAwADgQchx4ps7NAQx2MuFcTqEILh1XqwN9C3uDyfzJhUXcdqHRzGhYQ7JrAbpEop3VnmdNdDfQ34++3mFodx2gWMmc6C/816eDETUCz75evZle63gUlTdVADBsJE+/3RWeg0ta1WIYcDqgfi6kgXSX1Q4wVWZEfDvnSGV9L/ywdX+P514E7BL10KRS5YmateRUU9NdUOXJdVyylrkWpQF43l3TgA6/CVg+M1jEqPXPrwdCYdCLi76bajY5uyy3MfF451XvMJXYTlwdyltNzlU0ZFukt8ihqyWIVjigP6HHH1Xk8IbpNB/5+grwTHvyLlvLgycNvNvvgD4g/0188kSzcaEH8Aqxel0FXpbU+7zXnLKU1yPDSNlWiKPbrR6eJOspNDFNk8mbbYUloCk2vdoqPWWe0WQDZDN6SUVTlCl1jY80CdXpzKkC8ph4osMr5bAuD/4la0Wx08yurrUIxhsMKmRlXlEwwKNVK7IxDcJTjmv91i9i0cdF+npYz5tla81D1XDNDiOMDCweWO8KmMEwd38P7s8JLJ0OA9GJze7BeZOkyCqdxWWitpYBXjt+H7mt1zS/GiWbV6mJ4PbuUes6N8FVxDQxHirzyhQ7MvqYZne8X0G12iV0QaNkvnHnKY40d6H1KOYlDJhRIwBd58Eg3WZ46GOyNLW3gRkocEFoprNjtCAzZnrVS9+Xnhxe2cdkW3bwX69Ef7mpkV18dZxxy+Q1FIPj3KPMVAmnAdU2aVQKcZPyMXlZZkRy/lfb24LTL7bwrYSh90/wLZhKSXE+uvxD/xR1TxHP5EXmAU1k4eEDwDpSCt5dQz9NI1zh3vOIupEKw7A4azV41n4I1D9rk2uuzBs4yKX3r1ZCQX7Shv+tGJI8FgOM6eaCX3aHZa6BxerViBLNmxUpAxkdMMfyW2yfPu1sGTG5vm2sDueTjPsjmT00/y94t/1I5xZqArLPA7OAcKE/FOoYGurF6Yxlb/YLnmYIcX1ZeH1RhvlSU0QljVoGRygyo0F85SDEuR5Z8hTMnyAYqJP6KNQ0Ac4zvR3ljTlMvaYf17yo+NGPLdXqHHhYyMlAQBKhywICSULm661SdUzhAhUUzw=="}
Чтобы активировать продукт, нужно отправить этот "файл" через POST запрос на API /activate/
, например так:
curl -X GET localhost:805POST localhost:8050/activate/ -H "Content-Type: application/json" -d '{"license":"eyJ1dWlkIjoiNzhkMDg3OTAtN2QzNi00YjBiLWFiNDEtY2Q2NWI3ZDVhMDliIiwiaGFyZHdhcmUiOiI2MTg4ZDkxMC1hNWZiLTNiODMtYjM4ZS03NzY3MGZjZGU4NzIiLCJjdXN0b21lciI6IlNpZW1lbnMiLCJwcm9kdWN0IjoiQ29uc29sZSIsInR5cGUiOiJFTlRFUlBSSVNFIiwiZmVhdHVyZXMiOltdLCJvcHRpb25zIjp7fSwiZXZhbHVhdGlvblN0YXJ0IjoiMjAyMS0wNy0zMFQyMDoxODo1OC4zOTY3NTdaIiwiZXZhbHVhdGlvbkVuZCI6IjIwMjEtMDgtMjlUMjA6MTg6NTguMzk2NzY1WiJ9","signature":"O+wkQ5ApkX22qmhf29Bz4q3kYYmW0fk0gLLrXzGBAKT0XQP9FrA4L2eXsooJl5qLcQ3D9vIk9pufCgz4P5bP2/L6urxDA97t/qVKOjwryb8Mi98F23cfY0mFmavUvgJLXEwouFGx8/k05wMZW1ogkvp5/sZMzjnTmUR+8g42y5EpfxFuqrpsODe765t8kqj8hYF7QxPocpg3Zz6ULZM7jgCFaaEGPxePgEayv6bbo1veHJUlIyfJAN2axDdkMQrgpUaOjfAwADgQchx4ps7NAQx2MuFcTqEILh1XqwN9C3uDyfzJhUXcdqHRzGhYQ7JrAbpEop3VnmdNdDfQ34++3mFodx2gWMmc6C/816eDETUCz75evZle63gUlTdVADBsJE+/3RWeg0ta1WIYcDqgfi6kgXSX1Q4wVWZEfDvnSGV9L/ywdX+P514E7BL10KRS5YmateRUU9NdUOXJdVyylrkWpQF43l3TgA6/CVg+M1jEqPXPrwdCYdCLi76bajY5uyy3MfF451XvMJXYTlwdyltNzlU0ZFukt8ihqyWIVjigP6HHH1Xk8IbpNB/5+grwTHvyLlvLgycNvNvvgD4g/0188kSzcaEH8Aqxel0FXpbU+7zXnLKU1yPDSNlWiKPbrR6eJOspNDFNk8mbbYUloCk2vdoqPWWe0WQDZDN6SUVTlCl1jY80CdXpzKkC8ph4osMr5bAuD/4la0Wx08yurrUIxhsMKmRlXlEwwKNVK7IxDcJTjmv91i9i0cdF+npYz5tla81D1XDNDiOMDCweWO8KmMEwd38P7s8JLJ0OA9GJze7BeZOkyCqdxWWitpYBXjt+H7mt1zS/GiWbV6mJ4PbuUes6N8FVxDQxHirzyhQ7MvqYZne8X0G12iV0QaNkvnHnKY40d6H1KOYlDJhRIwBd58Eg3WZ46GOyNLW3gRkocEFoprNjtCAzZnrVS9+Xnhxe2cdkW3bwX69Ef7mpkV18dZxxy+Q1FIPj3KPMVAmnAdU2aVQKcZPyMXlZZkRy/lfb24LTL7bwrYSh90/wLZhKSXE+uvxD/xR1TxHP5EXmAU1k4eEDwDpSCt5dQz9NI1zh3vOIupEKw7A4azV41n4I1D9rk2uuzBs4yKX3r1ZCQX7Shv+tGJI8FgOM6eaCX3aHZa6BxerViBLNmxUpAxkdMMfyW2yfPu1sGTG5vm2sDueTjPsjmT00/y94t/1I5xZqArLPA7OAcKE/FOoYGurF6Yxlb/YLnmYIcX1ZeH1RhvlSU0QljVoGRygyo0F85SDEuR5Z8hTMnyAYqJP6KNQ0Ac4zvR3ljTlMvaYf17yo+NGPLdXqHHhYyMlAQBKhywICSULm661SdUzhAhUUzw=="}'
Важно! ЗаголовокContent-Type
должен быть выставлен в application/json
.
В ответ, мы получаем:
{"status":"ok","reason":"","response":"license activated"}
Что означает, что лицензия была проверена и принята.
Авто активация ицензии
Если у приложения есть доступ в Интернет, мы можем активировать лицензию одним запросом API:
curl -X GET localhost:8050/auto/?serial=78d08790-7d36-4b0b-b3d4-0b7b34c04dfc
В ответ, мы получаем такой же ответ о результате активации:
{"status":"ok","reason":"","response":"license activated"}
Информация о лицензии
Когда лицензия активирована, программное обеспечение может вызвать GET запрос на API /license/
, чтобы проверить
статус лицензии и получить его функции. Если нет файла лицензии, или он поврежден, или у лицензии
истек срок действия, будет возвращена ошибка 404.
Только если лицензия действительна, API вернет 200 с информацией о лицензии.
Запрос на этот api:
curl -X GET localhost:8050/license/
Ответ с валидной лицензией:
{
"status":"ok",
"reason":"",
"response":{
"uuid":"78d08790-7d36-4b0b-ab41-cd654fef2f25",
"hardware":"6188d910-a5fb-3b83-b38e-77670fcde872",
"customer":"Siemens",
"product":"Console",
"type":"ENTERPRISE",
"features":[
"antivirus",
"opc_da"
],
"options":{
"input_10":"10"
},
"evaluationStart":"2021-08-02T20:02:20.226357Z",
"evaluationEnd":"2021-09-01T20:02:20.226360Z"
}
}