Loading .gitlab-ci.yml +11 −46 Original line number Diff line number Diff line Loading @@ -21,6 +21,10 @@ before_script: - echo GOOGLE_CLIENT_ID=$GOOGLE_CLIENT_ID >> local.properties - echo GOOGLE_REDIRECT_URI=$GOOGLE_REDIRECT_URI >> local.properties - echo YAHOO_CLIENT_ID=$YAHOO_CLIENT_ID >> local.properties - echo MURENA_BASE_URL_PRODUCTION=$MURENA_BASE_URL_PRODUCTION >> local.properties - echo MURENA_DISCOVERY_END_POINT_PRODUCTION=$MURENA_DISCOVERY_END_POINT_PRODUCTION >> local.properties - echo MURENA_BASE_URL_STAGING=$MURENA_BASE_URL_STAGING >> local.properties - echo MURENA_DISCOVERY_END_POINT_STAGING=$MURENA_DISCOVERY_END_POINT_STAGING >> local.properties - export GRADLE_USER_HOME=$(pwd)/.gradle - chmod +x ./gradlew Loading @@ -29,30 +33,9 @@ cache: paths: - .gradle/ build-prod: build: stage: build script: - echo MURENA_BASE_URL=$MURENA_BASE_URL >> local.properties - echo MURENA_DISCOVERY_END_POINT=$MURENA_DISCOVERY_END_POINT >> local.properties - ./gradlew build -x test - cd app/build/outputs/apk/ose/ - | if [[ ! -d "release" ]]; then echo "$APK_PATH does not exist." exit 1 fi cd "release" unsigned_build=$(ls *.apk | grep "release") mv $unsigned_build $UNSIGNED_APK artifacts: paths: - app/build/outputs/apk/ose/ build-staging: stage: build script: - echo MURENA_BASE_URL=$MURENA_BASE_URL_STAGING >> local.properties - echo MURENA_DISCOVERY_END_POINT=$MURENA_DISCOVERY_END_POINT_STAGING >> local.properties - ./gradlew build -x test - cd app/build/outputs/apk/ose/ - | Loading @@ -78,27 +61,11 @@ init_submodules: paths: - systemAppsUpdateInfo/scripts/ generate-prod-apks: generate-apks: stage: gitlab_release needs: - job: init_submodules - job: build-prod script: - | ./systemAppsUpdateInfo/scripts/generate-apks.sh \ "$APK_PATH" "$UNSIGNED_APK" "$COMMUNITY_APK" "$OFFICIAL_APK" "$TEST_APK" artifacts: paths: - $APK_PATH/$UNSIGNED_APK - $APK_PATH/$COMMUNITY_APK - $APK_PATH/$OFFICIAL_APK - $APK_PATH/$TEST_APK generate-staging-apks: stage: gitlab_release needs: - job: init_submodules - job: build-staging - job: build script: - | ./systemAppsUpdateInfo/scripts/generate-apks.sh \ Loading @@ -114,7 +81,7 @@ create-json-files: stage: gitlab_release needs: - job: init_submodules - job: generate-prod-apks - job: generate-apks rules: - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"' when: on_success Loading @@ -133,7 +100,7 @@ create-test-release: needs: - job: init_submodules - job: create-json-files - job: generate-prod-apks - job: generate-apks rules: - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"' when: manual Loading @@ -150,7 +117,7 @@ create-release: needs: - init_submodules - create-json-files - generate-prod-apks - generate-apks rules: - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"' when: manual Loading @@ -168,7 +135,7 @@ create-release: CI_PROJECT_SSH_URL: git@gitlab.e.foundation:$CI_PROJECT_PATH GIT_STRATEGY: none before_script: - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )' - "command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )" - eval $(ssh-agent -s) - echo "${SSH_E_ROBOT_PRIVATE_KEY}" | tr -d '\r' | ssh-add - - mkdir -p ~/.ssh Loading Loading @@ -211,5 +178,3 @@ update-default-branch: UPSTREAM_DEFAULT_BRANCH: release-ose UPSTREAM_URL: https://github.com/bitfireAT/davx5-ose.git TEMP_LATEST_TAG_BRANCH: latest_upstream_tag_branch app/build.gradle +4 −2 Original line number Diff line number Diff line Loading @@ -142,8 +142,10 @@ android { buildConfigField "String", "MURENA_CLIENT_ID", "\"${retrieveKey("MURENA_CLIENT_ID")}\"" buildConfigField "String", "MURENA_REDIRECT_URI", "\"${retrieveKey("MURENA_REDIRECT_URI")}\"" buildConfigField "String", "MURENA_LOGOUT_REDIRECT_URI", "\"${retrieveKey("MURENA_LOGOUT_REDIRECT_URI")}\"" buildConfigField "String", "MURENA_BASE_URL", "\"${retrieveKey("MURENA_BASE_URL")}\"" buildConfigField "String", "MURENA_DISCOVERY_END_POINT", "\"${retrieveKey("MURENA_DISCOVERY_END_POINT")}\"" buildConfigField "String", "MURENA_BASE_URL_STAGING", "\"${retrieveKey("MURENA_BASE_URL_STAGING")}\"" buildConfigField "String", "MURENA_BASE_URL_PRODUCTION", "\"${retrieveKey("MURENA_BASE_URL_PRODUCTION")}\"" buildConfigField "String", "MURENA_DISCOVERY_END_POINT_STAGING", "\"${retrieveKey("MURENA_DISCOVERY_END_POINT_STAGING")}\"" buildConfigField "String", "MURENA_DISCOVERY_END_POINT_PRODUCTION", "\"${retrieveKey("MURENA_DISCOVERY_END_POINT_PRODUCTION")}\"" buildConfigField "String", "GOOGLE_CLIENT_ID", "\"${retrieveKey("GOOGLE_CLIENT_ID")}\"" buildConfigField "String", "GOOGLE_REDIRECT_URI", "\"${retrieveKey("GOOGLE_REDIRECT_URI")}\"" Loading app/src/main/kotlin/at/bitfire/davdroid/authorization/IdentityProvider.kt +23 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import android.content.Context import android.net.Uri import at.bitfire.davdroid.BuildConfig import at.bitfire.davdroid.R import at.bitfire.davdroid.util.MurenaServerConfig import net.openid.appauth.AuthorizationServiceConfiguration import net.openid.appauth.AuthorizationServiceConfiguration.RetrieveConfigurationCallback Loading @@ -38,7 +39,7 @@ enum class IdentityProvider( baseUrl: String? ) { MURENA( discoveryEndpoint = BuildConfig.MURENA_DISCOVERY_END_POINT, discoveryEndpoint = BuildConfig.MURENA_DISCOVERY_END_POINT_PRODUCTION, authEndpoint = null, tokenEndpoint = null, clientId = BuildConfig.MURENA_CLIENT_ID, Loading @@ -47,7 +48,7 @@ enum class IdentityProvider( logoutRedirectUri = BuildConfig.MURENA_LOGOUT_REDIRECT_URI + ":/redirect", scope = "openid profile email offline_access", userInfoEndpoint = null, baseUrl = BuildConfig.MURENA_BASE_URL, baseUrl = BuildConfig.MURENA_BASE_URL_PRODUCTION, ), GOOGLE( discoveryEndpoint = "https://accounts.google.com/.well-known/openid-configuration", Loading Loading @@ -116,9 +117,26 @@ enum class IdentityProvider( this.baseUrl = baseUrl } fun retrieveConfig(callback: RetrieveConfigurationCallback) { if (mDiscoveryEndpoint != null) { AuthorizationServiceConfiguration.fetchFromUrl(mDiscoveryEndpoint, callback) fun getBaseUrl(context: Context): String? { return if (this == MURENA) { MurenaServerConfig.getBaseUrl(context) } else { baseUrl } } private fun getDiscoveryEndpoint(context: Context): Uri? { return if (this == MURENA) { retrieveUri(MurenaServerConfig.getDiscoveryUrl(context)) } else { mDiscoveryEndpoint } } fun retrieveConfig(context: Context, callback: RetrieveConfigurationCallback) { val discoveryEndpoint = getDiscoveryEndpoint(context) if (discoveryEndpoint != null) { AuthorizationServiceConfiguration.fetchFromUrl(discoveryEndpoint, callback) } else { val config = AuthorizationServiceConfiguration(mAuthEndpoint!!, mTokenEndpoint!!, null) callback.onFetchConfigurationCompleted(config, null) Loading app/src/main/kotlin/at/bitfire/davdroid/syncadapter/AccountUtils.kt +5 −2 Original line number Diff line number Diff line Loading @@ -173,11 +173,14 @@ object AccountUtils { accountManager.getUserData(account, Constants.KEY_OC_BASE_URL) ?: return false val baseUrl = extractBaseUrl(urlData) val murenaBaseUrl = extractBaseUrl(BuildConfig.MURENA_BASE_URL) val murenaBaseUrls = setOf( extractBaseUrl(BuildConfig.MURENA_BASE_URL_PRODUCTION), extractBaseUrl(BuildConfig.MURENA_BASE_URL_STAGING), ) // User can have their own Murena account set up with custom Nextcloud instance, // so a check for base URL is necessary. val isMurenaCloud = (baseUrl == murenaBaseUrl) val isMurenaCloud = baseUrl in murenaBaseUrls val isMurenaAccountType = (account.type == context.getString(R.string.eelo_account_type)) return isMurenaCloud && isMurenaAccountType Loading app/src/main/kotlin/at/bitfire/davdroid/ui/setup/MurenaOpenIdAuthFragment.kt +5 −1 Original line number Diff line number Diff line Loading @@ -64,6 +64,10 @@ class MurenaOpenIdAuthFragment : OpenIdAuthenticationBaseFragment(IdentityProvid return } proceedNext(userName, "${IdentityProvider.MURENA.baseUrl}$userName") val baseUrl = IdentityProvider.MURENA.getBaseUrl(requireContext()) ?: run { handleLoginFailedToast() return } proceedNext(userName, "$baseUrl$userName") } } Loading
.gitlab-ci.yml +11 −46 Original line number Diff line number Diff line Loading @@ -21,6 +21,10 @@ before_script: - echo GOOGLE_CLIENT_ID=$GOOGLE_CLIENT_ID >> local.properties - echo GOOGLE_REDIRECT_URI=$GOOGLE_REDIRECT_URI >> local.properties - echo YAHOO_CLIENT_ID=$YAHOO_CLIENT_ID >> local.properties - echo MURENA_BASE_URL_PRODUCTION=$MURENA_BASE_URL_PRODUCTION >> local.properties - echo MURENA_DISCOVERY_END_POINT_PRODUCTION=$MURENA_DISCOVERY_END_POINT_PRODUCTION >> local.properties - echo MURENA_BASE_URL_STAGING=$MURENA_BASE_URL_STAGING >> local.properties - echo MURENA_DISCOVERY_END_POINT_STAGING=$MURENA_DISCOVERY_END_POINT_STAGING >> local.properties - export GRADLE_USER_HOME=$(pwd)/.gradle - chmod +x ./gradlew Loading @@ -29,30 +33,9 @@ cache: paths: - .gradle/ build-prod: build: stage: build script: - echo MURENA_BASE_URL=$MURENA_BASE_URL >> local.properties - echo MURENA_DISCOVERY_END_POINT=$MURENA_DISCOVERY_END_POINT >> local.properties - ./gradlew build -x test - cd app/build/outputs/apk/ose/ - | if [[ ! -d "release" ]]; then echo "$APK_PATH does not exist." exit 1 fi cd "release" unsigned_build=$(ls *.apk | grep "release") mv $unsigned_build $UNSIGNED_APK artifacts: paths: - app/build/outputs/apk/ose/ build-staging: stage: build script: - echo MURENA_BASE_URL=$MURENA_BASE_URL_STAGING >> local.properties - echo MURENA_DISCOVERY_END_POINT=$MURENA_DISCOVERY_END_POINT_STAGING >> local.properties - ./gradlew build -x test - cd app/build/outputs/apk/ose/ - | Loading @@ -78,27 +61,11 @@ init_submodules: paths: - systemAppsUpdateInfo/scripts/ generate-prod-apks: generate-apks: stage: gitlab_release needs: - job: init_submodules - job: build-prod script: - | ./systemAppsUpdateInfo/scripts/generate-apks.sh \ "$APK_PATH" "$UNSIGNED_APK" "$COMMUNITY_APK" "$OFFICIAL_APK" "$TEST_APK" artifacts: paths: - $APK_PATH/$UNSIGNED_APK - $APK_PATH/$COMMUNITY_APK - $APK_PATH/$OFFICIAL_APK - $APK_PATH/$TEST_APK generate-staging-apks: stage: gitlab_release needs: - job: init_submodules - job: build-staging - job: build script: - | ./systemAppsUpdateInfo/scripts/generate-apks.sh \ Loading @@ -114,7 +81,7 @@ create-json-files: stage: gitlab_release needs: - job: init_submodules - job: generate-prod-apks - job: generate-apks rules: - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"' when: on_success Loading @@ -133,7 +100,7 @@ create-test-release: needs: - job: init_submodules - job: create-json-files - job: generate-prod-apks - job: generate-apks rules: - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"' when: manual Loading @@ -150,7 +117,7 @@ create-release: needs: - init_submodules - create-json-files - generate-prod-apks - generate-apks rules: - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"' when: manual Loading @@ -168,7 +135,7 @@ create-release: CI_PROJECT_SSH_URL: git@gitlab.e.foundation:$CI_PROJECT_PATH GIT_STRATEGY: none before_script: - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )' - "command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )" - eval $(ssh-agent -s) - echo "${SSH_E_ROBOT_PRIVATE_KEY}" | tr -d '\r' | ssh-add - - mkdir -p ~/.ssh Loading Loading @@ -211,5 +178,3 @@ update-default-branch: UPSTREAM_DEFAULT_BRANCH: release-ose UPSTREAM_URL: https://github.com/bitfireAT/davx5-ose.git TEMP_LATEST_TAG_BRANCH: latest_upstream_tag_branch
app/build.gradle +4 −2 Original line number Diff line number Diff line Loading @@ -142,8 +142,10 @@ android { buildConfigField "String", "MURENA_CLIENT_ID", "\"${retrieveKey("MURENA_CLIENT_ID")}\"" buildConfigField "String", "MURENA_REDIRECT_URI", "\"${retrieveKey("MURENA_REDIRECT_URI")}\"" buildConfigField "String", "MURENA_LOGOUT_REDIRECT_URI", "\"${retrieveKey("MURENA_LOGOUT_REDIRECT_URI")}\"" buildConfigField "String", "MURENA_BASE_URL", "\"${retrieveKey("MURENA_BASE_URL")}\"" buildConfigField "String", "MURENA_DISCOVERY_END_POINT", "\"${retrieveKey("MURENA_DISCOVERY_END_POINT")}\"" buildConfigField "String", "MURENA_BASE_URL_STAGING", "\"${retrieveKey("MURENA_BASE_URL_STAGING")}\"" buildConfigField "String", "MURENA_BASE_URL_PRODUCTION", "\"${retrieveKey("MURENA_BASE_URL_PRODUCTION")}\"" buildConfigField "String", "MURENA_DISCOVERY_END_POINT_STAGING", "\"${retrieveKey("MURENA_DISCOVERY_END_POINT_STAGING")}\"" buildConfigField "String", "MURENA_DISCOVERY_END_POINT_PRODUCTION", "\"${retrieveKey("MURENA_DISCOVERY_END_POINT_PRODUCTION")}\"" buildConfigField "String", "GOOGLE_CLIENT_ID", "\"${retrieveKey("GOOGLE_CLIENT_ID")}\"" buildConfigField "String", "GOOGLE_REDIRECT_URI", "\"${retrieveKey("GOOGLE_REDIRECT_URI")}\"" Loading
app/src/main/kotlin/at/bitfire/davdroid/authorization/IdentityProvider.kt +23 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import android.content.Context import android.net.Uri import at.bitfire.davdroid.BuildConfig import at.bitfire.davdroid.R import at.bitfire.davdroid.util.MurenaServerConfig import net.openid.appauth.AuthorizationServiceConfiguration import net.openid.appauth.AuthorizationServiceConfiguration.RetrieveConfigurationCallback Loading @@ -38,7 +39,7 @@ enum class IdentityProvider( baseUrl: String? ) { MURENA( discoveryEndpoint = BuildConfig.MURENA_DISCOVERY_END_POINT, discoveryEndpoint = BuildConfig.MURENA_DISCOVERY_END_POINT_PRODUCTION, authEndpoint = null, tokenEndpoint = null, clientId = BuildConfig.MURENA_CLIENT_ID, Loading @@ -47,7 +48,7 @@ enum class IdentityProvider( logoutRedirectUri = BuildConfig.MURENA_LOGOUT_REDIRECT_URI + ":/redirect", scope = "openid profile email offline_access", userInfoEndpoint = null, baseUrl = BuildConfig.MURENA_BASE_URL, baseUrl = BuildConfig.MURENA_BASE_URL_PRODUCTION, ), GOOGLE( discoveryEndpoint = "https://accounts.google.com/.well-known/openid-configuration", Loading Loading @@ -116,9 +117,26 @@ enum class IdentityProvider( this.baseUrl = baseUrl } fun retrieveConfig(callback: RetrieveConfigurationCallback) { if (mDiscoveryEndpoint != null) { AuthorizationServiceConfiguration.fetchFromUrl(mDiscoveryEndpoint, callback) fun getBaseUrl(context: Context): String? { return if (this == MURENA) { MurenaServerConfig.getBaseUrl(context) } else { baseUrl } } private fun getDiscoveryEndpoint(context: Context): Uri? { return if (this == MURENA) { retrieveUri(MurenaServerConfig.getDiscoveryUrl(context)) } else { mDiscoveryEndpoint } } fun retrieveConfig(context: Context, callback: RetrieveConfigurationCallback) { val discoveryEndpoint = getDiscoveryEndpoint(context) if (discoveryEndpoint != null) { AuthorizationServiceConfiguration.fetchFromUrl(discoveryEndpoint, callback) } else { val config = AuthorizationServiceConfiguration(mAuthEndpoint!!, mTokenEndpoint!!, null) callback.onFetchConfigurationCompleted(config, null) Loading
app/src/main/kotlin/at/bitfire/davdroid/syncadapter/AccountUtils.kt +5 −2 Original line number Diff line number Diff line Loading @@ -173,11 +173,14 @@ object AccountUtils { accountManager.getUserData(account, Constants.KEY_OC_BASE_URL) ?: return false val baseUrl = extractBaseUrl(urlData) val murenaBaseUrl = extractBaseUrl(BuildConfig.MURENA_BASE_URL) val murenaBaseUrls = setOf( extractBaseUrl(BuildConfig.MURENA_BASE_URL_PRODUCTION), extractBaseUrl(BuildConfig.MURENA_BASE_URL_STAGING), ) // User can have their own Murena account set up with custom Nextcloud instance, // so a check for base URL is necessary. val isMurenaCloud = (baseUrl == murenaBaseUrl) val isMurenaCloud = baseUrl in murenaBaseUrls val isMurenaAccountType = (account.type == context.getString(R.string.eelo_account_type)) return isMurenaCloud && isMurenaAccountType Loading
app/src/main/kotlin/at/bitfire/davdroid/ui/setup/MurenaOpenIdAuthFragment.kt +5 −1 Original line number Diff line number Diff line Loading @@ -64,6 +64,10 @@ class MurenaOpenIdAuthFragment : OpenIdAuthenticationBaseFragment(IdentityProvid return } proceedNext(userName, "${IdentityProvider.MURENA.baseUrl}$userName") val baseUrl = IdentityProvider.MURENA.getBaseUrl(requireContext()) ?: run { handleLoginFailedToast() return } proceedNext(userName, "$baseUrl$userName") } }