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
67 lines
5.8 KiB
Markdown
67 lines
5.8 KiB
Markdown
# Администрирование ИКАР
|
||
|
||
Панель доступна по адресу `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`.
|
||
|
||
## Проверка
|
||
|
||
```powershell
|
||
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`: реквизиты читаются внутри сервера, проверяется доступ,
|
||
защита изменений, резервные копии и целостность базы. В отчёт секреты не входят.
|