bitfireAT / davx5-ose

DAVx⁵ is an open-source CalDAV/CardDAV suite and sync app for Android. You can also access your online files (WebDAV) with it.
https://www.davx5.com
GNU General Public License v3.0
1.3k stars 70 forks source link

[Google OAuth] CalDAV propfind without local-part of email address #534

Closed sunkup closed 5 months ago

sunkup commented 5 months ago

When using Google OAuth for authentication, at resource detection, DAVx5 sends the CalDAV propfind without local-part (ie. "dave@gmail.com") of email address. This affects only CalDAV. For CardDAV DAVx5 seems to keep the local-part.

Most likely the user forgets to add their email address in the GoogleLoginFragment before tapping "Sign in with Google".

We should ~hide the button from view~ show the email input field as erronous until the user has entered a valid email address.

Logs ``` 11:51:34.840 D app_time_stats: avg=1869.76ms min=14.89ms max=31517.32ms count=17 11:51:34.960 I [ui.setup.LoginActivity] Login fragment factory: at.bitfire.davdroid.ui.setup.NextcloudLoginFlowFragment$Factory@debec8 11:51:34.961 I [ui.setup.LoginActivity] Login fragment factory: at.bitfire.davdroid.ui.setup.DefaultLoginCredentialsFragment$Factory@3a85b61 11:51:35.016 D Fill dialog is enabled:false, hints=[password, passwordAuto, creditCardNumber, creditCardSecurityCode, creditCardExpirationDate] 11:51:35.399 E Unable to match the desired swap behavior. 11:51:35.399 D notifyViewEnteredForFillDialog:1073741825 11:51:35.406 D notifyViewEnteredForFillDialog:1073741826 11:51:35.415 D notifyViewEnteredForFillDialog:1073741827 11:51:35.415 D Triggering pre-emptive request for fill dialog. 11:51:35.431 D notifyViewEnteredForFillDialog:1073741828 11:51:35.432 D notifyViewEnteredForFillDialog:1073741832 11:51:35.432 D notifyViewEnteredForFillDialog:1073741838 11:51:35.432 D notifyViewEnteredForFillDialog:1073741839 11:51:35.433 D notifyViewEnteredForFillDialog:1073741824 11:51:35.524 D Compat change id reported: 163400105; UID 10191; state: ENABLED 11:51:35.536 I Flattened final assist data: 7136 bytes, containing 1 windows, 51 views 11:51:36.939 D app_time_stats: avg=110.30ms min=2.50ms max=1103.74ms count=13 11:51:37.095 D notifyViewEnteredForFillDialog:1073741838 11:51:37.120 D Hidding UI when view 1073741826 became invisible 11:51:37.123 D notifyViewVisibilityChangedLocked(): id=1073741826 isVisible=false 11:51:37.125 D Hidding UI when view 1073741827 became invisible 11:51:37.125 D notifyViewVisibilityChangedLocked(): id=1073741827 isVisible=false 11:51:37.940 D app_time_stats: avg=16.65ms min=11.56ms max=20.23ms count=60 11:51:38.110 W OnBackInvokedCallback is not enabled for the application. Set 'android:enableOnBackInvokedCallback="true"' in the application manifest. 11:51:38.230 D Compat change id reported: 289878283; UID 10191; state: DISABLED 11:51:38.411 D notifyViewVisibilityChangedLocked(): id=1073741825 isVisible=false 11:51:38.411 D notifyViewVisibilityChangedLocked(): id=1073741828 isVisible=false 11:51:38.411 D notifyViewVisibilityChangedLocked(): id=1073741832 isVisible=false 11:51:38.411 D notifyViewVisibilityChangedLocked(): id=1073741838 isVisible=false 11:51:38.411 D notifyViewVisibilityChangedLocked(): id=1073741839 isVisible=false 11:51:38.411 D notifyViewVisibilityChangedLocked(): id=1073741824 isVisible=false 11:51:39.659 D app_time_stats: avg=61.52ms min=1.35ms max=1207.91ms count=26 11:51:39.723 E Unable to match the desired swap behavior. 11:51:40.369 D endAllActiveAnimators on 0x733f0d6f6f90 (UnprojectedRipple) with handle 0x733f9d688bc0 11:51:43.875 W OnBackInvokedCallback is not enabled for the application. Set 'android:enableOnBackInvokedCallback="true"' in the application manifest. 11:51:43.896 E Unable to match the desired swap behavior. 11:51:43.966 E Unable to match the desired swap behavior. 11:51:44.028 D Compat change id reported: 78294732; UID 10191; state: ENABLED 11:51:44.075 W sendCancelIfRunning: isInProgress=falsecallback=android.view.ViewRootImpl$$ExternalSyntheticLambda17@1f313cf 11:51:44.121 I [network.HttpClient] Will set "User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14" for further requests 11:51:44.165 D tagSocket(117) with statsTag=0xffffffff, statsUid=-1 11:51:44.576 I [ui.setup.GoogleLoginFragment] Refresh token response: {"request":{"configuration":{"authorizationEndpoint":"https:\/\/accounts.google.com\/o\/oauth2\/v2\/auth","tokenEndpoint":"https:\/\/oauth2.googleapis.com\/token"},"clientId":"572459292235-l59l9634infh1sgh797ha0el43lr6e6e.apps.googleusercontent.com","nonce":"FJeVVRcG7YSK9Ha1eXvIjg","grantType":"authorization_code","redirectUri":"at.bitfire.davdroid:\/oauth2\/redirect","authorizationCode":"4\/0AfJohXlx3MT9o1mdmKm6K4EgdetpKR6F1RWrsY0zW79UV_Eg7zer20AMlNq0N6pwEU0wjQ","codeVerifier":"E7M60iFT-fgcnjfxI0TU77isuVEu7ZSjqS5Ljs9v4rGMFPN7_XABqkxMk7EH4Z9V5p04LUwEEVi2qmEdj7odJA","additionalParameters":{}},"token_type":"Bearer","access_token":"ya29.a0AfB_byDLB_9W8Dd_fyV-TOS6GBzGDtteT-4Jh99FRnfOCu5ZtOd1-wi6HJ1Joh2mKZgHled5iJD8hvwYWx_DnKN0005fTMOZUKDknc5sEF4RTIvl0sXjBte0P2G4IIs1dkbSE0Zs4i_x13DnOwjX9LCngDGl16eFDc6KaCgYKAXgSARISFQHGX2MiSbo14pN-gTt7S50Gkv8WRg0171","expires_at":1705405903573,"refresh_token":"1\/\/0ct2fZqnecA1JCgYIARAAGAwSNgF-L9Ird4w-zerh1EQ8WRIm7bzTX73qdsWEtetgUXj4ZDu36F-7uvxBEFkvZp5I_xHh5g86Rw","scope":"https:\/\/www.googleapis.com\/auth\/calendar https:\/\/www.googleapis.com\/auth\/carddav","additionalParameters":{}} 11:51:44.596 D [settings.SettingsManager] Looking up setting proxy_type 11:51:44.596 D [settings.SettingsManager] SharedPreferencesProvider: proxy_type = null 11:51:44.597 D [settings.SettingsManager] DefaultsProvider: proxy_type = -1 11:51:44.597 D [settings.SettingsManager] Looked up setting proxy_type -> -1 11:51:44.606 D [settings.SettingsManager] Looking up setting distrust_system_certs 11:51:44.607 D [settings.SettingsManager] SharedPreferencesProvider: distrust_system_certs = null 11:51:44.607 D [settings.SettingsManager] DefaultsProvider: distrust_system_certs = false 11:51:44.608 D [settings.SettingsManager] Looked up setting distrust_system_certs -> false 11:51:44.664 V Registering org/conscrypt/NativeCrypto's 288 native methods... 11:51:44.676 W Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (unsupported, reflection, allowed) 11:51:44.696 I [CustomCertStore] Using Conscrypt/2.5.2 for TLS 11:51:44.697 I [CustomCertStore] Enabled protocols: TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 11:51:44.698 I [CustomCertStore] Enabled ciphers: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV 11:51:44.921 I Loaded time zone names for "en_US" in 139ms (34ms in ICU) 11:51:44.961 W Cleared Reference was only reachable from finalizer (only reported once) 11:51:45.040 D app_time_stats: avg=28.24ms min=2.37ms max=491.63ms count=30 11:51:45.799 I [servicedetection.DavResourceFinder] Finding initial carddav service configuration 11:51:45.802 I [servicedetection.DavResourceFinder] Checking user-given URL: https://apidata.googleusercontent.com/caldav/v2/@gmail.com/user 11:51:45.856 D tagSocket(124) with statsTag=0xffffffff, statsUid=-1 11:51:45.966 W Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (unsupported, reflection, allowed) 11:51:46.022 V [network.HttpClient] --> PROPFIND https://apidata.googleusercontent.com/caldav/v2/@gmail.com/user h2 11:51:46.023 V [network.HttpClient] Depth: 0 11:51:46.025 V [network.HttpClient] User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14 11:51:46.027 V [network.HttpClient] Accept-Language: en-US, en;q=0.7, *;q=0.5 11:51:46.029 V [network.HttpClient] Content-Type: application/xml; charset=utf-8 11:51:46.030 V [network.HttpClient] Content-Length: 290 11:51:46.036 V [network.HttpClient] Host: apidata.googleusercontent.com 11:51:46.050 V [network.HttpClient] Connection: Keep-Alive 11:51:46.054 D app_time_stats: avg=5.46ms min=0.85ms max=18.24ms count=60 11:51:46.056 V [network.HttpClient] Accept-Encoding: gzip 11:51:46.058 V [network.HttpClient] 11:51:46.062 V [network.HttpClient] 11:51:46.064 V [network.HttpClient] --> END PROPFIND (290-byte body) 11:51:46.065 D [network.BearerAuthInterceptor] Authenticating request with access token 11:51:46.177 V [network.HttpClient] <-- 404 https://apidata.googleusercontent.com/caldav/v2/@gmail.com/user (111ms) 11:51:46.178 V [network.HttpClient] cache-control: no-cache, no-store, max-age=0, must-revalidate 11:51:46.179 V [network.HttpClient] pragma: no-cache 11:51:46.180 V [network.HttpClient] date: Tue, 16 Jan 2024 10:51:46 GMT 11:51:46.181 V [network.HttpClient] content-type: application/vnd.google.gdata.error+xml; charset=UTF-8 11:51:46.182 V [network.HttpClient] expires: Mon, 01 Jan 1990 00:00:00 GMT 11:51:46.182 V [network.HttpClient] content-length: 212 11:51:46.186 V [network.HttpClient] vary: Origin 11:51:46.189 V [network.HttpClient] vary: X-Origin 11:51:46.191 V [network.HttpClient] vary: Referer 11:51:46.193 V [network.HttpClient] server: ESF 11:51:46.196 V [network.HttpClient] x-xss-protection: 0 11:51:46.198 V [network.HttpClient] x-frame-options: SAMEORIGIN 11:51:46.203 V [network.HttpClient] x-content-type-options: nosniff 11:51:46.205 V [network.HttpClient] alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 11:51:46.209 V [network.HttpClient] 11:51:46.210 V [network.HttpClient] GData notFound Not Found 11:51:46.213 V [network.HttpClient] <-- END HTTP (212-byte body) 11:51:46.231 D [servicedetection.DavResourceFinder] PROPFIND/OPTIONS on user-given URL failed EXCEPTION at.bitfire.dav4jvm.exception.NotFoundException: HTTP 404 at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:600) at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:582) at at.bitfire.dav4jvm.DavResource.processMultiStatus(DavResource.kt:699) at at.bitfire.dav4jvm.DavResource.propfind(DavResource.kt:508) at at.bitfire.davdroid.servicedetection.DavResourceFinder.checkBaseURL(DavResourceFinder.kt:200) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:138) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:95) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:113) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:110) at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:52) at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:44) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:8) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:4) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:159) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1) at kotlinx.coroutines.InterruptibleKt.runInterruptible(Interruptible.kt:43) at kotlinx.coroutines.InterruptibleKt.runInterruptible$default(Interruptible.kt:40) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1.invokeSuspend(DetectConfigurationFragment.kt:110) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) 11:51:46.239 V [network.HttpClient] --> PROPFIND https://apidata.googleusercontent.com/.well-known/carddav h2 11:51:46.243 V [network.HttpClient] Depth: 0 11:51:46.245 V [network.HttpClient] User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14 11:51:46.246 V [network.HttpClient] Accept-Language: en-US, en;q=0.7, *;q=0.5 11:51:46.247 V [network.HttpClient] Content-Type: application/xml; charset=utf-8 11:51:46.248 V [network.HttpClient] Content-Length: 198 11:51:46.248 V [network.HttpClient] Host: apidata.googleusercontent.com 11:51:46.249 V [network.HttpClient] Connection: Keep-Alive 11:51:46.252 V [network.HttpClient] Accept-Encoding: gzip 11:51:46.255 V [network.HttpClient] 11:51:46.257 V [network.HttpClient] 11:51:46.260 V [network.HttpClient] --> END PROPFIND (198-byte body) 11:51:46.261 D [network.BearerAuthInterceptor] Authenticating request with access token 11:51:46.328 V [network.HttpClient] <-- 301 https://apidata.googleusercontent.com/.well-known/carddav (66ms) 11:51:46.330 V [network.HttpClient] content-type: text/plain; charset=UTF-8 11:51:46.332 V [network.HttpClient] cache-control: no-cache, no-store, max-age=0, must-revalidate 11:51:46.332 V [network.HttpClient] pragma: no-cache 11:51:46.333 V [network.HttpClient] expires: Mon, 01 Jan 1990 00:00:00 GMT 11:51:46.335 V [network.HttpClient] x-content-type-options: nosniff 11:51:46.337 V [network.HttpClient] location: /carddav/v1/principals/testemail@gmail.com/lists/default/ 11:51:46.341 V [network.HttpClient] x-xss-protection: 1; mode=block 11:51:46.346 V [network.HttpClient] x-frame-options: SAMEORIGIN 11:51:46.347 V [network.HttpClient] vary: Origin 11:51:46.348 V [network.HttpClient] vary: X-Origin 11:51:46.349 V [network.HttpClient] vary: Referer 11:51:46.350 V [network.HttpClient] date: Tue, 16 Jan 2024 10:51:46 GMT 11:51:46.354 V [network.HttpClient] server: ESF 11:51:46.357 V [network.HttpClient] content-length: 0 11:51:46.359 V [network.HttpClient] alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 11:51:46.362 V [network.HttpClient] <-- END HTTP (0-byte body) 11:51:46.366 D [at.bitfire.dav4jvm.DavResource] Redirected, new location = https://apidata.googleusercontent.com/carddav/v1/principals/testemail@gmail.com/lists/default/ 11:51:46.375 V [network.HttpClient] --> PROPFIND https://apidata.googleusercontent.com/carddav/v1/principals/testemail@gmail.com/lists/default/ h2 11:51:46.377 V [network.HttpClient] Depth: 0 11:51:46.378 V [network.HttpClient] User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14 11:51:46.379 V [network.HttpClient] Accept-Language: en-US, en;q=0.7, *;q=0.5 11:51:46.381 V [network.HttpClient] Content-Type: application/xml; charset=utf-8 11:51:46.382 V [network.HttpClient] Content-Length: 198 11:51:46.385 V [network.HttpClient] Host: apidata.googleusercontent.com 11:51:46.388 V [network.HttpClient] Connection: Keep-Alive 11:51:46.389 V [network.HttpClient] Accept-Encoding: gzip 11:51:46.391 V [network.HttpClient] 11:51:46.392 V [network.HttpClient] 11:51:46.394 V [network.HttpClient] --> END PROPFIND (198-byte body) 11:51:46.395 D [network.BearerAuthInterceptor] Authenticating request with access token 11:51:46.460 V [network.HttpClient] <-- 207 https://apidata.googleusercontent.com/carddav/v1/principals/testemail@gmail.com/lists/default/ (64ms) 11:51:46.461 V [network.HttpClient] content-type: text/xml; charset=UTF-8 11:51:46.462 V [network.HttpClient] cache-control: no-cache, no-store, max-age=0, must-revalidate 11:51:46.463 V [network.HttpClient] x-xss-protection: 1; mode=block 11:51:46.464 V [network.HttpClient] pragma: no-cache 11:51:46.465 V [network.HttpClient] dav: 1, 2, 3, addressbook, access-control 11:51:46.466 V [network.HttpClient] x-content-type-options: nosniff 11:51:46.467 V [network.HttpClient] expires: Mon, 01 Jan 1990 00:00:00 GMT 11:51:46.468 V [network.HttpClient] x-frame-options: SAMEORIGIN 11:51:46.472 V [network.HttpClient] vary: Origin 11:51:46.475 V [network.HttpClient] vary: X-Origin 11:51:46.476 V [network.HttpClient] vary: Referer 11:51:46.477 V [network.HttpClient] date: Tue, 16 Jan 2024 10:51:46 GMT 11:51:46.479 V [network.HttpClient] server: ESF 11:51:46.480 V [network.HttpClient] content-length: 586 11:51:46.480 V [network.HttpClient] alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 11:51:46.482 V [network.HttpClient] 11:51:46.483 V [network.HttpClient] /carddav/v1/principals/testemail@gmail.com/lists/default/ HTTP/1.1 200 OK /carddav/v1/principals/testemail@gmail.com 11:51:46.489 V [network.HttpClient] <-- END HTTP (586-byte body) 11:51:46.497 I [at.bitfire.dav4jvm.PropertyRegistry] Registering DAV property factories 11:51:46.498 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.AddMember$Factory for DAV::add-member 11:51:46.499 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.AddressbookDescription$Factory for urn:ietf:params:xml:ns:carddav:addressbook-description 11:51:46.499 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.AddressbookHomeSet$Factory for urn:ietf:params:xml:ns:carddav:addressbook-home-set 11:51:46.500 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.AddressData$Factory for urn:ietf:params:xml:ns:carddav:address-data 11:51:46.501 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CalendarColor$Factory for http://apple.com/ns/ical/:calendar-color 11:51:46.501 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CalendarData$Factory for urn:ietf:params:xml:ns:caldav:calendar-data 11:51:46.501 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CalendarDescription$Factory for urn:ietf:params:xml:ns:caldav:calendar-description 11:51:46.506 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CalendarHomeSet$Factory for urn:ietf:params:xml:ns:caldav:calendar-home-set 11:51:46.507 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CalendarProxyReadFor$Factory for http://calendarserver.org/ns/:calendar-proxy-read-for 11:51:46.508 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CalendarProxyWriteFor$Factory for http://calendarserver.org/ns/:calendar-proxy-write-for 11:51:46.509 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CalendarTimezone$Factory for urn:ietf:params:xml:ns:caldav:calendar-timezone 11:51:46.510 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CalendarUserAddressSet$Factory for urn:ietf:params:xml:ns:caldav:calendar-user-address-set 11:51:46.510 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CreationDate$Factory for DAV::creationdate 11:51:46.511 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CurrentUserPrincipal$Factory for DAV::current-user-principal 11:51:46.511 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.CurrentUserPrivilegeSet$Factory for DAV::current-user-privilege-set 11:51:46.512 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.DisplayName$Factory for DAV::displayname 11:51:46.512 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.GetContentLength$Factory for DAV::getcontentlength 11:51:46.512 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.GetContentType$Factory for DAV::getcontenttype 11:51:46.513 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.GetCTag$Factory for http://calendarserver.org/ns/:getctag 11:51:46.514 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.GetETag$Factory for DAV::getetag 11:51:46.514 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.GetLastModified$Factory for DAV::getlastmodified 11:51:46.514 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.GroupMembership$Factory for DAV::group-membership 11:51:46.515 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.MaxICalendarSize$Factory for urn:ietf:params:xml:ns:caldav:max-resource-size 11:51:46.515 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.MaxVCardSize$Factory for urn:ietf:params:xml:ns:carddav:max-resource-size 11:51:46.516 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.Owner$Factory for DAV::owner 11:51:46.516 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.QuotaAvailableBytes$Factory for DAV::quota-available-bytes 11:51:46.517 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.QuotaUsedBytes$Factory for DAV::quota-used-bytes 11:51:46.517 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.ResourceType$Factory for DAV::resourcetype 11:51:46.517 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.ScheduleTag$Factory for urn:ietf:params:xml:ns:caldav:schedule-tag 11:51:46.518 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.Source$Factory for http://calendarserver.org/ns/:source 11:51:46.518 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.SupportedAddressData$Factory for urn:ietf:params:xml:ns:carddav:supported-address-data 11:51:46.522 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.SupportedCalendarComponentSet$Factory for urn:ietf:params:xml:ns:caldav:supported-calendar-component-set 11:51:46.524 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.SupportedCalendarData$Factory for urn:ietf:params:xml:ns:caldav:supported-calendar-data 11:51:46.525 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.SupportedReportSet$Factory for DAV::supported-report-set 11:51:46.525 D [at.bitfire.dav4jvm.PropertyRegistry] Registering at.bitfire.dav4jvm.property.SyncToken$Factory for DAV::sync-token 11:51:46.529 I [servicedetection.DavResourceFinder] Found current-user-principal: https://apidata.googleusercontent.com/carddav/v1/principals/testemail@gmail.com 11:51:46.531 V [network.HttpClient] --> OPTIONS https://apidata.googleusercontent.com/carddav/v1/principals/testemail@gmail.com h2 11:51:46.532 V [network.HttpClient] Content-Length: 0 11:51:46.533 V [network.HttpClient] Accept-Encoding: identity 11:51:46.534 V [network.HttpClient] User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14 11:51:46.540 V [network.HttpClient] Accept-Language: en-US, en;q=0.7, *;q=0.5 11:51:46.543 V [network.HttpClient] Host: apidata.googleusercontent.com 11:51:46.544 V [network.HttpClient] Connection: Keep-Alive 11:51:46.546 V [network.HttpClient] --> END OPTIONS 11:51:46.547 D [network.BearerAuthInterceptor] Authenticating request with access token 11:51:46.627 V [network.HttpClient] <-- 200 https://apidata.googleusercontent.com/carddav/v1/principals/testemail@gmail.com (69ms) 11:51:46.629 V [network.HttpClient] content-type: text/plain; charset=UTF-8 11:51:46.632 V [network.HttpClient] cache-control: no-cache, no-store, max-age=0, must-revalidate 11:51:46.634 V [network.HttpClient] content-disposition: attachment 11:51:46.640 V [network.HttpClient] dav: 1, 2, 3, addressbook, access-control 11:51:46.644 V [network.HttpClient] allow: UNLOCK,MKCOL,PROPFIND,LOCK,PROPPATCH,OPTIONS,ACL,PUT,GET,REPORT,POST 11:51:46.646 V [network.HttpClient] x-frame-options: SAMEORIGIN 11:51:46.648 V [network.HttpClient] expires: Mon, 01 Jan 1990 00:00:00 GMT 11:51:46.650 V [network.HttpClient] pragma: no-cache 11:51:46.658 V [network.HttpClient] x-xss-protection: 1; mode=block 11:51:46.660 V [network.HttpClient] x-content-type-options: nosniff 11:51:46.662 V [network.HttpClient] vary: Origin 11:51:46.663 V [network.HttpClient] vary: X-Origin 11:51:46.664 V [network.HttpClient] vary: Referer 11:51:46.665 V [network.HttpClient] date: Tue, 16 Jan 2024 10:51:46 GMT 11:51:46.667 V [network.HttpClient] server: ESF 11:51:46.674 V [network.HttpClient] content-length: 0 11:51:46.676 V [network.HttpClient] alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 11:51:46.678 V [network.HttpClient] <-- END HTTP (0-byte body) 11:51:46.695 I [servicedetection.DavResourceFinder] Finding initial caldav service configuration 11:51:46.697 I [servicedetection.DavResourceFinder] Checking user-given URL: https://apidata.googleusercontent.com/caldav/v2/@gmail.com/user 11:51:46.711 V [network.HttpClient] --> PROPFIND https://apidata.googleusercontent.com/caldav/v2/@gmail.com/user h2 11:51:46.713 V [network.HttpClient] Depth: 0 11:51:46.714 V [network.HttpClient] User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14 11:51:46.716 V [network.HttpClient] Accept-Language: en-US, en;q=0.7, *;q=0.5 11:51:46.724 V [network.HttpClient] Content-Type: application/xml; charset=utf-8 11:51:46.726 V [network.HttpClient] Content-Length: 435 11:51:46.728 V [network.HttpClient] Host: apidata.googleusercontent.com 11:51:46.730 V [network.HttpClient] Connection: Keep-Alive 11:51:46.732 V [network.HttpClient] Accept-Encoding: gzip 11:51:46.740 V [network.HttpClient] 11:51:46.744 V [network.HttpClient] 11:51:46.745 V [network.HttpClient] --> END PROPFIND (435-byte body) 11:51:46.746 D [network.BearerAuthInterceptor] Authenticating request with access token 11:51:46.891 V [network.HttpClient] <-- 404 https://apidata.googleusercontent.com/caldav/v2/@gmail.com/user (141ms) 11:51:46.892 V [network.HttpClient] expires: Mon, 01 Jan 1990 00:00:00 GMT 11:51:46.893 V [network.HttpClient] date: Tue, 16 Jan 2024 10:51:47 GMT 11:51:46.893 V [network.HttpClient] pragma: no-cache 11:51:46.894 V [network.HttpClient] content-length: 212 11:51:46.895 V [network.HttpClient] cache-control: no-cache, no-store, max-age=0, must-revalidate 11:51:46.896 V [network.HttpClient] content-type: application/vnd.google.gdata.error+xml; charset=UTF-8 11:51:46.897 V [network.HttpClient] vary: Origin 11:51:46.898 V [network.HttpClient] vary: X-Origin 11:51:46.899 V [network.HttpClient] vary: Referer 11:51:46.900 V [network.HttpClient] server: ESF 11:51:46.903 V [network.HttpClient] x-xss-protection: 0 11:51:46.906 V [network.HttpClient] x-frame-options: SAMEORIGIN 11:51:46.907 V [network.HttpClient] x-content-type-options: nosniff 11:51:46.909 V [network.HttpClient] alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 11:51:46.911 V [network.HttpClient] 11:51:46.912 V [network.HttpClient] GData notFound Not Found 11:51:46.913 V [network.HttpClient] <-- END HTTP (212-byte body) 11:51:46.922 D [servicedetection.DavResourceFinder] PROPFIND/OPTIONS on user-given URL failed EXCEPTION at.bitfire.dav4jvm.exception.NotFoundException: HTTP 404 at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:600) at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:582) at at.bitfire.dav4jvm.DavResource.processMultiStatus(DavResource.kt:699) at at.bitfire.dav4jvm.DavResource.propfind(DavResource.kt:508) at at.bitfire.davdroid.servicedetection.DavResourceFinder.checkBaseURL(DavResourceFinder.kt:210) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:138) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:102) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:113) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:110) at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:52) at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:44) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:8) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:4) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:159) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1) at kotlinx.coroutines.InterruptibleKt.runInterruptible(Interruptible.kt:43) at kotlinx.coroutines.InterruptibleKt.runInterruptible$default(Interruptible.kt:40) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1.invokeSuspend(DetectConfigurationFragment.kt:110) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) 11:51:46.927 V [network.HttpClient] --> PROPFIND https://apidata.googleusercontent.com/.well-known/caldav h2 11:51:46.929 V [network.HttpClient] Depth: 0 11:51:46.931 V [network.HttpClient] User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14 11:51:46.932 V [network.HttpClient] Accept-Language: en-US, en;q=0.7, *;q=0.5 11:51:46.933 V [network.HttpClient] Content-Type: application/xml; charset=utf-8 11:51:46.936 V [network.HttpClient] Content-Length: 198 11:51:46.939 V [network.HttpClient] Host: apidata.googleusercontent.com 11:51:46.943 V [network.HttpClient] Connection: Keep-Alive 11:51:46.945 V [network.HttpClient] Accept-Encoding: gzip 11:51:46.947 V [network.HttpClient] 11:51:46.948 V [network.HttpClient] 11:51:46.949 V [network.HttpClient] --> END PROPFIND (198-byte body) 11:51:46.949 D [network.BearerAuthInterceptor] Authenticating request with access token 11:51:47.054 D app_time_stats: avg=6.16ms min=1.90ms max=31.30ms count=58 11:51:47.181 V [network.HttpClient] <-- 404 https://apidata.googleusercontent.com/.well-known/caldav (229ms) 11:51:47.183 V [network.HttpClient] content-type: text/html; charset=UTF-8 11:51:47.187 V [network.HttpClient] referrer-policy: no-referrer 11:51:47.193 V [network.HttpClient] content-length: 1579 11:51:47.194 V [network.HttpClient] date: Tue, 16 Jan 2024 10:51:47 GMT 11:51:47.196 V [network.HttpClient] alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 11:51:47.198 V [network.HttpClient] 11:51:47.215 V [network.HttpClient] Error 404 (Not Found)!!1

404. That’s an error.

The requested URL /.well-known/caldav was not found on this server. That’s all we know. 11:51:47.220 V [network.HttpClient] <-- END HTTP (1579-byte body) 11:51:47.240 D [servicedetection.DavResourceFinder] Well-known URL detection failed EXCEPTION at.bitfire.dav4jvm.exception.NotFoundException: HTTP 404 at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:600) at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:582) at at.bitfire.dav4jvm.DavResource.processMultiStatus(DavResource.kt:699) at at.bitfire.dav4jvm.DavResource.propfind(DavResource.kt:508) at at.bitfire.davdroid.servicedetection.DavResourceFinder.getCurrentUserPrincipal(DavResourceFinder.kt:420) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:143) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:102) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:113) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:110) at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:52) at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:44) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:8) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:4) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:159) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1) at kotlinx.coroutines.InterruptibleKt.runInterruptible(Interruptible.kt:43) at kotlinx.coroutines.InterruptibleKt.runInterruptible$default(Interruptible.kt:40) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1.invokeSuspend(DetectConfigurationFragment.kt:110) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) 11:51:47.242 I [servicedetection.DavResourceFinder] No principal found at user-given URL, trying to discover for domain apidata.googleusercontent.com 11:51:47.245 D [servicedetection.DavResourceFinder] Looking up SRV records for _caldavs._tcp.apidata.googleusercontent.com 11:51:47.248 W Access denied finding property "net.dns1" 11:51:47.249 W Access denied finding property "net.dns2" 11:51:47.249 W Access denied finding property "net.dns3" 11:51:47.249 W Access denied finding property "net.dns4" 11:51:47.298 D [util.DavUtils] Using Android 10+ DnsResolver 11:51:47.487 I [servicedetection.DavResourceFinder] Didn't find caldav service, trying at https://apidata.googleusercontent.com:443 11:51:47.489 D [util.DavUtils] Using Android 10+ DnsResolver 11:51:47.540 I [servicedetection.DavResourceFinder] Trying to determine principal from initial context path=https://apidata.googleusercontent.com/.well-known/caldav 11:51:47.545 V [network.HttpClient] --> PROPFIND https://apidata.googleusercontent.com/.well-known/caldav h2 11:51:47.547 V [network.HttpClient] Depth: 0 11:51:47.548 V [network.HttpClient] User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14 11:51:47.550 V [network.HttpClient] Accept-Language: en-US, en;q=0.7, *;q=0.5 11:51:47.553 V [network.HttpClient] Content-Type: application/xml; charset=utf-8 11:51:47.554 V [network.HttpClient] Content-Length: 198 11:51:47.558 V [network.HttpClient] Host: apidata.googleusercontent.com 11:51:47.559 V [network.HttpClient] Connection: Keep-Alive 11:51:47.561 V [network.HttpClient] Accept-Encoding: gzip 11:51:47.563 V [network.HttpClient] 11:51:47.564 V [network.HttpClient] 11:51:47.566 V [network.HttpClient] --> END PROPFIND (198-byte body) 11:51:47.567 D [network.BearerAuthInterceptor] Authenticating request with access token 11:51:47.794 V [network.HttpClient] <-- 404 https://apidata.googleusercontent.com/.well-known/caldav (227ms) 11:51:47.796 V [network.HttpClient] content-type: text/html; charset=UTF-8 11:51:47.796 V [network.HttpClient] referrer-policy: no-referrer 11:51:47.797 V [network.HttpClient] content-length: 1579 11:51:47.798 V [network.HttpClient] date: Tue, 16 Jan 2024 10:51:48 GMT 11:51:47.799 V [network.HttpClient] alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 11:51:47.805 V [network.HttpClient] 11:51:47.807 V [network.HttpClient] Error 404 (Not Found)!!1

404. That’s an error.

The requested URL /.well-known/caldav was not found on this server. That’s all we know. 11:51:47.809 V [network.HttpClient] <-- END HTTP (1579-byte body) 11:51:47.824 W [servicedetection.DavResourceFinder] No resource found EXCEPTION at.bitfire.dav4jvm.exception.NotFoundException: HTTP 404 at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:600) at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:582) at at.bitfire.dav4jvm.DavResource.processMultiStatus(DavResource.kt:699) at at.bitfire.dav4jvm.DavResource.propfind(DavResource.kt:508) at at.bitfire.davdroid.servicedetection.DavResourceFinder.getCurrentUserPrincipal(DavResourceFinder.kt:420) at at.bitfire.davdroid.servicedetection.DavResourceFinder.discoverPrincipalUrl(DavResourceFinder.kt:401) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:162) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:102) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:113) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:110) at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:52) at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:44) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:8) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:4) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:159) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1) at kotlinx.coroutines.InterruptibleKt.runInterruptible(Interruptible.kt:43) at kotlinx.coroutines.InterruptibleKt.runInterruptible$default(Interruptible.kt:40) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1.invokeSuspend(DetectConfigurationFragment.kt:110) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) 11:51:47.825 I [servicedetection.DavResourceFinder] Trying to determine principal from initial context path=https://apidata.googleusercontent.com/ 11:51:47.828 V [network.HttpClient] --> PROPFIND https://apidata.googleusercontent.com/ h2 11:51:47.829 V [network.HttpClient] Depth: 0 11:51:47.831 V [network.HttpClient] User-Agent: DAVx5/4.3.12.1-gplay (2024/01/16; dav4jvm; okhttp/4.12.0) Android/14 11:51:47.832 V [network.HttpClient] Accept-Language: en-US, en;q=0.7, *;q=0.5 11:51:47.833 V [network.HttpClient] Content-Type: application/xml; charset=utf-8 11:51:47.837 V [network.HttpClient] Content-Length: 198 11:51:47.839 V [network.HttpClient] Host: apidata.googleusercontent.com 11:51:47.841 V [network.HttpClient] Connection: Keep-Alive 11:51:47.843 V [network.HttpClient] Accept-Encoding: gzip 11:51:47.860 V [network.HttpClient] 11:51:47.862 V [network.HttpClient] 11:51:47.863 V [network.HttpClient] --> END PROPFIND (198-byte body) 11:51:47.863 D [network.BearerAuthInterceptor] Authenticating request with access token 11:51:47.998 V [network.HttpClient] <-- 404 https://apidata.googleusercontent.com/ (133ms) 11:51:47.999 V [network.HttpClient] content-type: text/html; charset=UTF-8 11:51:48.002 V [network.HttpClient] referrer-policy: no-referrer 11:51:48.007 V [network.HttpClient] content-length: 1561 11:51:48.009 V [network.HttpClient] date: Tue, 16 Jan 2024 10:51:48 GMT 11:51:48.010 V [network.HttpClient] alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 11:51:48.013 V [network.HttpClient] 11:51:48.015 V [network.HttpClient] Error 404 (Not Found)!!1

404. That’s an error.

The requested URL / was not found on this server. That’s all we know. 11:51:48.019 V [network.HttpClient] <-- END HTTP (1561-byte body) 11:51:48.027 W [servicedetection.DavResourceFinder] No resource found EXCEPTION at.bitfire.dav4jvm.exception.NotFoundException: HTTP 404 at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:600) at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:582) at at.bitfire.dav4jvm.DavResource.processMultiStatus(DavResource.kt:699) at at.bitfire.dav4jvm.DavResource.propfind(DavResource.kt:508) at at.bitfire.davdroid.servicedetection.DavResourceFinder.getCurrentUserPrincipal(DavResourceFinder.kt:420) at at.bitfire.davdroid.servicedetection.DavResourceFinder.discoverPrincipalUrl(DavResourceFinder.kt:401) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:162) at at.bitfire.davdroid.servicedetection.DavResourceFinder.findInitialConfiguration(DavResourceFinder.kt:102) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:113) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1$1.invoke(DetectConfigurationFragment.kt:110) at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:52) at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:44) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:8) at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:4) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:159) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1) at kotlinx.coroutines.InterruptibleKt.runInterruptible(Interruptible.kt:43) at kotlinx.coroutines.InterruptibleKt.runInterruptible$default(Interruptible.kt:40) at at.bitfire.davdroid.ui.setup.DetectConfigurationFragment$DetectConfigurationModel$start$1.invokeSuspend(DetectConfigurationFragment.kt:110) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684) 11:51:48.224 D [settings.SettingsManager] Looking up setting contact_group_method 11:51:48.225 D [settings.SettingsManager] SharedPreferencesProvider: contact_group_method = null 11:51:48.226 D [settings.SettingsManager] DefaultsProvider: contact_group_method = null 11:51:48.227 D [settings.SettingsManager] Looked up setting contact_group_method -> no result 11:51:48.230 D notifyViewVisibilityChangedLocked(): id=1073741899 isVisible=true 11:51:48.233 D notifyViewVisibilityChangedLocked(): id=1073741900 isVisible=true 11:51:48.254 D notifyViewVisibilityChangedLocked(): id=1073741899 isVisible=true 11:51:48.255 D notifyViewVisibilityChangedLocked(): id=1073741900 isVisible=true 11:51:48.282 D notifyViewEnteredForFillDialog:1073741899 11:51:48.286 D notifyViewEnteredForFillDialog:1073741900 11:51:48.297 D app_time_stats: avg=10.62ms min=2.15ms max=262.18ms count=59 11:51:49.873 D app_time_stats: avg=121.31ms min=2.17ms max=1403.26ms count=12 ```

devvv4ever commented 5 months ago

For a better understandable User Interface the button should only be greyed out I think, and not be hidden totally. Or we just leave the button as it is and only validate the email input field for a syntactic correct email address. What do you think @sunkup ?

sunkup commented 5 months ago

For a better understandable User Interface the button should only be greyed out I think, and not be hidden totally. Or we just leave the button as it is and only validate the email input field for a syntactic correct email address. What do you think @sunkup ?

Yes, I changed it, to the latter already - just forgot to update the text here :)

updated

Gh61 commented 4 months ago

I just found out, i needed to put my @gmail adress in there. I'm using custom email address (on different domain) for login to my gmail account everywhere. When i put this in, only CardDav is loaded. So i needed to specify the gmail domain address in order for this to work.

So I believe the validation should check, that the email address is on gmail domain. @rfc2822

rfc2822 commented 4 months ago

I'm using custom email address (on different domain) for login to my gmail account everywhere.

What does that mean? Is the Google account your email address (in this case, you don't have a Gmail address as far as I know) or the Gmail address?

So I believe the validation should check, that the email address is on gmail domain. @rfc2822

I don't know, what when you use these Google-hosted business domains?

ArnyminerZ commented 4 months ago

Shouldn't custom domains work as well? For example, if someone is using Google Workspace. Maybe it doesn't work for you because the organization is blocking the API access in some way @Gh61

Gh61 commented 4 months ago

When creating the Google account, you can select option to use your existing e-mail address as username: image

I've created my personal account this way more than 10 year ago. At first i had no gmail account, but after a few years, they made it mandatory, so they created {firstname}{lastname}@gmail.com e-mail for me.

To this day I'm logging everywhere with the custom e-mail address and password. (The @gmail address and password is also working).

When I filled my custom e-mail address to the 'example@gmail.com' field, it worked, I approved the OAuth connection, but only CardDav TAB loaded. After some searching, I found this issue and tried to fill my alternative (true gmail) address. After that, the CALDAV and WEBCAL tabs are also present, and everything is working.

So I though, that @gmail domain is needed for this to work. This is my personal account, but your probably right about the Google Workspace, where you don't have the gmail adress at all. (I suppose as I have no experience with Google-hosted business profiles).

ArnyminerZ commented 4 months ago

Maybe we can add as a warning somewhere in the manual? Seems to be such a specific case for adding something in the app...

ClundXIII commented 1 week ago

When I filled my custom e-mail address to the 'example@gmail.com' field, it worked, I approved the OAuth connection, but only CardDav TAB loaded.

I am sorry to bump this thread, but this Problem still persists. I do not have a "alternative (true gmail) address" as @Gh61 mentioned in this post since I have a google workspace account.

Only the Address book is loaded :(

bisby commented 1 week ago

I'm dealing with this as well in 4.4.0.1 from f-droid.

Getting a 404 response from https://apidata.googleusercontent.com/caldav/v2/me@mydomain.com@gmail.com/user

It seems the previous code did:

                val loginEmail =
                    if (userEmail.contains('@'))
                        userEmail
                    else
                        "$userEmail@gmail.com"

Which would allow custom domains, because it was checking only for @.

And now at https://github.com/bitfireAT/davx5-ose/blob/main-ose/app/src/main/kotlin/at/bitfire/davdroid/ui/setup/GoogleLoginModel.kt#L60C9-L60C79 val emailWithDomain = StringUtils.appendIfMissing(email, "@gmail.com")

This is now checking for @gmail.com as the ending instead of if there is a domain at all, which breaks all non-gmail domains.

The file structure moved around so I can't immediately figure out which version I need to downgrade to for this to work again. (edit: downgrading to 4.4.0 didnt fix it and 4.3.16 did, it appears that linked bit of new code is from the 4.4.0 release)