v0.5.114: убраны зашитые касания боевых хостов ячейки A (mail/035)

- дефолт-URL экрана входа -> BuildConfig.DEFAULT_SERVER_URL (-Pf7DefaultServerUrl, по умолчанию пусто)
- TalkHelper: preconnect только к origin сессии, хардкод hpb-prod.f7cloud.ru удалён
- AuthErrors: нейтральный пример адреса сервера
This commit is contained in:
b-dev-mobile
2026-07-07 10:04:11 +00:00
parent 1affb66874
commit 6a07f1f40a
6 changed files with 24 additions and 12 deletions
+1
View File
@@ -2,5 +2,6 @@
Формат: `ГГГГ-ММ-ДД | версия | изменение | контракты | риск`
- 2026-07-07 | v0.5.114 (122) | Санитария по mail/035: дефолт-URL входа → BuildConfig.DEFAULT_SERVER_URL (свойство f7DefaultServerUrl, по умолчанию пусто); убран preconnect к боевому hpb-prod.f7cloud.ru (TalkHelper); нейтральный пример URL в тексте ошибки | INTEGRATION.md: зашитых касаний хостов A больше нет | низкий: preconnect — только оптимизация; сборка на билд-сервере ещё не прогонялась
- 2026-07-07 | v0.5.113 (121) | Онбординг в федерацию F7: заведены INTEGRATION.md и CHANGELOG.md, роль `b-dev-mobile` (ячейка B). Код без изменений | INTEGRATION.md создан: задекларированы потребляемые контракты тенанта (OCS/WebDAV/CalDAV/CardDAV/Mail/spreed v4/Dashboard/Richdocuments/f7push) | нет
- до 2026-07-07 | ≤0.5.113 | Разработка вне федерации (сессии Cursor Agent): нативные модули файлы/почта/календарь/контакты/задачи/Talk/поддержка/Deck | хронология — PROJECT-STATUS.md | —
+6 -2
View File
@@ -13,8 +13,12 @@ legacy WebView-оболочки `android-webview`.
(Android, minSdk 26).
- Сборка — на инфраструктуре ячейки B (markov-cloudi), Gradle 9.3 / AGP 8.13 / JDK 21.
- Хосты ячейки A приложение не занимает; взаимодействие — только как HTTP-клиент
тенанта F7 (URL сервера задаёт пользователь на экране входа,
дефолт в UI: `https://forbion.f7cloud.ru``app/.../AppScaffold.kt:682`).
тенанта F7. URL сервера задаёт пользователь на экране входа; дефолт поля —
`BuildConfig.DEFAULT_SERVER_URL` (свойство сборки `f7DefaultServerUrl`,
по умолчанию пусто — прод-URL в сборку не вшит, решение mail/035).
- Зашитых обращений к боевым хостам A нет с v0.5.114: убраны дефолт
`forbion.f7cloud.ru` (экран входа) и preconnect к `hpb-prod.f7cloud.ru`
(`TalkHelper.buildPreconnectScript` — теперь только origin сессии).
## Отдаёт (provides)
- APK `ru.forbion.f7cloud.mobile` (текущая версия 0.5.113 / code 121,
+9 -2
View File
@@ -17,10 +17,16 @@ android {
applicationId 'ru.forbion.f7cloud.mobile'
minSdk 26
targetSdk 36
versionCode 121
versionName '0.5.113'
versionCode 122
versionName '0.5.114'
missingDimensionStrategy 'default', 'f7'
multiDexEnabled true
// Дефолтный адрес сервера на экране входа. Прод-URL в сборку не вшивать
// (решение integrator-b, f7_platform mail/035): для дев-сборки под свой
// стенд задать -Pf7DefaultServerUrl=https://... или f7DefaultServerUrl в
// ~/.gradle/gradle.properties. Без свойства поле входа пустое.
buildConfigField 'String', 'DEFAULT_SERVER_URL',
"\"${project.findProperty('f7DefaultServerUrl') ?: ''}\""
}
buildTypes {
@@ -34,6 +40,7 @@ android {
buildFeatures {
compose true
buildConfig true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
@@ -69,6 +69,7 @@ import kotlinx.coroutines.withContext
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.tasks.await
import ru.forbion.f7cloud.mobile.BuildConfig
import ru.forbion.f7cloud.core.auth.AppLockStore
import ru.forbion.f7cloud.core.auth.AuthSession
import ru.forbion.f7cloud.core.auth.AuthStore
@@ -679,7 +680,7 @@ private fun LoginScreen(onLogin: (AuthSession) -> Unit) {
val serverFocus = remember { FocusRequester() }
val usernameFocus = remember { FocusRequester() }
val passwordFocus = remember { FocusRequester() }
var serverUrl by rememberSaveable { mutableStateOf("https://forbion.f7cloud.ru") }
var serverUrl by rememberSaveable { mutableStateOf(BuildConfig.DEFAULT_SERVER_URL) }
var username by rememberSaveable { mutableStateOf("") }
var password by rememberSaveable { mutableStateOf("") }
var trustAllCerts by rememberSaveable { mutableStateOf(false) }
@@ -23,7 +23,7 @@ fun Throwable.toLoginErrorMessage(): String {
"Для внутреннего dev-сервера без Let's Encrypt включите «Доверять сертификату»."
}
if (this is UnknownHostException) {
return "Сервер не найден. Проверьте адрес (например https://forbion.f7cloud.ru)."
return "Сервер не найден. Проверьте адрес (например https://cloud.ваш-домен.ru)."
}
if (this is ConnectException) {
return "Не удалось подключиться к серверу. Проверьте интернет и адрес."
@@ -2,14 +2,15 @@ package ru.forbion.f7cloud.feature.talk
/** Talk / WebRTC helpers (порт F7TalkHelper из android-webview). */
object TalkHelper {
const val HPB_HOST = "hpb-prod.f7cloud.ru"
// Preconnect только к серверу сессии. Хост HPB НЕ хардкодим: боевой
// hpb-prod.f7cloud.ru — §3-ресурс ячейки A (f7_platform mail/035), и клиент,
// направленный на другой бэкенд, не должен его касаться. Если преконнект к
// HPB понадобится — брать хост из capabilities spreed (signalingServers).
fun buildPreconnectScript(serverOrigin: String): String {
val origin = serverOrigin.replace("'", "\\'")
val hpb = HPB_HOST.replace("'", "\\'")
return """
(function(){
var h='$hpb',o='$origin';
var o='$origin';
function link(rel,href){
try{
if(document.querySelector('link[rel="'+rel+'"][href="'+href+'"]'))return;
@@ -18,8 +19,6 @@ object TalkHelper {
(document.head||document.documentElement).appendChild(l);
}catch(e){}
}
link('dns-prefetch','https://'+h);
link('preconnect','https://'+h);
link('dns-prefetch',o);
link('preconnect',o);
})();