← Назад к Wiki
Посібник розробника

Протокол взаємодії модулів і ядра

Протокол взаємодії модулів і ядра

🇬🇧 English version

Версія: 1.0 | Статус: Нормативний документ

Огляд

Модуль і ядро спілкуються лише через HTTP на localhost. Прямий доступ модуля до SQLite, /secure/, або інших модулів — заборонений.

1. Життєвий цикл модуля та видача токена

  1. Розпакування ZIP → валідація manifest.json
  2. Sandbox тестування (docker run --rm, timeout 60с)
  3. Генерація module_token (secrets.token_urlsafe(48)) — зберігається лише sha256 хеш
  4. Генерація webhook_secret
  5. Створення .env.module файлу (видаляється після docker run)
  6. Запуск контейнера → GET /health → 200
  7. SDK автоматично підписується на події

2. Bearer Token аутентифікація

Authorization: Bearer <module_token>
# Ядро перевіряє: sha256(token) → пошук в таблиці modules

Rate limiting: 100 req/sec на токен. Токен інвалідується лише при деінсталяції.

3. Event Bus доставка

Підписки зберігаються лише в пам'яті. При рестарті ядра всі always_on модулі перезапускаються та переподписуються автоматично.

Webhook містить X-Selena-Signature: sha256=<hmac>. SDK верифікує підпис автоматично.

4. UI Віджети

UI Core завантажує віджети через iframe з sandbox. Кожен модуль відає: GET /health, GET /widget.html, GET /settings.html, GET /icon.svg.

UI token (read-only, TTL 1 год) передається через query параметр.

5. Secrets Vault та OAuth Proxy

OAuth Device Flow (RFC 8628) з QR-кодом. Токен зберігається зашифрованим (AES-256-GCM). SSRF захист: лише https://, блокування приватних IP.

6. Cloud Sync

Heartbeat кожні 60с з HMAC-SHA256. Long-poll команди: INSTALL_MODULE, STOP_MODULE, REBOOT, SYNC_STATE, FACTORY_RESET.

7. Integrity Agent

Незалежний systemd процес. Ніколи не імпортує ядро. Спілкується через файлову систему, Docker CLI та HTTP.

Протокол взаємодії модулів і ядра | Wiki · Selena Home AI