Ringtone picker через startActivityForResult вместо Activity Result API с большим requestCode.
Seaca
Seaca (Security Event Alert Center App) — нативный мобильный клиент Security Alert Center (SAC) для Android.
Оператор видит те же данные, что и в веб-интерфейсе SAC: обзор, события, отчёты, проблемы и хосты. Push-уведомления приходят по тем же правилам severity и cooldown, что Telegram/email/webhook на сервере. Управление пользователями, каналами оповещений и привязкой устройств — только в веб-SAC (раздел «Настройки»).
Связанные репозитории
| Репозиторий | Роль |
|---|---|
| security-alert-center | Сервер SAC: API, UI, оповещения, управление мобильными устройствами |
| ssh-monitor | Агент Linux |
| RDP-login-monitor | Агент Windows |
Стек
| Слой | Технология |
|---|---|
| UI | Kotlin, Jetpack Compose, Material 3 |
| Сеть | Retrofit / OkHttp, Kotlin Serialization |
| Хранение | DataStore + Android Keystore (токены, URL сервера) |
| Push | Firebase Cloud Messaging (FCM) |
| Минимум SDK | Android 8.0 (API 26) |
FCM — бесплатно?
Да. Firebase Cloud Messaging — бесплатный сервис Google для доставки push на Android (и не только). Платный тариф Firebase нужен для других продуктов (Analytics, Crashlytics на больших объёмах и т.д.); для стандартных data/notification push лимиты практически не ограничивают типичный SAC. Данные событий формируются на вашем SAC-сервере; через FCM уходит только компактный payload (заголовок, id, deep link).
Альтернатива без Google (UnifiedPush) в этом проекте не планируется.
Что есть в приложении
- Обзор, события, отчёты, проблемы, хосты (списки и карточки)
- Ack / Resolve для роли
operatorи выше - Push с переходом в карточку события или problem
- Биометрическая блокировка при открытии (локально)
- Первичная привязка к серверу по коду регистрации, который выдаёт администратор в веб-SAC
Чего нет в приложении (только веб)
- Управление пользователями SAC
- Настройки каналов (Telegram, SMTP, webhook), severity, policy
- Выдача и отзыв кодов регистрации, список устройств, способ входа на устройство — всё это в Настройки → Мобильные устройства на сервере
Привязка телефона к серверу
- Администратор в веб-SAC включает «Разрешать подключение мобильных устройств».
- Создаёт код регистрации для пользователя (срок действия, одноразовый или с лимитом использований).
- Оператор в Seaca: URL сервера (или из QR) + код + логин/пароль (если код не привязан к предварительной сессии).
- Приложение регистрирует FCM-токен; устройство появляется в списке на сервере.
- Администратор может отключить устройство, сменить разрешённый способ входа, переименовать.
Подробный план — docs/ROADMAP.md.
Статус
Версия: 0.4.0 (Android: Kotlin, Compose; enroll, UI, ack/resolve, FCM)
Документация
| Документ | Назначение |
|---|---|
| docs/operator-guide.md | Инструкция для оператора |
| docs/ROADMAP.md | План разработки |
| SAC: seaca-mobile.md | Админ: коды, устройства, сессия |
| SAC: seaca-fcm.md | FCM на сервере |
Сборка
Требуется JDK 17+ (Android Studio JBR или отдельная установка) и Android SDK (local.properties с sdk.dir=…).
# Опционально: google-services.json в app/ (из Firebase, не в git) — для FCM
./gradlew assembleDebug
# Windows:
gradlew.bat assembleDebug
APK: app/build/outputs/apk/debug/app-debug.apk
Без google-services.json приложение собирается, но FCM не инициализируется (просмотр данных работает).
Лицензия
Как у остальных репозиториев семейства SAC (уточняется владельцем проекта).