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 | 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 | —
|
- до 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).
|
(Android, minSdk 26).
|
||||||
- Сборка — на инфраструктуре ячейки B (markov-cloudi), Gradle 9.3 / AGP 8.13 / JDK 21.
|
- Сборка — на инфраструктуре ячейки B (markov-cloudi), Gradle 9.3 / AGP 8.13 / JDK 21.
|
||||||
- Хосты ячейки A приложение не занимает; взаимодействие — только как HTTP-клиент
|
- Хосты ячейки A приложение не занимает; взаимодействие — только как HTTP-клиент
|
||||||
тенанта F7 (URL сервера задаёт пользователь на экране входа,
|
тенанта F7. URL сервера задаёт пользователь на экране входа; дефолт поля —
|
||||||
дефолт в UI: `https://forbion.f7cloud.ru` — `app/.../AppScaffold.kt:682`).
|
`BuildConfig.DEFAULT_SERVER_URL` (свойство сборки `f7DefaultServerUrl`,
|
||||||
|
по умолчанию пусто — прод-URL в сборку не вшит, решение mail/035).
|
||||||
|
- Зашитых обращений к боевым хостам A нет с v0.5.114: убраны дефолт
|
||||||
|
`forbion.f7cloud.ru` (экран входа) и preconnect к `hpb-prod.f7cloud.ru`
|
||||||
|
(`TalkHelper.buildPreconnectScript` — теперь только origin сессии).
|
||||||
|
|
||||||
## Отдаёт (provides)
|
## Отдаёт (provides)
|
||||||
- APK `ru.forbion.f7cloud.mobile` (текущая версия 0.5.113 / code 121,
|
- APK `ru.forbion.f7cloud.mobile` (текущая версия 0.5.113 / code 121,
|
||||||
|
|||||||
+9
-2
@@ -17,10 +17,16 @@ android {
|
|||||||
applicationId 'ru.forbion.f7cloud.mobile'
|
applicationId 'ru.forbion.f7cloud.mobile'
|
||||||
minSdk 26
|
minSdk 26
|
||||||
targetSdk 36
|
targetSdk 36
|
||||||
versionCode 121
|
versionCode 122
|
||||||
versionName '0.5.113'
|
versionName '0.5.114'
|
||||||
missingDimensionStrategy 'default', 'f7'
|
missingDimensionStrategy 'default', 'f7'
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
// Дефолтный адрес сервера на экране входа. Прод-URL в сборку не вшивать
|
||||||
|
// (решение integrator-b, f7_platform mail/035): для дев-сборки под свой
|
||||||
|
// стенд задать -Pf7DefaultServerUrl=https://... или f7DefaultServerUrl в
|
||||||
|
// ~/.gradle/gradle.properties. Без свойства поле входа пустое.
|
||||||
|
buildConfigField 'String', 'DEFAULT_SERVER_URL',
|
||||||
|
"\"${project.findProperty('f7DefaultServerUrl') ?: ''}\""
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
@@ -34,6 +40,7 @@ android {
|
|||||||
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
compose true
|
compose true
|
||||||
|
buildConfig true
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_17
|
sourceCompatibility JavaVersion.VERSION_17
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ import kotlinx.coroutines.withContext
|
|||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.tasks.await
|
import kotlinx.coroutines.tasks.await
|
||||||
|
import ru.forbion.f7cloud.mobile.BuildConfig
|
||||||
import ru.forbion.f7cloud.core.auth.AppLockStore
|
import ru.forbion.f7cloud.core.auth.AppLockStore
|
||||||
import ru.forbion.f7cloud.core.auth.AuthSession
|
import ru.forbion.f7cloud.core.auth.AuthSession
|
||||||
import ru.forbion.f7cloud.core.auth.AuthStore
|
import ru.forbion.f7cloud.core.auth.AuthStore
|
||||||
@@ -679,7 +680,7 @@ private fun LoginScreen(onLogin: (AuthSession) -> Unit) {
|
|||||||
val serverFocus = remember { FocusRequester() }
|
val serverFocus = remember { FocusRequester() }
|
||||||
val usernameFocus = remember { FocusRequester() }
|
val usernameFocus = remember { FocusRequester() }
|
||||||
val passwordFocus = 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 username by rememberSaveable { mutableStateOf("") }
|
||||||
var password by rememberSaveable { mutableStateOf("") }
|
var password by rememberSaveable { mutableStateOf("") }
|
||||||
var trustAllCerts by rememberSaveable { mutableStateOf(false) }
|
var trustAllCerts by rememberSaveable { mutableStateOf(false) }
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ fun Throwable.toLoginErrorMessage(): String {
|
|||||||
"Для внутреннего dev-сервера без Let's Encrypt включите «Доверять сертификату»."
|
"Для внутреннего dev-сервера без Let's Encrypt включите «Доверять сертификату»."
|
||||||
}
|
}
|
||||||
if (this is UnknownHostException) {
|
if (this is UnknownHostException) {
|
||||||
return "Сервер не найден. Проверьте адрес (например https://forbion.f7cloud.ru)."
|
return "Сервер не найден. Проверьте адрес (например https://cloud.ваш-домен.ru)."
|
||||||
}
|
}
|
||||||
if (this is ConnectException) {
|
if (this is ConnectException) {
|
||||||
return "Не удалось подключиться к серверу. Проверьте интернет и адрес."
|
return "Не удалось подключиться к серверу. Проверьте интернет и адрес."
|
||||||
|
|||||||
@@ -2,14 +2,15 @@ package ru.forbion.f7cloud.feature.talk
|
|||||||
|
|
||||||
/** Talk / WebRTC helpers (порт F7TalkHelper из android-webview). */
|
/** Talk / WebRTC helpers (порт F7TalkHelper из android-webview). */
|
||||||
object TalkHelper {
|
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 {
|
fun buildPreconnectScript(serverOrigin: String): String {
|
||||||
val origin = serverOrigin.replace("'", "\\'")
|
val origin = serverOrigin.replace("'", "\\'")
|
||||||
val hpb = HPB_HOST.replace("'", "\\'")
|
|
||||||
return """
|
return """
|
||||||
(function(){
|
(function(){
|
||||||
var h='$hpb',o='$origin';
|
var o='$origin';
|
||||||
function link(rel,href){
|
function link(rel,href){
|
||||||
try{
|
try{
|
||||||
if(document.querySelector('link[rel="'+rel+'"][href="'+href+'"]'))return;
|
if(document.querySelector('link[rel="'+rel+'"][href="'+href+'"]'))return;
|
||||||
@@ -18,8 +19,6 @@ object TalkHelper {
|
|||||||
(document.head||document.documentElement).appendChild(l);
|
(document.head||document.documentElement).appendChild(l);
|
||||||
}catch(e){}
|
}catch(e){}
|
||||||
}
|
}
|
||||||
link('dns-prefetch','https://'+h);
|
|
||||||
link('preconnect','https://'+h);
|
|
||||||
link('dns-prefetch',o);
|
link('dns-prefetch',o);
|
||||||
link('preconnect',o);
|
link('preconnect',o);
|
||||||
})();
|
})();
|
||||||
|
|||||||
Reference in New Issue
Block a user