Протокол взаємодії модулів і ядра
Протокол взаємодії модулів і ядра
Версія: 1.0 | Статус: Нормативний документ
Огляд
Модуль і ядро спілкуються лише через HTTP на localhost. Прямий доступ модуля до SQLite, /secure/, або інших модулів — заборонений.
1. Життєвий цикл модуля та видача токена
- Розпакування ZIP → валідація manifest.json
- Sandbox тестування (docker run --rm, timeout 60с)
- Генерація
module_token(secrets.token_urlsafe(48)) — зберігається лише sha256 хеш - Генерація
webhook_secret - Створення
.env.moduleфайлу (видаляється після docker run) - Запуск контейнера →
GET /health → 200 - 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.