Skip to content

Commit d31c2fc

Browse files
committed
Merge branch 'release/2.0.4'
2 parents 95bd789 + 9f5dece commit d31c2fc

File tree

7 files changed

+57
-8
lines changed

7 files changed

+57
-8
lines changed

Cryptomator.xcodeproj/project.pbxproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -2629,7 +2629,7 @@
26292629
GCC_WARN_UNUSED_FUNCTION = YES;
26302630
GCC_WARN_UNUSED_VARIABLE = YES;
26312631
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
2632-
MARKETING_VERSION = 2.0.3;
2632+
MARKETING_VERSION = 2.0.4;
26332633
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
26342634
MTL_FAST_MATH = YES;
26352635
ONLY_ACTIVE_ARCH = YES;
@@ -2691,7 +2691,7 @@
26912691
GCC_WARN_UNUSED_FUNCTION = YES;
26922692
GCC_WARN_UNUSED_VARIABLE = YES;
26932693
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
2694-
MARKETING_VERSION = 2.0.3;
2694+
MARKETING_VERSION = 2.0.4;
26952695
MTL_ENABLE_DEBUG_INFO = NO;
26962696
MTL_FAST_MATH = YES;
26972697
OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-expression-type-checking=200 -Xfrontend -warn-long-function-bodies=200";

FileProviderExtension/FileProviderExtension.swift

+13
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,12 @@ class FileProviderExtension: NSFileProviderExtension, LocalURLProvider {
283283
}
284284
let domainDocumentStorage = domain.pathRelativeToDocumentStorage
285285
let manager = NSFileProviderManager.default
286+
do {
287+
try excludeFileProviderDocumentStorageFromiCloudBackup()
288+
} catch {
289+
DDLogError("Exclude FileProviderDocumentStorage from iCloud backup failed with error: \(error)")
290+
return nil
291+
}
286292
return manager.documentStorageURL.appendingPathComponent(domainDocumentStorage)
287293
}
288294

@@ -311,6 +317,13 @@ class FileProviderExtension: NSFileProviderExtension, LocalURLProvider {
311317
throw ErrorWrapper.wrapError(error, domain: domain)
312318
}
313319
}
320+
321+
private func excludeFileProviderDocumentStorageFromiCloudBackup() throws {
322+
var values = URLResourceValues()
323+
values.isExcludedFromBackup = true
324+
var documentStorageURL = NSFileProviderManager.default.documentStorageURL
325+
try documentStorageURL.setResourceValues(values)
326+
}
314327
}
315328

316329
enum FileProviderDecoratorSetupError: Error {

SharedResources/ru.lproj/Localizable.strings

+39
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
"chooseFolder.createNewFolder.header.title" = "Выберите имя для папки.";
7474
"chooseFolder.createNewFolder.cells.name" = "Имя папки";
7575
"chooseFolder.createNewFolder.error.emptyFolderName" = "Имя папки не может быть пустым.";
76+
"chooseFolder.createNewFolder.progress" = "Создание папки…";
7677

7778
"cloudProvider.error.itemNotFound" = "Не удалось найти \"%@\".";
7879
"cloudProvider.error.itemAlreadyExists" = "\"%@\" уже существует.";
@@ -104,13 +105,29 @@
104105

105106
"purchase.title" = "Разблокировать Полную Версию";
106107
"purchase.info" = "Вы можете бесплатно использовать Cryptomator только в режиме \"для чтения\". Рассмотрите возможность разблокирования полной версии для доступа на запись в ваши хранилища.";
108+
"purchase.infoRunningTrial" = "Пробный период истекает %@, он позволяет записывать данные в хранилища в течение ограниченного времени. После опробования вы можете разблокировать полную версию.";
107109
"purchase.infoExpiredTrial" = "Пробный период истек. Рассмотрите возможность разблокировки полной версии, чтобы восстановить доступ на запись к вашим хранилищам.";
108110
"purchase.upgrade.footer" = "Cryptomator обнаружил более старую версию. Вы можете обновиться, чтобы разблокировать полную версию.";
109111
"purchase.upgrade.notEligible.footer" = "Если вы уже купили старую версию Cryptomator, скачайте её заново из App Store.";
110112
"purchase.beginFreeTrial.button" = "Начать 30-ти дневный Пробный период Бесплатно";
111113
"purchase.beginFreeTrial.footer" = "Попробуйте полную версию Cryptomator в течение ограниченного времени бесплатно. Вы можете разблокировать эту пробную версию только один раз.";
112114
"purchase.beginFreeTrial.alert.title" = "Пробная версия разблокирована";
115+
"purchase.beginFreeTrial.alert.message" = "Теперь вы можете использовать полную версию Cryptomator в течение ограниченного времени. Пробная версия истекает %@. После этого ваши хранилища по-прежнему будут доступны в режиме только для чтения.";
116+
"purchase.purchaseFullVersion.button" = "Купить полную версию за %@";
117+
"purchase.purchaseFullVersion.footer" = "Оплатите один раз и разблокируйте бессрочный доступ к записи в хранилища.";
118+
"purchase.restorePurchase.button" = "Восстановить покупку";
119+
"purchase.restorePurchase.footer" = "Если вы уже купили полную версию Cryptomator, то можете восстановить покупку.";
120+
"purchase.restorePurchase.validTrialFound.alert.title" = "Продолжение опробования";
121+
"purchase.restorePurchase.validTrialFound.alert.message" = "Теперь вы можете использовать полную версию Cryptomator в течение ограниченного времени. Пробная версия истекает %@. После этого ваши хранилища по-прежнему будут доступны в режиме только для чтения.";
122+
"purchase.restorePurchase.fullVersionFound.alert.title" = "Успешно восстановлено";
123+
"purchase.restorePurchase.fullVersionNotFound.alert.title" = "Полной версии нет";
124+
"purchase.restorePurchase.fullVersionNotFound.alert.message" = "Не удалось найти ранее приобретённую полную версию, которая может быть восстановлена. Попробуйте другой вариант.";
113125
"purchase.retry.button" = "Повторить";
126+
"purchase.retry.footer" = "Не удалось загрузить доступные продукты.";
127+
"purchase.decideLater.button" = "Решу позже";
128+
"purchase.decideLater.footer" = "Вы можете разблокировать полную версию Cryptomator позже в настройках, а пока использовать режим только для чтения.";
129+
"purchase.unlockedFullVersion.message" = "Теперь у вас полная версия Cryptomator. Счастливого шифрования!";
130+
"purchase.unlockedFullVersion.title" = "Спасибо!";
114131

115132
"settings.title" = "Настройки";
116133
"settings.aboutCryptomator" = "О программе Cryptomator";
@@ -126,6 +143,17 @@
126143
"settings.unlockFullVersion" = "Разблокировать Полную Версию";
127144

128145
"snapshots.fileprovider.file1" = "/Учет.числа";
146+
"snapshots.fileprovider.file2" = "/Final Presentation.key";
147+
"snapshots.fileprovider.file3" = "/Product Trailer.mov";
148+
"snapshots.fileprovider.file4" = "/Proposal.docx";
149+
"snapshots.fileprovider.file5" = "/Report.pdf";
150+
"snapshots.fileprovider.folder3" = "/Секретный проект";
151+
"snapshots.fileprovider.folder2" = "/Счета";
152+
"snapshots.fileprovider.folder1" = "/Сертификаты";
153+
"snapshots.main.vault1" = "/Работа";
154+
"snapshots.main.vault2" = "/Семья";
155+
"snapshots.main.vault3" = "/Документы";
156+
"snapshots.main.vault4" = "/Поездка в Крым";
129157

130158
"unlockVault.button.unlock" = "Разблокировать";
131159
"unlockVault.button.unlockVia" = "Разблокировать через %@";
@@ -140,6 +168,16 @@
140168
"untrustedTLSCertificate.add" = "Доверять";
141169
"untrustedTLSCertificate.dismiss" = "Не доверять";
142170

171+
"upgrade.title" = "Обновление с версии 1.x";
172+
"upgrade.info" = "У вас есть право обновить старую версию Cryptomator, чтобы разблокировать полную версию. Спасибо за поддержку Cryptomator в прошлом!";
173+
"upgrade.paidUpgrade.button" = "Обновите за %@";
174+
"upgrade.paidUpgrade.footer" = "Это поможет продолжать разработку ПО с открытым исходным кодом и будет для нас большой поддержкой.";
175+
"upgrade.freeUpgrade.button" = "Обновить бесплатно";
176+
"upgrade.freeUpgrade.footer" = "Не волнуйтесь, вы также можете обновиться до полной версии бесплатно без каких-либо ограничений.";
177+
"upgrade.decideLater.footer" = "Вы можете обновить Cryptomator до полной версии позже в настройках, а пока использовать режим только для чтения.";
178+
"upgrade.notEligible.alert.title" = "Ошибка обновления";
179+
"upgrade.notEligible.alert.message" = "Не удалось обнаружить старую версию Cryptomator, установленную на вашем устройстве. Если вы купили её, пожалуйста, загрузите её снова в App Store и повторите попытку.";
180+
143181
"urlSession.error.httpError.401" = "Неверное имя пользователя и/или пароль.";
144182
"urlSession.error.httpError.403" = "Недостаточно прав на запрашиваемый ресурс.";
145183
"urlSession.error.httpError.404" = "Запрошенный ресурс не найден.";
@@ -182,3 +220,4 @@
182220
"webDAVAuthentication.httpConnection.alert.title" = "Использовать HTTPS?";
183221
"webDAVAuthentication.httpConnection.alert.message" = "Протокол HTTP небезопасен. Рекомендуем использовать HTTPS. Продолжайте с HTTP, только если вы понимаете риски.";
184222
"webDAVAuthentication.httpConnection.change" = "Изменить на HTTPS";
223+
"webDAVAuthentication.httpConnection.continue" = "Оставить HTTP";

SharedResources/zh-HK.lproj/Localizable.strings

Whitespace-only changes.

fastlane/changelog.txt

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
- Fixed upload errors in Google Drive (#134)
2-
- Fixed support of self-signed certificates and HTTP for WebDAV connections (#133)
1+
- Fixed security vulnerability by excluding cache from iCloud Backup (#139)
+1-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
- Upload-Fehler in Google Drive behoben (#134)
2-
- Unterstützung von selbstsignierten Zertifikaten und HTTP für WebDAV-Verbindungen behoben (#133)
1+
- Sicherheitslücke behoben, indem der Cache aus dem iCloud Backup ausgeschlossen wird (#139)
+1-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
- Fixed upload errors in Google Drive (#134)
2-
- Fixed support of self-signed certificates and HTTP for WebDAV connections (#133)
1+
- Fixed security vulnerability by excluding cache from iCloud Backup (#139)

0 commit comments

Comments
 (0)