old_console/license
2024-11-02 14:12:45 +03:00
..
.gitignore Initial migration 2024-11-02 14:12:45 +03:00
CHANGELOG.md Initial migration 2024-11-02 14:12:45 +03:00
config_example.yaml Initial migration 2024-11-02 14:12:45 +03:00
go.mod Initial migration 2024-11-02 14:12:45 +03:00
go.sum Initial migration 2024-11-02 14:12:45 +03:00
logging.go Initial migration 2024-11-02 14:12:45 +03:00
main.go Initial migration 2024-11-02 14:12:45 +03:00
README.md Initial migration 2024-11-02 14:12:45 +03:00

Клиент сервера лицензий

Данное приложение дает возможность активации продукте через сервер лицензий.

Сборка

Перед началом сборки, нужно настроить 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"
   }
}