Создание супер админа

Верификация

Radio Angel Admin — вход

Google и Apple для админки ещё не настроены.

Загрузка...

Radio Angel Admin

Управление админами

Права на таблицы

Файлы

Текстовые файлы и публичные маршруты. Для защищённых файлов включите проверку мобильного клиента.

База данных

Дамп и SQL

Дамп портативный и идемпотентный: CREATE IF NOT EXISTS / OR REPLACE, без DROP/CASCADE. Можно безопасно применять на другом окружении (существующую схему не меняет).

Дамп и SQL


Таблицы

    Encrypt / Decrypt

    AES-256-CBC. JSON — API wire; Brotli — сжатый+шифрованный payload (если используется).

    JSON — API-ответы и legacy .txt (AES(JSON)). Brotli — CDN *_br*: Base64(AES(Brotli(utf8))).

    server — runtime-ключ с сервера; local — тот же ключ, что зашит в приложении. Словарь/пресеты CDN — обычно server.

    Keystore ключи

    Нужен публичный ключ из signing certificate (один на все установки приложения, не ключ устройства). Как получить через логи: в Android приложении вызови KeystoreHelper.getSigningCertificatePublicKeyBase64(context) и возьми значение из логов (Base64 без переносов).

    Как получить через cmd (несколько вариантов):

    Вариант A: keytool → exportcert (самый простой)
    1) Найди файл keystore, которым подписан APK/AAB.
    2) Выполни:
    keytool -exportcert -rfc -keystore /path/to/keystore.jks -alias YOUR_ALIAS | openssl x509 -pubkey -noout | openssl pkey -pubin -outform DER | base64
    Возьми результат (одна строка Base64) и вставь в поле "Публичный ключ".

    Release keystore (проверенная команда)
    Формат этой команды правильный (SPKI DER → Base64 без переносов) — так же, как Android отдаёт signingCertPublicKey.
    Но ключ должен быть из того сертификата, которым реально подписан установленный APK, а не upload-ключа.
    Если включён Google Play App Signing, локальный .jks — это upload key. На устройстве приложение подписано другим ключом из Play Console.

    1) Из локального JKS (сработает только если этим же ключом подписан установленный APK). В конце нужен ; echo — иначе приглашение терминала (имя пользователя) прилипает к Base64, и ключ при копировании ломается:
    keytool -exportcert -keystore sofment-release-key.jks -alias YOUR_ALIAS -storepass YOUR_PASSWORD | openssl x509 -inform DER -pubkey -noout | openssl pkey -pubin -outform DER | base64 | tr -d '\n';echo

    2) Надёжнее — из APK, который стоит на телефоне / из Play (совпадает с тем, что шлёт приложение).
    Сначала v1-подпись (если в APK есть META-INF/*.RSA):
    unzip -p app-release.apk 'META-INF/*.RSA' | openssl pkcs7 -inform DER -print_certs | openssl x509 -pubkey -noout | openssl pkey -pubin -outform DER | base64 | tr -d '\n'
    Если файлов несколько, подставь точное имя из unzip -l app-release.apk | grep META-INF.
    Если RSA/EC в META-INF нет (только v2/v3) — PEM из Play Console или новый apksigner (--print-certs-pem есть не во всех SDK).
    Старый apksigner verify --print-certs печатает отпечатки сертификата, не public key — его недостаточно.

    3) Или сертификат App signing key из Play Console (App integrity → App signing), не Upload key:
    openssl x509 -in deployment_cert.pem -pubkey -noout | openssl pkey -pubin -outform DER | base64 | tr -d '\n'

    Сверь строку с логом приложения: KeystoreHelper.getSigningCertificatePublicKeyBase64(context) — они должны совпасть посимвольно.
    Это identity-ключ (whitelist). Отдельный per-device keystorePublicKey сюда добавлять не нужно; если у ключа включён DEVICE_KEY_ENFORCE, устройство всё равно должно пройти enroll.

    Debug keystore (~/.android/debug.keystore)
    Alias по умолчанию: androiddebugkey, пароль: android
    keytool -exportcert -rfc -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android | openssl x509 -pubkey -noout | openssl pkey -pubin -outform DER | base64

    Вариант B: keytool -list -v (через Public Key HEX)
    1) keytool -list -v -keystore /path/to/keystore.jks -alias YOUR_ALIAS
    2) Скопируй поле Public Key (HEX), убери пробелы/переносы:
    printf "%s" "PUBLIC_KEY_HEX" | xxd -r -p | base64

    Вариант C: через APK (если есть подписанный APK)
    apksigner verify --print-certs /path/to/app.apk
    Скопируй Certificate DN / SHA-256 тут не подходит — нужен именно public key.
    Для public key используй:
    apksigner verify --print-certs /path/to/app.apk | awk -F': ' '/Signer #1 certificate:/ {p=1} p && /Public key/ {getline; print}'
    Если вывод в HEX — преобразуй так же, как в варианте B.

    Список ключей

    Возможности приложения

    Настройки сразу передаются мобильным приложениям. После каждого сохранения версия возможностей увеличивается — клиент применит новые настройки только один раз.

    Общие возможности

    Через запятую. Один вариант отключит выбор на клиентах и покажет это значение.
    Для обоих списков. При одном варианте берётся он, независимо от этого поля.
    Увеличится на 1 после сохранения.
    Выключено — эквалайзер скрыт у всех, включая Pro. Не зависит от списка Pro-функций.

    Подписка

    Выключено для платформы — используются только её флаги платформы из каталога.

    Планы подписки и возможности настраиваются отдельно для iOS и Android. Общие правила лимитов находятся ниже каталога функций.

    iOS
    Планы подписки
    Возможности iOS
    Android
    Планы подписки
    Возможности Android
    Android only
    iOS only
    Общие правила возможностей
    Клиент держит splash не меньше этого времени. Пустое или некорректное значение — 3 секунды.

    Доступ и безопасность

    Подпись ответов мобильного API

    Сервер подписывает каждый ответ /api/mobile/* алгоритмом Ed25519. Сначала добавьте публичный ключ в новую сборку приложения, затем сохраните приватный ключ здесь. Поле приватного ключа не заполняется при повторном открытии страницы.

    iOS
    Android

    Выберите только один источник. При сохранении сервер копирует его приватный ключ и Key ID на вторую платформу.

    Настройки сервера

    Настройки работы каталога, веб-плеера, проверки стримов, базы данных и ключей. Значения сохраняются в БД и имеют приоритет над .env. Параметры с пометкой «перезапуск» применятся после перезапуска соответствующего процесса.

    Вход и двухфакторная аутентификация

    Загрузка…

    QR для 2FA

    Секрет:

    Переменные окружения

    Непустое значение в БД важнее .env. Серым — наследование (.env или дефолт из кода). Ширину колонок можно менять (сохраняется в браузере). Удаление каталожных ключей скрывает их; произвольные — удаляет из БД.

    Проверка стримов

    Сначала показаны станции, которые проверил или ещё должен проверить worker. Статистика из каталога. Обновление только по кнопке — без автополлинга. «Сначала» ставит флаг для воркера; сброс очереди произойдёт на следующем проходе.

    Нажмите «Обновить», чтобы загрузить статистику.

    Редактировать пользователя

    Добавить слово в пресет

    Добавить слово в словарь

    Слово:

    Одобрить запрос

    Слово:

    Отклонить запрос

    Слово:

    Строка

    Custom metadata:

    Редактирование value

    Создать таблицу

    Экспорт таблицы:

    Изменить выбранные станции:

    Отметьте только те параметры, которые нужно применить ко всем выбранным станциям.

    Импорт данных в таблицу:

    Создать FCM сообщение

    Обновить версию

    Текущая: —. Шаг кнопок: 0.0001