ignore encrypted items during discovery when encryption is disabled
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Tue, 21 May 2024 16:06:37 +0000 (18:06 +0200)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Wed, 26 Jun 2024 12:49:45 +0000 (12:49 +0000)
when we know a folder should be encrypted but encryption client side app
is disabled, ignore any items in the encrypted folders

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/libsync/discovery.cpp
src/libsync/discoveryphase.cpp

index 2cd501a291aa3a520216106c53d79b14a037182e..858e1b207d9a23925ceca50b093267f3886ba6ca 100644 (file)
@@ -1661,6 +1661,13 @@ void ProcessDirectoryJob::processFileFinalize(
     const SyncFileItemPtr &item, PathTuple path, bool recurse,
     QueryMode recurseQueryLocal, QueryMode recurseQueryServer)
 {
+    if (item->isEncrypted() && !_discoveryData->_account->capabilities().clientSideEncryptionAvailable()) {
+        item->_instruction = CSyncEnums::CSYNC_INSTRUCTION_IGNORE;
+        item->_direction = SyncFileItem::None;
+        emit _discoveryData->itemDiscovered(item);
+        return;
+    }
+
     // Adjust target path for virtual-suffix files
     if (isVfsWithSuffix()) {
         if (item->_type == ItemTypeVirtualFile) {
index d094b9f423965b5c9b890fc16ce26438d34c503d..0041205c6ca62779788ab2361f327a29b3ada9dc 100644 (file)
@@ -621,10 +621,13 @@ void DiscoverySingleDirectoryJob::lsJobFinishedWithoutErrorSlot()
         emit finished(HttpError{ 0, _error });
         deleteLater();
         return;
-    } else if (isE2eEncrypted()) {
+    } else if (isE2eEncrypted() && _account->capabilities().clientSideEncryptionAvailable()) {
         emit etag(_firstEtag, QDateTime::fromString(QString::fromUtf8(_lsColJob->responseTimestamp()), Qt::RFC2822Date));
         fetchE2eMetadata();
         return;
+    } else if (isE2eEncrypted() && !_account->capabilities().clientSideEncryptionAvailable()) {
+        emit etag(_firstEtag, QDateTime::fromString(QString::fromUtf8(_lsColJob->responseTimestamp()), Qt::RFC2822Date));
+        emit finished(_results);
     }
     emit etag(_firstEtag, QDateTime::fromString(QString::fromUtf8(_lsColJob->responseTimestamp()), Qt::RFC2822Date));
     emit finished(_results);