From e6c7ac9cb4de05c33dfaedb74f818ca89628ec03 Mon Sep 17 00:00:00 2001 From: Cryptobot Date: Sat, 25 Dec 2021 16:17:55 +0100 Subject: [PATCH 1/3] New Crowdin updates (#131) [ci skip] --- SharedResources/ru.lproj/Localizable.strings | 39 +++++++++++++++++++ .../zh-HK.lproj/Localizable.strings | 0 2 files changed, 39 insertions(+) create mode 100644 SharedResources/zh-HK.lproj/Localizable.strings diff --git a/SharedResources/ru.lproj/Localizable.strings b/SharedResources/ru.lproj/Localizable.strings index 052071329..1a5d38564 100644 --- a/SharedResources/ru.lproj/Localizable.strings +++ b/SharedResources/ru.lproj/Localizable.strings @@ -73,6 +73,7 @@ "chooseFolder.createNewFolder.header.title" = "Выберите имя для папки."; "chooseFolder.createNewFolder.cells.name" = "Имя папки"; "chooseFolder.createNewFolder.error.emptyFolderName" = "Имя папки не может быть пустым."; +"chooseFolder.createNewFolder.progress" = "Создание папки…"; "cloudProvider.error.itemNotFound" = "Не удалось найти \"%@\"."; "cloudProvider.error.itemAlreadyExists" = "\"%@\" уже существует."; @@ -104,13 +105,29 @@ "purchase.title" = "Разблокировать Полную Версию"; "purchase.info" = "Вы можете бесплатно использовать Cryptomator только в режиме \"для чтения\". Рассмотрите возможность разблокирования полной версии для доступа на запись в ваши хранилища."; +"purchase.infoRunningTrial" = "Пробный период истекает %@, он позволяет записывать данные в хранилища в течение ограниченного времени. После опробования вы можете разблокировать полную версию."; "purchase.infoExpiredTrial" = "Пробный период истек. Рассмотрите возможность разблокировки полной версии, чтобы восстановить доступ на запись к вашим хранилищам."; "purchase.upgrade.footer" = "Cryptomator обнаружил более старую версию. Вы можете обновиться, чтобы разблокировать полную версию."; "purchase.upgrade.notEligible.footer" = "Если вы уже купили старую версию Cryptomator, скачайте её заново из App Store."; "purchase.beginFreeTrial.button" = "Начать 30-ти дневный Пробный период Бесплатно"; "purchase.beginFreeTrial.footer" = "Попробуйте полную версию Cryptomator в течение ограниченного времени бесплатно. Вы можете разблокировать эту пробную версию только один раз."; "purchase.beginFreeTrial.alert.title" = "Пробная версия разблокирована"; +"purchase.beginFreeTrial.alert.message" = "Теперь вы можете использовать полную версию Cryptomator в течение ограниченного времени. Пробная версия истекает %@. После этого ваши хранилища по-прежнему будут доступны в режиме только для чтения."; +"purchase.purchaseFullVersion.button" = "Купить полную версию за %@"; +"purchase.purchaseFullVersion.footer" = "Оплатите один раз и разблокируйте бессрочный доступ к записи в хранилища."; +"purchase.restorePurchase.button" = "Восстановить покупку"; +"purchase.restorePurchase.footer" = "Если вы уже купили полную версию Cryptomator, то можете восстановить покупку."; +"purchase.restorePurchase.validTrialFound.alert.title" = "Продолжение опробования"; +"purchase.restorePurchase.validTrialFound.alert.message" = "Теперь вы можете использовать полную версию Cryptomator в течение ограниченного времени. Пробная версия истекает %@. После этого ваши хранилища по-прежнему будут доступны в режиме только для чтения."; +"purchase.restorePurchase.fullVersionFound.alert.title" = "Успешно восстановлено"; +"purchase.restorePurchase.fullVersionNotFound.alert.title" = "Полной версии нет"; +"purchase.restorePurchase.fullVersionNotFound.alert.message" = "Не удалось найти ранее приобретённую полную версию, которая может быть восстановлена. Попробуйте другой вариант."; "purchase.retry.button" = "Повторить"; +"purchase.retry.footer" = "Не удалось загрузить доступные продукты."; +"purchase.decideLater.button" = "Решу позже"; +"purchase.decideLater.footer" = "Вы можете разблокировать полную версию Cryptomator позже в настройках, а пока использовать режим только для чтения."; +"purchase.unlockedFullVersion.message" = "Теперь у вас полная версия Cryptomator. Счастливого шифрования!"; +"purchase.unlockedFullVersion.title" = "Спасибо!"; "settings.title" = "Настройки"; "settings.aboutCryptomator" = "О программе Cryptomator"; @@ -126,6 +143,17 @@ "settings.unlockFullVersion" = "Разблокировать Полную Версию"; "snapshots.fileprovider.file1" = "/Учет.числа"; +"snapshots.fileprovider.file2" = "/Final Presentation.key"; +"snapshots.fileprovider.file3" = "/Product Trailer.mov"; +"snapshots.fileprovider.file4" = "/Proposal.docx"; +"snapshots.fileprovider.file5" = "/Report.pdf"; +"snapshots.fileprovider.folder3" = "/Секретный проект"; +"snapshots.fileprovider.folder2" = "/Счета"; +"snapshots.fileprovider.folder1" = "/Сертификаты"; +"snapshots.main.vault1" = "/Работа"; +"snapshots.main.vault2" = "/Семья"; +"snapshots.main.vault3" = "/Документы"; +"snapshots.main.vault4" = "/Поездка в Крым"; "unlockVault.button.unlock" = "Разблокировать"; "unlockVault.button.unlockVia" = "Разблокировать через %@"; @@ -140,6 +168,16 @@ "untrustedTLSCertificate.add" = "Доверять"; "untrustedTLSCertificate.dismiss" = "Не доверять"; +"upgrade.title" = "Обновление с версии 1.x"; +"upgrade.info" = "У вас есть право обновить старую версию Cryptomator, чтобы разблокировать полную версию. Спасибо за поддержку Cryptomator в прошлом!"; +"upgrade.paidUpgrade.button" = "Обновите за %@"; +"upgrade.paidUpgrade.footer" = "Это поможет продолжать разработку ПО с открытым исходным кодом и будет для нас большой поддержкой."; +"upgrade.freeUpgrade.button" = "Обновить бесплатно"; +"upgrade.freeUpgrade.footer" = "Не волнуйтесь, вы также можете обновиться до полной версии бесплатно без каких-либо ограничений."; +"upgrade.decideLater.footer" = "Вы можете обновить Cryptomator до полной версии позже в настройках, а пока использовать режим только для чтения."; +"upgrade.notEligible.alert.title" = "Ошибка обновления"; +"upgrade.notEligible.alert.message" = "Не удалось обнаружить старую версию Cryptomator, установленную на вашем устройстве. Если вы купили её, пожалуйста, загрузите её снова в App Store и повторите попытку."; + "urlSession.error.httpError.401" = "Неверное имя пользователя и/или пароль."; "urlSession.error.httpError.403" = "Недостаточно прав на запрашиваемый ресурс."; "urlSession.error.httpError.404" = "Запрошенный ресурс не найден."; @@ -182,3 +220,4 @@ "webDAVAuthentication.httpConnection.alert.title" = "Использовать HTTPS?"; "webDAVAuthentication.httpConnection.alert.message" = "Протокол HTTP небезопасен. Рекомендуем использовать HTTPS. Продолжайте с HTTP, только если вы понимаете риски."; "webDAVAuthentication.httpConnection.change" = "Изменить на HTTPS"; +"webDAVAuthentication.httpConnection.continue" = "Оставить HTTP"; diff --git a/SharedResources/zh-HK.lproj/Localizable.strings b/SharedResources/zh-HK.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb From 37293a5408f48fe8e7df01b52cd436ed46af36d5 Mon Sep 17 00:00:00 2001 From: Philipp Schmid <25935690+phil1995@users.noreply.github.com> Date: Sat, 25 Dec 2021 16:28:30 +0100 Subject: [PATCH 2/3] Exclude FileProviderDocumentStorage from iCloud backup fixes #139 --- FileProviderExtension/FileProviderExtension.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/FileProviderExtension/FileProviderExtension.swift b/FileProviderExtension/FileProviderExtension.swift index 52d7923d8..053410151 100644 --- a/FileProviderExtension/FileProviderExtension.swift +++ b/FileProviderExtension/FileProviderExtension.swift @@ -283,6 +283,12 @@ class FileProviderExtension: NSFileProviderExtension, LocalURLProvider { } let domainDocumentStorage = domain.pathRelativeToDocumentStorage let manager = NSFileProviderManager.default + do { + try excludeFileProviderDocumentStorageFromiCloudBackup() + } catch { + DDLogError("Exclude FileProviderDocumentStorage from iCloud backup failed with error: \(error)") + return nil + } return manager.documentStorageURL.appendingPathComponent(domainDocumentStorage) } @@ -311,6 +317,13 @@ class FileProviderExtension: NSFileProviderExtension, LocalURLProvider { throw ErrorWrapper.wrapError(error, domain: domain) } } + + private func excludeFileProviderDocumentStorageFromiCloudBackup() throws { + var values = URLResourceValues() + values.isExcludedFromBackup = true + var documentStorageURL = NSFileProviderManager.default.documentStorageURL + try documentStorageURL.setResourceValues(values) + } } enum FileProviderDecoratorSetupError: Error { From 9f5dece98390460532efecdd58984d9603ea64cc Mon Sep 17 00:00:00 2001 From: Tobias Hagemann Date: Sat, 25 Dec 2021 16:42:29 +0100 Subject: [PATCH 3/3] Preparing 2.0.4 --- Cryptomator.xcodeproj/project.pbxproj | 4 ++-- fastlane/changelog.txt | 3 +-- fastlane/metadata/de-DE/release_notes.txt | 3 +-- fastlane/metadata/en-US/release_notes.txt | 3 +-- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Cryptomator.xcodeproj/project.pbxproj b/Cryptomator.xcodeproj/project.pbxproj index 52b86bf50..422cd4274 100644 --- a/Cryptomator.xcodeproj/project.pbxproj +++ b/Cryptomator.xcodeproj/project.pbxproj @@ -2629,7 +2629,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 2.0.3; + MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -2691,7 +2691,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 2.0.3; + MARKETING_VERSION = 2.0.4; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-expression-type-checking=200 -Xfrontend -warn-long-function-bodies=200"; diff --git a/fastlane/changelog.txt b/fastlane/changelog.txt index cfe9b5efa..d1c5de520 100644 --- a/fastlane/changelog.txt +++ b/fastlane/changelog.txt @@ -1,2 +1 @@ -- Fixed upload errors in Google Drive (#134) -- Fixed support of self-signed certificates and HTTP for WebDAV connections (#133) \ No newline at end of file +- Fixed security vulnerability by excluding cache from iCloud Backup (#139) \ No newline at end of file diff --git a/fastlane/metadata/de-DE/release_notes.txt b/fastlane/metadata/de-DE/release_notes.txt index f4b000eb7..68c7383e3 100644 --- a/fastlane/metadata/de-DE/release_notes.txt +++ b/fastlane/metadata/de-DE/release_notes.txt @@ -1,2 +1 @@ -- Upload-Fehler in Google Drive behoben (#134) -- Unterstützung von selbstsignierten Zertifikaten und HTTP für WebDAV-Verbindungen behoben (#133) \ No newline at end of file +- Sicherheitslücke behoben, indem der Cache aus dem iCloud Backup ausgeschlossen wird (#139) \ No newline at end of file diff --git a/fastlane/metadata/en-US/release_notes.txt b/fastlane/metadata/en-US/release_notes.txt index cfe9b5efa..d1c5de520 100644 --- a/fastlane/metadata/en-US/release_notes.txt +++ b/fastlane/metadata/en-US/release_notes.txt @@ -1,2 +1 @@ -- Fixed upload errors in Google Drive (#134) -- Fixed support of self-signed certificates and HTTP for WebDAV connections (#133) \ No newline at end of file +- Fixed security vulnerability by excluding cache from iCloud Backup (#139) \ No newline at end of file