Дамп портативный и идемпотентный: CREATE IF NOT EXISTS / OR REPLACE, без DROP/CASCADE. Можно безопасно применять на другом окружении (существующую схему не меняет).
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.
KeystoreHelper.getSigningCertificatePublicKeyBase64(context)
и возьми значение из логов (Base64 без переносов).
keytool -exportcert -rfc -keystore /path/to/keystore.jks -alias YOUR_ALIAS | openssl x509 -pubkey -noout | openssl pkey -pubin -outform DER | base64
signingCertPublicKey.
.jks — это upload key. На устройстве приложение подписано другим ключом из Play Console.
; 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
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.
--print-certs-pem есть не во всех SDK).
verify --print-certs печатает отпечатки сертификата, не public key — его недостаточно.
openssl x509 -in deployment_cert.pem -pubkey -noout | openssl pkey -pubin -outform DER | base64 | tr -d '\n'
KeystoreHelper.getSigningCertificatePublicKeyBase64(context) — они должны совпасть посимвольно.
keystorePublicKey сюда добавлять не нужно; если у ключа включён DEVICE_KEY_ENFORCE, устройство всё равно должно пройти enroll.
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
keytool -list -v -keystore /path/to/keystore.jks -alias YOUR_ALIAS
printf "%s" "PUBLIC_KEY_HEX" | xxd -r -p | base64
apksigner verify --print-certs /path/to/app.apk
apksigner verify --print-certs /path/to/app.apk | awk -F': ' '/Signer #1 certificate:/ {p=1} p && /Public key/ {getline; print}'
Настройки сразу передаются мобильным приложениям. После каждого сохранения версия возможностей увеличивается — клиент применит новые настройки только один раз.
Настройки работы каталога, веб-плеера, проверки стримов, базы данных и ключей. Значения сохраняются в БД и имеют приоритет над .env. Параметры с пометкой «перезапуск» применятся после перезапуска соответствующего процесса.
Непустое значение в БД важнее .env. Серым — наследование (.env или дефолт из кода).
Ширину колонок можно менять (сохраняется в браузере). Удаление каталожных ключей скрывает их; произвольные — удаляет из БД.
Сначала показаны станции, которые проверил или ещё должен проверить worker. Статистика из каталога. Обновление только по кнопке — без автополлинга. «Сначала» ставит флаг для воркера; сброс очереди произойдёт на следующем проходе.