Для разработчиков

Как программы «Техно без паники» узнают о новых версиях и безопасно обновляются.

1. Узнать последнюю версию

Для каждой программы и платформы сервер обновлений отдаёт файл с описанием последней версии:

GET https://updates.test.technobezpaniki.ru/<код программы>/<платформа>/stable.json
GET https://updates.test.technobezpaniki.ru/<код программы>/<платформа>/beta.json

Пример: https://updates.test.technobezpaniki.ru/zepp-desktop/windows/stable.json

Коды платформ: windows, android, linux. Код программы указан в админке на странице программы.

Ответ:

{
  "schema": 1,
  "app": "tbp-pogoda",
  "platform": "windows",
  "channel": "stable",
  "version": "1.4.2",
  "published_at": "2026-09-28T12:00:00+03:00",
  "mandatory": false,
  "min_version": null,
  "notes": "- Исправлено определение города",
  "file": {
    "name": "tbp-pogoda-1.4.2-windows.zip",
    "url": "https://updates.test.technobezpaniki.ru/files/…",
    "size": 1048576,
    "sha256": "9f86d081884c7d65…",
    "kind": "zip"
  },
  "signature": "base64…",
  "signature_algorithm": "ed25519"
}

2. Решить, обновляться ли

  • Если version новее установленной — есть обновление.
  • Если установленная версия старее min_version — обновление обязательное.
  • Сравнение версий: по числам через точку (1.10 новее 1.9), версия без суффикса новее, чем с -beta/-rc.

Можно поручить сравнение серверу:

GET https://updates.test.technobezpaniki.ru/v1/check?app=<код>&platform=<платформа>&version=<текущая>[&channel=beta]
→ { "update_available": true, "mandatory": false, "latest": { …как stable.json… } }

3. Скачать и проверить

  1. Скачайте файл по file.url.
  2. Посчитайте SHA-256 файла и сравните с file.sha256.
  3. Проверьте подпись Ed25519 (signature, base64) открытым ключом, встроенным в программу. Подписывается строка из пяти строк, разделённых \n:
    tbp-update-v1
    <app>
    <platform>
    <version>
    <sha256>
  4. Только если обе проверки прошли — устанавливайте.

Открытый ключ подписи

Встройте его в программу. Он же доступен по адресу https://updates.test.technobezpaniki.ru/v1/public-key.

1oGvnN2qNiBkN7aqxN9vVKtMVA0iYxQ0zo7NTg+yOlg=
В формате PEM
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA1oGvnN2qNiBkN7aqxN9vVKtMVA0iYxQ0zo7NTg+yOlg=
-----END PUBLIC KEY-----

Автоматическая публикация версий

Скрипт сборки может выпускать версии сам — по ключу API, который создаётся в админке:

curl -H "Authorization: Bearer <ключ>" \
  -F app=<код программы> -F platform=windows \
  -F notes="Что нового" -F file=@build/setup.exe \
  https://admin.test.technobezpaniki.ru/api/v1/releases

Необязательные поля: version (иначе берётся из файла), channel=beta, mandatory=1, published=0 (черновик).