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:
@@ -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
@@ -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
@@ -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);
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user