old_console/license/README.md
2024-11-02 14:12:45 +03:00

117 lines
No EOL
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Клиент сервера лицензий
Данное приложение дает возможность активации продукте через сервер лицензий.
## Сборка
Перед началом сборки, нужно [настроить](https://gitlab.iwarma.ru/groups/iwa/dev/license/-/wikis/home) 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"
}
}
```