HTTP API для локальной сети (opt-in): режимы, заряд, статус (XIC-13) - #6
Merged
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… «не берём» (XIC-2) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…к (XIC-13) Хост на HttpListener (без ASP.NET Core), выключен по умолчанию; bind 127.0.0.1, LAN — отдельным тумблером с firewall-правилом LocalSubnet. Токен: sha256-хеш, Bearer, constant-time. Настройки в ProgramData под ACL (запись только админам, владелец проверяется) — правкой config.json API не включить. Вкладка «HTTP API» с пер-командными тумблерами; GET /status + POST /mode|care|travel|owl. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…C-13) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…C-13) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ture (XIC-13) Синхронизация документации с фичей HTTP API: список возможностей и раздел использования в README (+ англ. резюме), модули в CLAUDE «Архитектура» и дереве docs/03, запись в CHANGELOG [Unreleased], перенос пункта в ROADMAP ✅ Сделано (unreleased), поверхность атаки и компромиссы в SECURITY. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что это
Опциональный HTTP API для управления XiControl из локальной сети — с телефона или из автоматизаций Home Assistant. Реализация XIC-13.
По умолчанию выключен — включается в Настройки → HTTP API. Когда выключен, хост не создаётся вовсе (0 нагрузки на CPU, замерено).
Маршруты
Все — с заголовком
Authorization: Bearer <токен>:GET /statusPOST /mode{"value":"turbo"}POST /care{"on":true}POST /travel{"on":true}POST /owl{"on":true}Решения дизайна
HttpListener(http.sys), не ASP.NET Core — без второго shared framework, в духе «не усложнять». ~100 строк, нулевые новые зависимости.127.0.0.1по умолчанию. Доступ из сети — отдельный тумблер с предупреждением; тогда создаётся правило брандмауэра со скоупомLocalSubnet(удаляется при выключении, как schtasks у автозапуска — только по явному действию).%ProgramData%\XiControl\api.jsonпод ACL «запись только Administrators/SYSTEM» + проверка владельца при чтении: сторонний процесс без прав администратора не может ни включить сервер, ни подменить токен-хеш. Опирается на границу elevation — единственную реальную локальную границу (DDL/DPAPI(CurrentUser) отвергнуты, разбор в описании issue).Команды маршалятся в UI-поток и идут через тот же
AppController, что меню/панель/клавиши.Проверки
dotnet build XiControl.sln -c Release— 0 ошибок / 0 предупреждений.dotnet test— 141 зелёный (+9 новыхApiRouterTests: авторизация, пер-командные 403, исчерпывающий белый список)./statusс реальными данными; 403 на выключенную команду; 404 на/autostart. Безопасность: записьapi.jsonи создание файлов в папке из непривилегированной консоли → Access denied; в localhost-режиме порт по LAN-адресу недоступен; в LAN-режимеPOST /travelс телефона отрабатывает.Локализация
Все строки вкладки — в
ru/en/zh(parity-тест зелёный).Документация
README (раздел «HTTP API» + список возможностей + англ. резюме), CLAUDE.md («Что это» + «Архитектура»), CHANGELOG
[Unreleased], ROADMAP✅ Сделано (unreleased), SECURITY.md (поверхность атаки и компромиссы), docs/03-architecture.md (дерево модулей).🤖 Generated with Claude Code