Loading app/build.gradle.kts +1 −0 Original line number Diff line number Diff line Loading @@ -306,6 +306,7 @@ dependencies { implementation(libs.commons.httpclient) { exclude(group = "commons-logging", module = "commons-logging") } implementation(libs.okhttp.urlconnection) // for tests androidTestImplementation(libs.androidx.arch.core.testing) Loading app/src/main/kotlin/at/bitfire/davdroid/network/HttpClient.kt +14 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ import at.bitfire.davdroid.settings.SettingsManager import at.bitfire.davdroid.ui.ForegroundTracker import com.google.common.net.HttpHeaders import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.accountmanager.network.CookieParser import foundation.e.accountmanager.network.PersistentCookieStore import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext import net.openid.appauth.AuthState Loading Loading @@ -173,9 +175,12 @@ class HttpClient( accountSettings.credentials() }, updateAuthState = { authState -> accountSettings.updateAuthState(authState) accountSettings.updateAuthState(authState, cookieStore) } ) cookieStore = PersistentCookieStore.create(context, account, cookieStore) return this } Loading Loading @@ -312,4 +317,12 @@ class HttpClient( } fun getCookieAsString(): String { val cookieJar = okHttpClient.cookieJar if (cookieJar is CookieParser) { return cookieJar.cookiesAsString() } return "" } } No newline at end of file app/src/main/kotlin/at/bitfire/davdroid/network/MemoryCookieStore.kt +11 −2 Original line number Diff line number Diff line Loading @@ -4,7 +4,8 @@ package at.bitfire.davdroid.network import androidx.annotation.VisibleForTesting import com.owncloud.android.lib.common.accounts.AccountUtils import foundation.e.accountmanager.network.CookieParser import okhttp3.Cookie import okhttp3.CookieJar import okhttp3.HttpUrl Loading @@ -14,7 +15,7 @@ import java.util.LinkedList * Primitive cookie store that stores cookies in a (volatile) hash map. * Will be sufficient for session cookies. */ class MemoryCookieStore : CookieJar { class MemoryCookieStore : CookieJar, CookieParser { data class StorageKey( val domain: String, Loading Loading @@ -78,4 +79,12 @@ class MemoryCookieStore : CookieJar { return cookies } override fun cookiesAsString(): String { if (storage.isEmpty()) { return "" } return storage.values.joinToString(separator = AccountUtils.Constants.OKHTTP_COOKIE_SEPARATOR) } } No newline at end of file app/src/main/kotlin/at/bitfire/davdroid/repository/AccountRepository.kt +1 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ class AccountRepository @Inject constructor( // create Android account val initialUserData = AccountSettings.initialUserData(credentials) val userData = OAuthMurena.onCreateAccount(context, initialUserData, account, credentials) val userData = OAuthMurena.onCreateAccount(context, initialUserData, account, credentials, config) logger.log(Level.INFO, "Creating Android account with initial config", arrayOf(account, userData)) if (!SystemAccountUtils.createAccount(context, account, userData, credentials?.password)) Loading app/src/main/kotlin/at/bitfire/davdroid/servicedetection/DavResourceFinder.kt +4 −2 Original line number Diff line number Diff line Loading @@ -148,7 +148,8 @@ class DavResourceFinder @AssistedInject constructor( cardDAV = cardDavConfig, calDAV = calDavConfig, encountered401 = encountered401, logs = logBuffer.toString() logs = logBuffer.toString(), cookies = httpClient.getCookieAsString() ) } Loading Loading @@ -487,7 +488,8 @@ class DavResourceFinder @AssistedInject constructor( val calDAV: ServiceInfo?, val encountered401: Boolean, val logs: String val logs: String, val cookies: String? = null ) { data class ServiceInfo( Loading Loading
app/build.gradle.kts +1 −0 Original line number Diff line number Diff line Loading @@ -306,6 +306,7 @@ dependencies { implementation(libs.commons.httpclient) { exclude(group = "commons-logging", module = "commons-logging") } implementation(libs.okhttp.urlconnection) // for tests androidTestImplementation(libs.androidx.arch.core.testing) Loading
app/src/main/kotlin/at/bitfire/davdroid/network/HttpClient.kt +14 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ import at.bitfire.davdroid.settings.SettingsManager import at.bitfire.davdroid.ui.ForegroundTracker import com.google.common.net.HttpHeaders import dagger.hilt.android.qualifiers.ApplicationContext import foundation.e.accountmanager.network.CookieParser import foundation.e.accountmanager.network.PersistentCookieStore import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext import net.openid.appauth.AuthState Loading Loading @@ -173,9 +175,12 @@ class HttpClient( accountSettings.credentials() }, updateAuthState = { authState -> accountSettings.updateAuthState(authState) accountSettings.updateAuthState(authState, cookieStore) } ) cookieStore = PersistentCookieStore.create(context, account, cookieStore) return this } Loading Loading @@ -312,4 +317,12 @@ class HttpClient( } fun getCookieAsString(): String { val cookieJar = okHttpClient.cookieJar if (cookieJar is CookieParser) { return cookieJar.cookiesAsString() } return "" } } No newline at end of file
app/src/main/kotlin/at/bitfire/davdroid/network/MemoryCookieStore.kt +11 −2 Original line number Diff line number Diff line Loading @@ -4,7 +4,8 @@ package at.bitfire.davdroid.network import androidx.annotation.VisibleForTesting import com.owncloud.android.lib.common.accounts.AccountUtils import foundation.e.accountmanager.network.CookieParser import okhttp3.Cookie import okhttp3.CookieJar import okhttp3.HttpUrl Loading @@ -14,7 +15,7 @@ import java.util.LinkedList * Primitive cookie store that stores cookies in a (volatile) hash map. * Will be sufficient for session cookies. */ class MemoryCookieStore : CookieJar { class MemoryCookieStore : CookieJar, CookieParser { data class StorageKey( val domain: String, Loading Loading @@ -78,4 +79,12 @@ class MemoryCookieStore : CookieJar { return cookies } override fun cookiesAsString(): String { if (storage.isEmpty()) { return "" } return storage.values.joinToString(separator = AccountUtils.Constants.OKHTTP_COOKIE_SEPARATOR) } } No newline at end of file
app/src/main/kotlin/at/bitfire/davdroid/repository/AccountRepository.kt +1 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ class AccountRepository @Inject constructor( // create Android account val initialUserData = AccountSettings.initialUserData(credentials) val userData = OAuthMurena.onCreateAccount(context, initialUserData, account, credentials) val userData = OAuthMurena.onCreateAccount(context, initialUserData, account, credentials, config) logger.log(Level.INFO, "Creating Android account with initial config", arrayOf(account, userData)) if (!SystemAccountUtils.createAccount(context, account, userData, credentials?.password)) Loading
app/src/main/kotlin/at/bitfire/davdroid/servicedetection/DavResourceFinder.kt +4 −2 Original line number Diff line number Diff line Loading @@ -148,7 +148,8 @@ class DavResourceFinder @AssistedInject constructor( cardDAV = cardDavConfig, calDAV = calDavConfig, encountered401 = encountered401, logs = logBuffer.toString() logs = logBuffer.toString(), cookies = httpClient.getCookieAsString() ) } Loading Loading @@ -487,7 +488,8 @@ class DavResourceFinder @AssistedInject constructor( val calDAV: ServiceInfo?, val encountered401: Boolean, val logs: String val logs: String, val cookies: String? = null ) { data class ServiceInfo( Loading