From 18630948f54c0fbfde780a32d7d0e5e75b2e476a Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 13 Jul 2021 17:40:32 +0200 Subject: [PATCH 1/8] Update auto generated fastlane README --- fastlane/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/README.md b/fastlane/README.md index c2bc6cb2..76c52803 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -49,6 +49,6 @@ Create GitHub draft release ---- -This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). From 0bcfc123ddee52054ee9f32f78b563a0ba3040ae Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 13 Jul 2021 18:56:22 +0200 Subject: [PATCH 2/8] Update dependencies --- build.gradle | 5 ++--- buildsystem/dependencies.gradle | 13 +++++++------ msa-auth-for-android | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/build.gradle b/build.gradle index 181627e0..8d5d9ced 100644 --- a/build.gradle +++ b/build.gradle @@ -2,14 +2,13 @@ apply from: 'buildsystem/dependencies.gradle' apply plugin: "com.vanniktech.android.junit.jacoco" buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.5.21' repositories { - jcenter() mavenCentral() google() } dependencies { - classpath 'com.android.tools.build:gradle:4.2.1' + classpath 'com.android.tools.build:gradle:4.2.2' classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/buildsystem/dependencies.gradle b/buildsystem/dependencies.gradle index 405da723..c26106db 100644 --- a/buildsystem/dependencies.gradle +++ b/buildsystem/dependencies.gradle @@ -1,6 +1,7 @@ allprojects { repositories { - jcenter() + mavenCentral() + maven { url 'https://jitpack.io' } } } @@ -35,7 +36,7 @@ ext { okHttpVersion = '4.9.1' okHttpDigestVersion = '2.5' - velocityVersion = '1.7' + velocityVersion = '2.3' timberVersion = '4.7.1' @@ -43,7 +44,7 @@ ext { scaleImageViewVersion = '3.10.0' - lruFileCacheVersion = '1.0' + lruFileCacheVersion = '1.2' // KEEP IN SYNC WITH GENERATOR VERSION IN root build.gradle greenDaoVersion = '3.3.0' @@ -135,7 +136,7 @@ ext { msgraph : "com.microsoft.graph:microsoft-graph:${msgraphVersion}", multidex : "androidx.multidex:multidex:${multidexVersion}", okHttp : "com.squareup.okhttp3:okhttp:${okHttpVersion}", - okHttpDigest : "com.burgstaller:okhttp-digest:${okHttpDigestVersion}", + okHttpDigest : "io.github.rburgst:okhttp-digest:${okHttpDigestVersion}", recyclerViewFastScroll: "com.simplecityapps:recyclerview-fastscroll:${recyclerViewFastScrollVersion}", rxJava : "io.reactivex.rxjava2:rxjava:${rxJavaVersion}", rxAndroid : "io.reactivex.rxjava2:rxandroid:${rxAndroidVersion}", @@ -143,14 +144,14 @@ ext { stax : "stax:stax:${staxVersion}", testingSupportLib : "com.android.support.test:testing-support-lib:${testingSupportLibVersion}", timber : "com.jakewharton.timber:timber:${timberVersion}", - velocity : "org.apache.velocity:velocity:${velocityVersion}", + velocity : "org.apache.velocity:velocity-engine-core:${velocityVersion}", runner : "androidx.test:runner:${runnerVersion}", rules : "androidx.test:rules:${rulesVersion}", contribution : "androidx.test.espresso:espresso-contrib:${contributionVersion}", uiAutomator : "androidx.test.uiautomator:uiautomator:${uiautomatorVersion}", zxcvbn : "com.nulab-inc:zxcvbn:${zxcvbnVersion}", scaleImageView : "com.davemorrissey.labs:subsampling-scale-image-view:${scaleImageViewVersion}", - lruFileCache : "com.tomclaw.cache:cache:${lruFileCacheVersion}", + lruFileCache : "com.github.solkin:disk-lru-cache:${lruFileCacheVersion}", jsonWebTokenApi : "io.jsonwebtoken:jjwt-api:${jsonWebTokenApiVersion}", jsonWebTokenImpl : "io.jsonwebtoken:jjwt-impl:${jsonWebTokenApiVersion}", jsonWebTokenJson : "io.jsonwebtoken:jjwt-orgjson:${jsonWebTokenApiVersion}" diff --git a/msa-auth-for-android b/msa-auth-for-android index fe4e0458..7c0dc9ba 160000 --- a/msa-auth-for-android +++ b/msa-auth-for-android @@ -1 +1 @@ -Subproject commit fe4e04589043cb18011cae80aec7eab09b46ed44 +Subproject commit 7c0dc9baf7ef0e6f5a701fa8817b2e34be67f21b From e76e8016e6a713b093eb4691dd72f1ebaa999211 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 13 Jul 2021 21:33:24 +0200 Subject: [PATCH 3/8] Exclude httpclient of dependency to fix CVE's --- generator-api/build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/generator-api/build.gradle b/generator-api/build.gradle index c032a3c8..c560571c 100644 --- a/generator-api/build.gradle +++ b/generator-api/build.gradle @@ -8,5 +8,7 @@ targetCompatibility = 1.8 dependencies { def dependencies = rootProject.ext.dependencies - implementation dependencies.android + implementation(dependencies.android) { + exclude module: 'httpclient' + } } From 73bc1578d96a43c848b35c354bd3a6480c623bc2 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 13 Jul 2021 23:49:13 +0200 Subject: [PATCH 4/8] Add F-Droids iod-apk-scanner to Fastlane build process --- fastlane/Fastfile | 40 ++++++++++++++++++++++++++++++++++++++++ fastlane/result.json | 1 + 2 files changed, 41 insertions(+) create mode 100644 fastlane/result.json diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 8237c70c..a757c90c 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -181,6 +181,8 @@ platform :android do |options| } ) + checkTrackingAddedInDependency(alpha:options[:alpha], beta:options[:beta]) + if options[:alpha] or options[:beta] puts "Skipping deployment to F-Droid cause there isn't currently a alpha/beta channel" else @@ -210,6 +212,44 @@ platform :android do |options| FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "release/Cryptomator-#{version}_fdroid_signed.apk") end + desc "Check if tracking added in some dependency" + private lane :checkTrackingAddedInDependency do |options| + puts "Check if script file is latest" + sh("wget -O current_iod-scan-apk.php https://gitlab.com/fdroid/issuebot/-/raw/master/modules/iod-scan-apk.php") + + same_script = FileUtils.compare_file("iod-scan-apk.php", "current_iod-scan-apk.php") + if same_script + puts "Script file unchanged" + FileUtils.rm("current_iod-scan-apk.php") + else + UI.error("Script updated, check diff, download and save to iod-scan-apk.php") + fail + end + + FileUtils.mkdir("unsigned") + + FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "unsigned/org.cryptomator_#{version}.apk") + + sh("ISSUEBOT_CURRENT_APPLICATION_ID=org.cryptomator ISSUEBOT_CURRENT_REPLY_FILE=current_result.json php iod-scan-apk.php") + + # clean up + FileUtils.rm("libinfo.txt") + FileUtils.rm("libsmali.txt") + FileUtils.rm_r("unsigned") + FileUtils.rm_r("org.cryptomator_#{version}") + + puts "Check if something changed in the APK regarding the dependencies" + same_files = FileUtils.compare_file("result.json", "current_result.json") + + if same_files + puts "Dependencies unchanged" + FileUtils.rm("current_result.json") + else + UI.error("Dependencies changed, check result of current_result.json, if no problem, move it to result.json, commit and retry") + fail + end + end + desc "Create GitHub draft release" lane :createGitHubDraftRelease do |options| target_branch = "main" diff --git a/fastlane/result.json b/fastlane/result.json new file mode 100644 index 00000000..6666c8bd --- /dev/null +++ b/fastlane/result.json @@ -0,0 +1 @@ +{"applicationId":"org.cryptomator","emoji":[],"labels":[],"report":"

APK library scanner

\nunsigned/org.cryptomator_1.6.1-SNAPSHOT.apk\nApktool failed (rc: 1), analysis skipped.\n
\n","reportData":{"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 2500 library definitions","Analyzing 'unsigned/org.cryptomator_1.6.1-SNAPSHOT.apk'...","Apktool returned: 1","Apktool failed, skipping analysis."],"self_url":null}} \ No newline at end of file From 68555079013607e501aaf60a557d86c62a865e06 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 14 Jul 2021 12:40:59 +0200 Subject: [PATCH 5/8] Compare only the report as there are version specific params in the JSON --- fastlane/Fastfile | 41 ++++++++++++++++++++++------------------- fastlane/README.md | 5 +++++ fastlane/result.json | 2 +- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index a757c90c..508e8c76 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -2,6 +2,7 @@ fastlane_require 'dotenv' fastlane_require 'jwt' fastlane_require 'base64' fastlane_require 'net/sftp' +fastlane_require 'json' default_platform(:android) @@ -213,35 +214,37 @@ platform :android do |options| end desc "Check if tracking added in some dependency" - private lane :checkTrackingAddedInDependency do |options| + lane :checkTrackingAddedInDependency do |options| puts "Check if script file is latest" - sh("wget -O current_iod-scan-apk.php https://gitlab.com/fdroid/issuebot/-/raw/master/modules/iod-scan-apk.php") + sh("wget -O current_iod-scan-apk.php https://gitlab.com/fdroid/issuebot/-/raw/master/modules/iod-scan-apk.php") - same_script = FileUtils.compare_file("iod-scan-apk.php", "current_iod-scan-apk.php") - if same_script - puts "Script file unchanged" - FileUtils.rm("current_iod-scan-apk.php") - else - UI.error("Script updated, check diff, download and save to iod-scan-apk.php") - fail - end + same_script = FileUtils.compare_file("iod-scan-apk.php", "current_iod-scan-apk.php") + if same_script + puts "Script file unchanged" + FileUtils.rm("current_iod-scan-apk.php") + else + UI.error("Script updated, check diff, download and save to iod-scan-apk.php") + fail + end FileUtils.mkdir("unsigned") - FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "unsigned/org.cryptomator_#{version}.apk") + FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "unsigned/org.cryptomator_#{version}.apk") sh("ISSUEBOT_CURRENT_APPLICATION_ID=org.cryptomator ISSUEBOT_CURRENT_REPLY_FILE=current_result.json php iod-scan-apk.php") - # clean up - FileUtils.rm("libinfo.txt") - FileUtils.rm("libsmali.txt") - FileUtils.rm_r("unsigned") - FileUtils.rm_r("org.cryptomator_#{version}") + # clean up + FileUtils.rm("libinfo.txt") + FileUtils.rm("libsmali.txt") + FileUtils.rm_r("unsigned") + FileUtils.rm_r("org.cryptomator_#{version}") - puts "Check if something changed in the APK regarding the dependencies" - same_files = FileUtils.compare_file("result.json", "current_result.json") + puts "Check if something changed in the APK regarding the dependencies" - if same_files + report = JSON.parse(File.read("result.json"))["report"] + current_report = JSON.parse(File.read("current_result.json"))["report"] + + if report.eql?(current_report) puts "Dependencies unchanged" FileUtils.rm("current_result.json") else diff --git a/fastlane/README.md b/fastlane/README.md index 76c52803..bca77c73 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -41,6 +41,11 @@ Deploy new version to server fastlane android deployToFDroid ``` Deploy new version to F-Droid +### android checkTrackingAddedInDependency +``` +fastlane android checkTrackingAddedInDependency +``` +Check if tracking added in some dependency ### android createGitHubDraftRelease ``` fastlane android createGitHubDraftRelease diff --git a/fastlane/result.json b/fastlane/result.json index 6666c8bd..a29d38fb 100644 --- a/fastlane/result.json +++ b/fastlane/result.json @@ -1 +1 @@ -{"applicationId":"org.cryptomator","emoji":[],"labels":[],"report":"

APK library scanner

\nunsigned/org.cryptomator_1.6.1-SNAPSHOT.apk\nApktool failed (rc: 1), analysis skipped.\n
\n","reportData":{"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 2500 library definitions","Analyzing 'unsigned/org.cryptomator_1.6.1-SNAPSHOT.apk'...","Apktool returned: 1","Apktool failed, skipping analysis."],"self_url":null}} \ No newline at end of file +{"applicationId":"org.cryptomator","emoji":[],"labels":["scanner-warning"],"report":"

APK library scanner

\nunsigned/org.cryptomator_1.6.1-SNAPSHOT.apk\nOffending libs:
\n
    \n
  • Dropbox Core SDK for Java (/com/dropbox/core): NonFreeNet
  • \n
  • MSA Auth for Android (/com/microsoft/services/msa): NonFreeNet
  • \n
  • pCloud Java SDK (/com/pcloud/sdk): NonFreeNet
  • \n
\n3 offender(s). Full report available here.
\n","reportData":{"unsigned/org.cryptomator_1.6.1-SNAPSHOT.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":""},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":""},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":""},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":""},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":""},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":""},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":""},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":""},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":""},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":""},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":""},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":""},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":""},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":""},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":""},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":""},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":""},{"id":"/com/dropbox/core","name":"Dropbox Core SDK for Java","typ":"Utility","anti":"NonFreeNet"},{"id":"/com/fasterxml","name":"Fasterxml","typ":"Utility","anti":""},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":""},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":""},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":""},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":""},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":""},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":""},{"id":"/com/microsoft/graph","name":"Microsoft Graph-SDK","typ":"Development Framework","anti":""},{"id":"/com/microsoft/services/msa","name":"MSA Auth for Android","typ":"Utility","anti":"NonFreeNet"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":""},{"id":"/com/pcloud/sdk","name":"pCloud Java SDK","typ":"Utility","anti":"NonFreeNet"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":""},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":""},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":""},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":""},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":""},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":""},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":""},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":""},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":""},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":""},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":""},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":""},{"id":"/org/apache/http","name":"Apache Http","typ":"Utility","anti":""},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":""},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":""},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":""},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":""},{"id":"/org/simpleframework","name":"Simple","typ":"Utility","anti":""},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":""},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":""}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 2500 library definitions","Analyzing 'unsigned/org.cryptomator_1.6.1-SNAPSHOT.apk'...","Apktool returned: 0","Read 23715 bytes of smali path names from 'org.cryptomator_1.6.1-SNAPSHOT.dirlist'","Identified 49 libraries, 3 offenders.","Done analyzing 'unsigned/org.cryptomator_1.6.1-SNAPSHOT.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file From 0f216e023c42ce9f3f759d8dbd3bcadef025e1de Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 14 Jul 2021 14:55:37 +0200 Subject: [PATCH 6/8] Fix indentation and update dependencies --- Gemfile.lock | 8 ++++---- fastlane/Fastfile | 48 +++++++++++++++++++++++------------------------ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 06b22f75..56008e19 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,8 +9,8 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.1.1) - aws-partitions (1.475.0) - aws-sdk-core (3.116.0) + aws-partitions (1.478.0) + aws-sdk-core (3.117.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.239.0) aws-sigv4 (~> 1.1) @@ -40,7 +40,7 @@ GEM ed25519 (1.2.4) emoji_regex (3.2.2) excon (0.84.0) - faraday (1.5.0) + faraday (1.5.1) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -58,7 +58,7 @@ GEM faraday-excon (1.1.0) faraday-httpclient (1.0.1) faraday-net_http (1.0.1) - faraday-net_http_persistent (1.1.0) + faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday_middleware (1.0.0) faraday (~> 1.0) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 508e8c76..e3d26fbc 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -9,7 +9,7 @@ default_platform(:android) build = number_of_commits + 1958 # adding 1958 for legacy reasons. Must be in sync with getVersionCode() from build.gradle version = get_version_name( gradle_file_path:"build.gradle", - ext_constant_name:"androidVersionName") + ext_constant_name:"androidVersionName") version = version.delete "'" release_note_path_en = "metadata/android/en-US/changelogs/default.txt" @@ -184,31 +184,31 @@ platform :android do |options| checkTrackingAddedInDependency(alpha:options[:alpha], beta:options[:beta]) - if options[:alpha] or options[:beta] - puts "Skipping deployment to F-Droid cause there isn't currently a alpha/beta channel" - else - puts "Updating F-Droid" + if options[:alpha] or options[:beta] + puts "Skipping deployment to F-Droid cause there isn't currently a alpha/beta channel" + else + puts "Updating F-Droid" - FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "repo/Cryptomator.apk") + FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "repo/Cryptomator.apk") - sh("cp -r metadata/android/ metadata/org.cryptomator/") - FileUtils.cp("metadata/org.cryptomator/en-US/changelogs/default.txt", "metadata/org.cryptomator/en-US/changelogs/#{version}.txt") - FileUtils.cp("metadata/org.cryptomator/de-DE/changelogs/default.txt", "metadata/org.cryptomator/de-DE/changelogs/#{version}.txt") - sh("fdroid update && fdroid rewritemeta") - sh("rm -r metadata/org.cryptomator/") + sh("cp -r metadata/android/ metadata/org.cryptomator/") + FileUtils.cp("metadata/org.cryptomator/en-US/changelogs/default.txt", "metadata/org.cryptomator/en-US/changelogs/#{version}.txt") + FileUtils.cp("metadata/org.cryptomator/de-DE/changelogs/default.txt", "metadata/org.cryptomator/de-DE/changelogs/#{version}.txt") + sh("fdroid update && fdroid rewritemeta") + sh("rm -r metadata/org.cryptomator/") - aws_s3( - bucket: ENV['S3_BUCKET'], - endpoint: ENV['S3_ENDPOINT'], - region: ENV['S3_REGION'], - access_key: ENV['S3_ACCESS_KEY'], - secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], - path: "android/fdroid", - folder: "fastlane/repo", - skip_html_upload: true, - apk: '' - ) - end + aws_s3( + bucket: ENV['S3_BUCKET'], + endpoint: ENV['S3_ENDPOINT'], + region: ENV['S3_REGION'], + access_key: ENV['S3_ACCESS_KEY'], + secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], + path: "android/fdroid", + folder: "fastlane/repo", + skip_html_upload: true, + apk: '' + ) + end FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "release/Cryptomator-#{version}_fdroid_signed.apk") end @@ -218,7 +218,7 @@ platform :android do |options| puts "Check if script file is latest" sh("wget -O current_iod-scan-apk.php https://gitlab.com/fdroid/issuebot/-/raw/master/modules/iod-scan-apk.php") - same_script = FileUtils.compare_file("iod-scan-apk.php", "current_iod-scan-apk.php") + same_script = FileUtils.compare_file("iod-scan-apk.php", "current_iod-scan-apk.php") if same_script puts "Script file unchanged" FileUtils.rm("current_iod-scan-apk.php") From ff2596689f134cf769f9253276a5955eae355b3d Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 14 Jul 2021 16:56:16 +0200 Subject: [PATCH 7/8] Add iod-scan-apk.php related files to .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 97f67a87..986db55f 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,6 @@ local.properties # fdroid **/fastlane/repo/** **/fastlane/tmp/** +**/fastlane/iod-scan-apk.php +**/fastlane/current_iod-scan-apk.php +**/fastlane/current_result.json From f7411f085f55330e093156ce601e968c0c9a9d52 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Mon, 26 Jul 2021 10:00:03 +0200 Subject: [PATCH 8/8] New Crowdin updates [ci skip] --- .../src/main/res/values-ca-rES/strings.xml | 35 +++ .../src/main/res/values-hu-rHU/strings.xml | 1 + .../src/main/res/values-ja-rJP/strings.xml | 288 ++++++++++++++++++ .../src/main/res/values-ru-rRU/strings.xml | 6 + .../src/main/res/values-tr-rTR/strings.xml | 18 +- 5 files changed, 339 insertions(+), 9 deletions(-) diff --git a/presentation/src/main/res/values-ca-rES/strings.xml b/presentation/src/main/res/values-ca-rES/strings.xml index 5f571123..8cc4abce 100644 --- a/presentation/src/main/res/values-ca-rES/strings.xml +++ b/presentation/src/main/res/values-ca-rES/strings.xml @@ -1,26 +1,57 @@ + Xifrar + Hi ha hagut un error + Ha fallat l\'autenticació + Error d\'autenticació, inicieu sessió usant %1$s + No hi ha connexió de xarxa + Contrasenya incorrecta + Ja existeix un fitxer o carpeta. + Caixa forta no suportada. Caixa forta creada amb una altra versió de Cryptomator. + La caixa forta ja existeix. + El fitxer no existeix. + S\'ha bloquejat la caixa forta. + Núvol ja existent. + Descarregueu un aplicació que pugui obrir aquest fitxer. + No s\'ha trobat el servidor. + Obriu la configuració dels vostres dispositius i establiu el bloqueig de pantalla a mà + Emmagatzematge local + Cercar + Anterior Següent + Ordenar + A - Z + Z - A Elimina Caixa forta Trieu + Editar + text + fitxer + fitxers + URL + Nom d\'usuari Contrasenya + Connectar + Regió + Nom de la caixa forta + Crear Fet Poc segura @@ -28,6 +59,7 @@ Segura General + Cercar @@ -38,6 +70,9 @@ Desbloqueja Elimina + D\'acord + Crear Caixa forta + No es pot obrir %1$s Bloqueja Tanca Enrere diff --git a/presentation/src/main/res/values-hu-rHU/strings.xml b/presentation/src/main/res/values-hu-rHU/strings.xml index a5d5c5fd..1232623a 100644 --- a/presentation/src/main/res/values-hu-rHU/strings.xml +++ b/presentation/src/main/res/values-hu-rHU/strings.xml @@ -118,6 +118,7 @@ Mégse Feloldás + Eltávolítás Zárolás Bezár Vissza diff --git a/presentation/src/main/res/values-ja-rJP/strings.xml b/presentation/src/main/res/values-ja-rJP/strings.xml index 4a2ca15f..eb493d68 100644 --- a/presentation/src/main/res/values-ja-rJP/strings.xml +++ b/presentation/src/main/res/values-ja-rJP/strings.xml @@ -1,64 +1,352 @@ + 暗号化 + エラーが発生しました + 認証に失敗しました + 認証に失敗しました。%1$s を使用してログインしてください + ネットワーク接続がありません + パスワードが正しくありません + ファイルかフォルダーが既に存在します。 + サポートされない金庫です。この金庫は別のバージョンの Cryptomator を使用して作成されました。 + 金庫が既に存在します。 + ファイルが存在しません。 + 金庫が施錠されました。 + クラウドが既に存在します。 + このファイルを開くことができるアプリをダウンロードしてください。 + サーバーが見つかりませんでした。 + 端末の設定を開いて、画面ロックを設定してください + エクスポートに失敗しました。ファイル名から特殊文字を削除して再度エクスポートしてください。 + 特殊文字を含めることはできません。 + 特殊文字を含むファイル名は使用できません。 + 特殊文字を含む金庫名は使用できません。 + 更新の確認に失敗しました。エラーが発生しました。 + 更新の確認に失敗しました。ハッシュ値がアップロードされたファイルと一致しません。 + 更新の確認に失敗しました。インターネット接続がありません。 + WebDAV パスワードの復号に失敗しました。設定を再度追加してください + Play Services がインストールされていません + 生体認証が中断されました + Vault.cryptomator 内で指定されたバージョンと masterkey.cryptomator の情報が異なります + vault.cryptomator が masterkey.cryptomator と一致しません + 金庫の設定を読み込み中に失敗しました + Bucket がありません + 自由に Masterkey の場所を設定することはまだできません + ローカルストレージ + ファイルをエクスポートするには、Cryptomator がストレージにアクセスする許可が必要です + ファイルをアップロードするには、Cryptomator がストレージにアクセスする許可が必要です + ファイルを共有するには、Cryptomator がストレージにアクセスする許可が必要です 設定 + 検索 + 戻る 次へ + ソート + A - Z + Z - A + 新しい順 + 古い順 + 大きい順 + 小さい順 + Cryptomator に追加 + 新しい金庫を作成 + 既存の金庫を追加 削除 + ここをクリックして新しい金庫を作成 + パスワードが正常に変更されました 金庫 + Masterkey ファイルを選択 + ここにおく + 金庫の名前: %1$s + 移動 + 空のフォルダー + %1$s 前に編集 + 次で共有 + 保存先を選択 選択 + 共有するものがありません + %1$s に追加 + フォルダーを作成 + テキスト ファイルを作成 + ファイルをアップロード + ファイル + エクスポートされたファイル + エクスポートされたファイル + エクスポートするものがありません + ダウンロード ディレクトリの作成に失敗しました + 共有 + 名前の変更 編集 + エクスポート + 削除 + 次で開く… + アイテムを選択 + %1$d 個選択済み + 選択… + すべて選択 + 更新 + 接続なし + 再試行 + 正常に保存されました + %1$s を保存… + テキスト + ファイル + ファイル + ファイル名は重複しない必要があります。名前を変更してください + 保存先 + 保存 + 暗号化が完了しました + クラウド サービス + 接続先を選択 + ここをタップして場所を追加する + サーバーに WebDAV との互換性がありません + その他の保存先 + デフォルトの保存先 + 追加の利用できる保存先はありません。 URL ユーザー名 パスワード + 接続 + URLは空にできません。 + URL が無効です。 + ユーザー名は空にできません。 + パスワードは空にできません。 + 表示名 + 接続キー + 秘密鍵 + 既存の Bucket + エンドポイント + 地域 + 表示名は空にできません + 接続キーは空にできません + 秘密キーは空にできません + Bucket は空にできません + エンドポイントまたは地域は空にできません + 金庫名は空にできません。 + 金庫の名前 作成 + パスワードの設定 + 再入力されたパスワードが一致しません。 完了 重要: パスワードを忘れると、データを回復する方法はありません。 + パスワードを再入力 + 金庫を作成するには弱すぎます 弱い 普通 強い + 非常に強い 基本設定 + クラウド サービス + 生体認証 + 生体認証を有効にする + 顔認証のロック解除 (利用できる場合) + 他のアプリが重なるときにアプリを停止 + スクリーンショットをブロック + 検索 + ライブ検索 + 次の場合にロックする + 画面がロックされたとき + 自動的に画像をアップロード + アップロードする金庫を選択 + 有効 + WIFI を使用しているときのみアップロード + ビデオをアップロード + Cryptomator のウェブサイト + Twitter でフォローする + Facebook でいいねする + 法的事項 + ライセンス + ライセンス条項 + サポート + ヘルプを求める + デバッグ モード + ログ ファイルを送信 + 送信できませんでした + セキュリティのヒント + バージョン + 高度な設定 + パスワードまたは生体による認証中に、バックグラウンドで金庫の設定をダウンロードします + 解錠したままにする + ファイルの編集中は金庫を解錠しておく + WebDAV 接続 + pCloud 接続 + S3 接続 + ローカル ストレージの場所 + ログイン + 次からサインアウト + %1$s は認証できませんでした。 + pCloud 資格情報を更新 + \'%1$s\' に到達できません + Cryptomator がこのフォルダに到達できません。 + Sanitizer の詳細 キャンセル 解錠 + 古いパスワード + 新しいパスワード + パスワードを変更 + 古いパスワードは空にできません。 + 新しいパスワードは空にできません。 + 新しいパスワードが再入力されたパスワードと一致しません。 + 金庫 %1$s が見つかりません + 金庫の名前が変更、移動または削除されました。この金庫をリストから削除し、再度追加してください。今すぐ削除してもよろしいですか? 削除 + ファイルが既に存在します + 置換 + ファイル名 %1$s が既に存在します。 + すべて置換 + 置換 + ファイルを置き換えますか? + ファイルを置き換えますか? + ファイルを共有できません + 金庫のセットアップが完了していません。最初に Cryptomator から新しい金庫を作成してください。 OK + 金庫を作成 + %1$s を開くことができません + このファイルを開くことができるアプリをダウンロードしてください。それともデバイスに保存しますか? + 金庫の名前を変更 + フォルダーの名前を変更 + ファイルの名前を変更 + 保存していない変更があります + 保存せずに終了してもよろしいですか? + 破棄 + text.txt + 本当にこの金庫を削除しますか? + アップロード中… + ファイル %1$d/%2$d + エクスポート中 (%1$d/%2$d) + しばらくお待ち下さい… + フォルダーを作成中… + テキスト ファイルを作成中… + 認証… + 名前を変更中… + 削除中… + 金庫を解錠中… + パスワードを変更中… + 金庫を作成中… + アップロード中… + ダウンロード中… + 暗号化中… + 復号中… + 移動中… 施錠 + 不正な SSL 証明書です + SSL 証明書が無効です。それでも信頼しますか? + 詳細 + これはセキュリティ リスクになる可能性があります。リスクについて理解していますか + HTTPS に変更 + HTTPS を使用しますか? + 画面ロックを設定しますか? + 画面ロックを設定 + システムに基本的な認証が設定されていません + 注意 + 有効 + この設定は安全のための機能です。他のアプリがユーザーを騙してしまうことを防ぎます。\n\n無効にすることで、 リスクを認識していること に留意する必要があります。 + 注意 + 無効 + アプリが重なっています + 他のアプリケーションが Cryptomator の上に何かを表示しています (例: ブルーライト フィルターや night mode アプリ)。このため、セキュリティの観点から Cryptomator が無効化されています。\n\nCryptomator を有効にするには 閉じる + この設定は安全のための機能です。他のアプリがユーザーを騙してしまうことを防ぎます。\n\n無効にすることで、 リスクを認識していること に留意する必要があります。 + 本当にこのクラウド接続を削除しますか? + この操作により、クラウド接続とクラウドのすべての金庫が削除されます。 + %1$d 個の項目を削除しますか? + 本当にこれらの項目を削除してもよろしいですか? + 本当にこのファイルを削除してもよろしいですか? + この操作はフォルダーの内容をすべて削除します。本当にこのフォルダーを削除してもよろしいですか? + 生体認証機能が無効になりました + 有効なライセンスを入力してください + 終了 + すぐに更新 + ダウンロード サイトに行く + あとで + ダウンロード中 戻る + 0 kB + バイト + kB + MB + GB + TB + + + + + + + + + + + + +  年 + 生体認証でログイン + 生体認証を使用してログイン + 金庫のパスワードを使用 + すべて施錠 + アップロードをキャンセル + 写真を自動的にアップロードしています + アップロード中 %1d/%2d + 写真の自動アップロードが完了しました + %1$d 個の画像を金庫にアップロードしました + 写真の自動アップロードが失敗しました + キャッシュ + キャッシュの合計サイズ + キャッシュを削除する + 変更は次のアプリの再起動時に適用されます + 登録済み + %1$s + 更新確認の間隔 + 更新の確認 + 1分 + 2分 + 5分 + 10分 + 無期限 + 50 MB + 100 MB + 250 MB + 500 MB + 1 GB + 5 GB + 外観 + 自動 (システムに従う) ライト ダーク + 毎日 + 毎週 + 毎月 diff --git a/presentation/src/main/res/values-ru-rRU/strings.xml b/presentation/src/main/res/values-ru-rRU/strings.xml index ed562bab..460abc6a 100644 --- a/presentation/src/main/res/values-ru-rRU/strings.xml +++ b/presentation/src/main/res/values-ru-rRU/strings.xml @@ -65,6 +65,12 @@ Выберите файл Masterkey Поместить здесь Имя хранилища: %1$s + + Переместить %1$s в + Переместить %2$d элем. в + Переместить %2$d элем. в + Переместить %2$d элем. в + Переместить Пустая папка изменено %1$s назад diff --git a/presentation/src/main/res/values-tr-rTR/strings.xml b/presentation/src/main/res/values-tr-rTR/strings.xml index f13a9d1f..cec441ce 100644 --- a/presentation/src/main/res/values-tr-rTR/strings.xml +++ b/presentation/src/main/res/values-tr-rTR/strings.xml @@ -22,7 +22,7 @@ Dosya adları özel karakterler içeremez. Kasa adı özel karakterler içeremez. Genel bir hata oluştu ve güncelleme kontrolü başarısız oldu. - Güncelleme kontrolü başarısız. Hesaplanan karma değer yüklenen dosya ile eşleşmiyor + Güncelleme kontrolü başarısız. Hesaplanan hash değeri ile yüklenen dosyanın ki eşleşmiyor Güncelleme kontrolü başarısız oldu. İnternet bağlantısı yok. WebDAV şifresi çözülemedi, lütfen ayarlara yeniden ekleyin Play Hizmetleri yüklü değil @@ -131,10 +131,10 @@ Görünen Ad Erişim Anahtarı Gizli Anahtar - Mevcut Kova - Endpoint + Mevcut kova + Uç nokta Bölge - Görünen Ad boş olamaz + Görünen ad boş olamaz Erişim Anahtarı boş olamaz Gizli Anahtar boş olamaz Kova boş olamaz @@ -168,7 +168,7 @@ Canlı arama Sorgulama yaparken, arama sonuçlarını güncelle Glob kalıbı kullanarak ara - Glob pattern kullan. alice.*.jpg gibi + Glob kalıbı kullan. alice.*.jpg gibi Otomatik Kilitleme Kilitleme zamanı Ekran devre dışı bırakıldığında @@ -272,7 +272,7 @@ Şifre çözülüyor… Taşınıyor… Kilitle - Geçersiz SSL sertifikası + SSL sertifikası geçersiz SSL sertifikası geçersiz. Yine de güvenmek istiyor musun? Detaylar Bu bir güvenlik riski olabilir! Ne yaptığımı biliyorum. @@ -323,7 +323,7 @@ \'%1$s\' bulut klasörünün bir dizin dosyası yok. Klasör başka bir cihazda oluşturulmuş ve henüz buluta tam olarak senkronize edilmemiş olabilir. Lütfen aşağıdaki dosyanın mevcut olup olmadığını kontrol edin:\n%2$s … göstermek için daha fazla resim yok %1$s kimlik bilgileri güncellendi - Yeni bir pCloud hesabı eklemeyi düşünüyorsanız, bu url www.pcloud.com tıklayın, mevcut hesaptan çıkın ve yeni bir bulut bağlantısı oluşturmak için bu uygulamadaki \'+\'. tekrar tıklayın. + Yeni bir pCloud hesabı eklemeyi düşünüyorsanız, bu url www.pcloud.com tıklayın, mevcut hesaptan çıkın ve yeni bir bulut bağlantısı oluşturmak için \'+\'. tekrar tıklayın. Cryptomator\'un yerel kasaları kullanmak için depolama erişimine ihtiyacı var Cryptomator\'un otomatik fotoğraf yüklemesi için depolama erişimine ihtiyacı var @@ -372,7 +372,7 @@ Düzenleme tamamlanana kadar, uygulamalar kasası kilidi açık kalır En son sürüm yüklendi Önbellek - Yeniden açıldıklarında daha sonra yeniden kullanılmak üzere cihazda yerel olarak şifrelenmiş yakın zamanda erişilen dosyaları önbelleğe alın + Yeniden açıldıklarında daha sonra yeniden kullanılmak üzere, cihazda yerel olarak şifrelenmiş yakın zamanda erişilen dosyaları önbelleğe alın Toplam önbellek boyutu Önbelleği temizle Değişiklikler, uygulama yeniden başlatıldığında uygulanacak @@ -388,7 +388,7 @@ 2 dakika 5 dakika 10 dakika - @string/lock_timeout_never + Hiçbir zaman 50 MB 100 MB