# Клиент сервера лицензий Данное приложение дает возможность активации продукте через сервер лицензий. ## Сборка Перед началом сборки, нужно [настроить](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" } } ```