|
@@ -27,37 +27,30 @@ import NextcloudKit
|
|
|
|
|
|
class tableE2eEncryptionLock: Object {
|
|
|
|
|
|
- @objc dynamic var account = ""
|
|
|
- @objc dynamic var date = NSDate()
|
|
|
- @objc dynamic var fileId = ""
|
|
|
- @objc dynamic var serverUrl = ""
|
|
|
- @objc dynamic var e2eToken = ""
|
|
|
-
|
|
|
- override static func primaryKey() -> String {
|
|
|
- return "fileId"
|
|
|
- }
|
|
|
+ @Persisted(primaryKey: true) var fileId = ""
|
|
|
+ @Persisted var account = ""
|
|
|
+ @Persisted var date = Date()
|
|
|
+ @Persisted var serverUrl = ""
|
|
|
+ @Persisted var e2eToken = ""
|
|
|
}
|
|
|
|
|
|
class tableE2eEncryption: Object {
|
|
|
|
|
|
- @objc dynamic var account = ""
|
|
|
- @objc dynamic var authenticationTag: String = ""
|
|
|
- @objc dynamic var blob = "files"
|
|
|
- @objc dynamic var fileName = ""
|
|
|
- @objc dynamic var fileNameIdentifier = ""
|
|
|
- @objc dynamic var fileNamePath = ""
|
|
|
- @objc dynamic var key = ""
|
|
|
- @objc dynamic var initializationVector = ""
|
|
|
- @objc dynamic var metadataKey = ""
|
|
|
- @objc dynamic var metadataKeyFiledrop = ""
|
|
|
- @objc dynamic var metadataKeyIndex: Int = 0
|
|
|
- @objc dynamic var metadataVersion: Double = 0
|
|
|
- @objc dynamic var mimeType = ""
|
|
|
- @objc dynamic var serverUrl = ""
|
|
|
-
|
|
|
- override static func primaryKey() -> String {
|
|
|
- return "fileNamePath"
|
|
|
- }
|
|
|
+ @Persisted(primaryKey: true) var accountOcIdServerUrlFileNameIdentifier = ""
|
|
|
+ @Persisted var account = ""
|
|
|
+ @Persisted var authenticationTag: String = ""
|
|
|
+ @Persisted var blob = "files"
|
|
|
+ @Persisted var fileName = ""
|
|
|
+ @Persisted var fileNameIdentifier = ""
|
|
|
+ @Persisted var key = ""
|
|
|
+ @Persisted var initializationVector = ""
|
|
|
+ @Persisted var metadataKey = ""
|
|
|
+ @Persisted var metadataKeyFiledrop = ""
|
|
|
+ @Persisted var metadataKeyIndex: Int = 0
|
|
|
+ @Persisted var metadataVersion: Double = 0
|
|
|
+ @Persisted var mimeType = ""
|
|
|
+ @Persisted var ocIdServerUrl: String = ""
|
|
|
+ @Persisted var serverUrl = ""
|
|
|
}
|
|
|
|
|
|
// MARK: -
|
|
@@ -76,19 +69,19 @@ class tableE2eMetadata: Object {
|
|
|
|
|
|
class tableE2eMetadataV2: Object {
|
|
|
|
|
|
- @Persisted(primaryKey: true) var accountOcId = ""
|
|
|
+ @Persisted(primaryKey: true) var accountOcIdServerUrl = ""
|
|
|
@Persisted var counter: Int = 0
|
|
|
@Persisted var deleted: Bool = false
|
|
|
@Persisted var folders = Map<String, String>()
|
|
|
@Persisted var keyChecksums = List<String>()
|
|
|
- @Persisted var ocId: String = ""
|
|
|
+ @Persisted var ocIdServerUrl: String = ""
|
|
|
@Persisted var serverUrl: String = ""
|
|
|
@Persisted var version: String = "2.0"
|
|
|
}
|
|
|
|
|
|
class tableE2eUsersV2: Object {
|
|
|
|
|
|
- @Persisted(primaryKey: true) var accountOcIdUserId = ""
|
|
|
+ @Persisted(primaryKey: true) var accountOcIdServerUrlUserId = ""
|
|
|
@Persisted var account = ""
|
|
|
@Persisted var certificate = ""
|
|
|
@Persisted var encryptedFiledropKey: String?
|
|
@@ -97,7 +90,7 @@ class tableE2eUsersV2: Object {
|
|
|
@Persisted var decryptedMetadataKey: Data?
|
|
|
@Persisted var filedropKey: String?
|
|
|
@Persisted var metadataKey: String?
|
|
|
- @Persisted var ocId: String = ""
|
|
|
+ @Persisted var ocIdServerUrl: String = ""
|
|
|
@Persisted var serverUrl: String = ""
|
|
|
@Persisted var userId = ""
|
|
|
}
|
|
@@ -163,17 +156,15 @@ extension NCManageDatabase {
|
|
|
|
|
|
@objc func renameFileE2eEncryption(serverUrl: String, fileNameIdentifier: String, newFileName: String, newFileNamePath: String) {
|
|
|
|
|
|
- guard let activeAccount = self.getActiveAccount() else { return }
|
|
|
+ guard let account = self.getActiveAccount() else { return }
|
|
|
|
|
|
do {
|
|
|
let realm = try Realm()
|
|
|
+ realm.refresh()
|
|
|
try realm.write {
|
|
|
- guard let result = realm.objects(tableE2eEncryption.self).filter("account == %@ AND serverUrl == %@ AND fileNameIdentifier == %@", activeAccount.account, serverUrl, fileNameIdentifier).first else { return }
|
|
|
- let object = tableE2eEncryption.init(value: result)
|
|
|
- realm.delete(result)
|
|
|
- object.fileName = newFileName
|
|
|
- object.fileNamePath = newFileNamePath
|
|
|
- realm.add(object)
|
|
|
+ guard let result = realm.objects(tableE2eEncryption.self).filter("account == %@ AND serverUrl == %@ AND fileNameIdentifier == %@", account, serverUrl, fileNameIdentifier).first else { return }
|
|
|
+ result.fileName = newFileName
|
|
|
+ realm.add(result, update: .all)
|
|
|
}
|
|
|
} catch let error as NSError {
|
|
|
NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")
|
|
@@ -285,7 +276,7 @@ extension NCManageDatabase {
|
|
|
|
|
|
func addE2EUsersV2(account: String,
|
|
|
serverUrl: String,
|
|
|
- ocId: String,
|
|
|
+ ocIdServerUrl: String,
|
|
|
userId: String,
|
|
|
certificate: String,
|
|
|
encryptedFiledropKey: String?,
|
|
@@ -299,7 +290,7 @@ extension NCManageDatabase {
|
|
|
let realm = try Realm()
|
|
|
try realm.write {
|
|
|
let object = tableE2eUsersV2()
|
|
|
- object.accountOcIdUserId = account + ocId + userId
|
|
|
+ object.accountOcIdServerUrlUserId = account + ocIdServerUrl + userId
|
|
|
object.account = account
|
|
|
object.certificate = certificate
|
|
|
object.encryptedFiledropKey = encryptedFiledropKey
|
|
@@ -308,7 +299,7 @@ extension NCManageDatabase {
|
|
|
object.decryptedMetadataKey = decryptedMetadataKey
|
|
|
object.filedropKey = filedropKey
|
|
|
object.metadataKey = metadataKey
|
|
|
- object.ocId = ocId
|
|
|
+ object.ocIdServerUrl = ocIdServerUrl
|
|
|
object.serverUrl = serverUrl
|
|
|
object.userId = userId
|
|
|
realm.add(object, update: .all)
|
|
@@ -318,12 +309,12 @@ extension NCManageDatabase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- func getE2EUsersV2(account: String, ocId: String) -> Results<tableE2eUsersV2>? {
|
|
|
+ func getE2EUsersV2(account: String, ocIdServerUrl: String) -> Results<tableE2eUsersV2>? {
|
|
|
|
|
|
do {
|
|
|
let realm = try Realm()
|
|
|
realm.refresh()
|
|
|
- return realm.objects(tableE2eUsersV2.self).filter("account == %@ AND ocId == %@", account, ocId)
|
|
|
+ return realm.objects(tableE2eUsersV2.self).filter("account == %@ AND ocIdServerUrl == %@", account, ocIdServerUrl)
|
|
|
} catch let error as NSError {
|
|
|
NextcloudKit.shared.nkCommonInstance.writeLog("Could not access database: \(error)")
|
|
|
}
|
|
@@ -331,12 +322,12 @@ extension NCManageDatabase {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
- func getE2EUsersV2(account: String, ocId: String, userId: String) -> tableE2eUsersV2? {
|
|
|
+ func getE2EUsersV2(account: String, ocIdServerUrl: String, userId: String) -> tableE2eUsersV2? {
|
|
|
|
|
|
do {
|
|
|
let realm = try Realm()
|
|
|
realm.refresh()
|
|
|
- return realm.objects(tableE2eUsersV2.self).filter("accountOcIdUserId == %@", account + ocId + userId).first
|
|
|
+ return realm.objects(tableE2eUsersV2.self).filter("accountOcIdServerUrlUserId == %@", account + ocIdServerUrl + userId).first
|
|
|
} catch let error as NSError {
|
|
|
NextcloudKit.shared.nkCommonInstance.writeLog("Could not access database: \(error)")
|
|
|
}
|
|
@@ -344,12 +335,12 @@ extension NCManageDatabase {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
- func deleteE2EUsersV2(account: String, ocId: String) {
|
|
|
+ func deleteE2EUsersV2(account: String, ocIdServerUrl: String) {
|
|
|
|
|
|
do {
|
|
|
let realm = try Realm()
|
|
|
try realm.write {
|
|
|
- let results = realm.objects(tableE2eEncryption.self).filter("account == %@ AND ocId == %@", account, ocId)
|
|
|
+ let results = realm.objects(tableE2eEncryption.self).filter("account == %@ AND ocIdServerUrl == %@", account, ocIdServerUrl)
|
|
|
realm.delete(results)
|
|
|
}
|
|
|
} catch let error {
|
|
@@ -357,12 +348,12 @@ extension NCManageDatabase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- func getE2eMetadataV2(account: String, ocId: String) -> tableE2eMetadataV2? {
|
|
|
+ func getE2eMetadataV2(account: String, ocIdServerUrl: String) -> tableE2eMetadataV2? {
|
|
|
|
|
|
do {
|
|
|
let realm = try Realm()
|
|
|
realm.refresh()
|
|
|
- return realm.objects(tableE2eMetadataV2.self).filter("accountOcId == %@", account + ocId).first
|
|
|
+ return realm.objects(tableE2eMetadataV2.self).filter("accountOcIdServerUrl == %@", account + ocIdServerUrl).first
|
|
|
} catch let error as NSError {
|
|
|
NextcloudKit.shared.nkCommonInstance.writeLog("Could not access database: \(error)")
|
|
|
}
|
|
@@ -370,23 +361,23 @@ extension NCManageDatabase {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
- func incrementCounterE2eMetadataV2(account: String, serverUrl: String, ocId: String, version: String) -> tableE2eMetadataV2? {
|
|
|
+ func incrementCounterE2eMetadataV2(account: String, serverUrl: String, ocIdServerUrl: String, version: String) -> tableE2eMetadataV2? {
|
|
|
|
|
|
do {
|
|
|
let realm = try Realm()
|
|
|
try realm.write {
|
|
|
- if let result = realm.objects(tableE2eMetadataV2.self).filter("accountOcId == %@", account + ocId).first {
|
|
|
+ if let result = realm.objects(tableE2eMetadataV2.self).filter("accountOcIdServerUrl == %@", account + ocIdServerUrl).first {
|
|
|
result.counter += 1
|
|
|
} else {
|
|
|
let object = tableE2eMetadataV2()
|
|
|
- object.accountOcId = account + ocId
|
|
|
+ object.accountOcIdServerUrl = account + ocIdServerUrl
|
|
|
object.serverUrl = serverUrl
|
|
|
object.counter = 1
|
|
|
object.version = version
|
|
|
realm.add(object, update: .all)
|
|
|
}
|
|
|
}
|
|
|
- return realm.objects(tableE2eMetadataV2.self).filter("accountOcId == %@", account + ocId).first
|
|
|
+ return realm.objects(tableE2eMetadataV2.self).filter("accountOcIdServerUrl == %@", account + ocIdServerUrl).first
|
|
|
} catch let error {
|
|
|
NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")
|
|
|
}
|
|
@@ -394,13 +385,13 @@ extension NCManageDatabase {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
- func addE2eMetadataV2(account: String, serverUrl: String, ocId: String, keyChecksums: [String]?, deleted: Bool, counter: Int, folders: [String: String]?, version: String) {
|
|
|
+ func addE2eMetadataV2(account: String, serverUrl: String, ocIdServerUrl: String, keyChecksums: [String]?, deleted: Bool, counter: Int, folders: [String: String]?, version: String) {
|
|
|
|
|
|
do {
|
|
|
let realm = try Realm()
|
|
|
try realm.write {
|
|
|
let object = tableE2eMetadataV2()
|
|
|
- object.accountOcId = account + ocId
|
|
|
+ object.accountOcIdServerUrl = account + ocIdServerUrl
|
|
|
if let keyChecksums {
|
|
|
object.keyChecksums.append(objectsIn: keyChecksums)
|
|
|
}
|
|
@@ -412,7 +403,7 @@ extension NCManageDatabase {
|
|
|
foldersDictionary[folder.key] = folder.value
|
|
|
}
|
|
|
}
|
|
|
- object.ocId = ocId
|
|
|
+ object.ocIdServerUrl = ocIdServerUrl
|
|
|
object.serverUrl = serverUrl
|
|
|
object.version = version
|
|
|
realm.add(object, update: .all)
|