Files
IKAR/ikar_server/ADMIN.md
T
sevenhill b4c27da560
Tests / test (push) Canceled after 0s
Native crypto / native-crypto (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s
Add full IKAR administration console with secure session controls
2026-10-07 23:42:02 +03:00

5.8 KiB
Raw Blame History

Администрирование ИКАР

Панель доступна по адресу https://ikar.kusoft.xyz/admin/. Вход использует Admin__Username и Admin__Password из закрытой серверной конфигурации. Учётная запись обычного пользователя мессенджера доступа к панели не даёт.

Панель включает:

  • Обзор: база, пользователи, чаты, сообщения, вложения и активные сессии.
  • Пользователи: поиск, фильтры, страницы, профиль, устройства уведомлений, отзыв одной или всех сессий, блокировка, разблокировка и удаление.
  • Чаты и каналы: настройки приватности, публичное имя, срок жизни сообщений, темы, роли и разрешения, передача владения, приглашения и заявки на вход.
  • Сообщения: поиск в чате, скрытие и восстановление. Вложения сохраняются при скрытии сообщения для возможности восстановления; истёкшие сообщения восстанавливать нельзя. Зашифрованное содержимое отображается в том виде, в котором оно хранится на сервере: расшифровка на сервере отсутствует.
  • Жалобы: очередь, исходные данные, просмотр объекта, подтверждение или отклонение, блокировка автора или скрытие сообщения, повторное открытие. Старые жалобы автоматически переносятся из журнала модерации.
  • Боты: поиск, включение и отключение, имя, описание, HTTPS-адрес мини-приложения и замена токена. Новый токен показывается один раз. Создание ботов сохраняет существующий процесс через @botfatherbot.
  • Медиа: поиск, наличие файла, скачивание и удаление.
  • Обновления: текущая версия Android, размер APK, SHA-256, сохранённые пакеты, совместимость клиентов и переход к каталогу Аргус. Публикация релизов выполняется существующими проверенными инструментами tool/publish_*.
  • Обслуживание: состояние диска, память, резервные копии, отложенные сообщения, очередь push, повтор доставки, удаление задач и очистка TTL партиями до 500 сообщений.
  • Журнал администратора: действия, объект, результат, комментарий, IP, поиск, страницы и экспорт текущей страницы в CSV.
  • Доступ: действующие административные сессии и их отзыв.

Сессия администратора действует 12 часов. Выход, отзыв сессии и смена серверных реквизитов делают её cookie недействительным. Запросы изменения требуют CSRF-токена. В production cookie передаётся только по HTTPS. Административные страницы и ответы не кешируются; в журнал не записываются пароли, токены ботов и содержимое запросов. Вход ограничен десятью попытками за пять минут с одного IP. Отзыв сессии пользователя закрывает её SignalR соединения и отключает токены API.

Ключи cookie хранятся в Data/AdminKeys, на постоянном томе данных. Для работы за reverse proxy параметр ReverseProxy__KnownProxies задаёт список точных доверенных IP через запятую. На рабочем сервере инструмент tool/deploy_server_fixes.py определяет адрес существующего Docker gateway; порт API остаётся привязан к 127.0.0.1.

Проверка

dotnet test ikar_server/src/Ikar.Server.Tests/Ikar.Server.Tests.csproj
./tool/start_admin_test_server.ps1
python tool/seed_admin_ui_test.py
node tool/verify_admin_ui.cjs

Для браузерной проверки нужны Playwright и Chromium/Edge. При необходимости PLAYWRIGHT_MODULE указывает путь к установленному модулю Playwright, а ADMIN_BROWSER — к браузеру. Тестовый сервер слушает только loopback, использует отдельную временную базу и тестовые реквизиты. После проверки остановите PID из artifacts/admin-local-server.json.

После установки tool/verify_admin_console.py запускается на Pi вместе с tool/admin_http.py: реквизиты читаются внутри сервера, проверяется доступ, защита изменений, резервные копии и целостность базы. В отчёт секреты не входят.