Use httpd/unix-directory mimetype for E2EE folders
authorKevin Ottens <kevin.ottens@nextcloud.com>
Mon, 31 Aug 2020 10:05:05 +0000 (12:05 +0200)
committerKevin Ottens (Rebase PR Action) <er-vin@users.noreply.github.com>
Mon, 31 Aug 2020 10:08:48 +0000 (10:08 +0000)
We don't do much with that mimetype on our end, but other clients
somehow don't expect inode/directory to let's lie. ;-)

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
src/libsync/clientsideencryption.cpp
src/libsync/propagateuploadencrypted.cpp

index 2ddb5f1f2987dca5cec026c976a3df06e5aba096..2bcbffcca8c4411dd6996244b0736745016bea23 100644 (file)
@@ -1361,6 +1361,11 @@ void FolderMetadata::setupExistingMetadata(const QByteArray& metadata)
         file.mimetype = decryptedFileObj["mimetype"].toString().toLocal8Bit();
         file.fileVersion = decryptedFileObj["version"].toInt();
 
+        // In case we wrongly stored "inode/directory" we try to recover from it
+        if (file.mimetype == QByteArrayLiteral("inode/directory")) {
+            file.mimetype = QByteArrayLiteral("httpd/unix-directory");
+        }
+
         _files.push_back(file);
     }
 }
index 6fe85c4cb35c6b9e16d5ab127ebfc1503c142404..cccf67a1843cc7dda4ea8b9b44694aabeac8683d 100644 (file)
@@ -175,6 +175,12 @@ void PropagateUploadEncrypted::slotFolderEncryptedMetadataReceived(const QJsonDo
 
       QMimeDatabase mdb;
       encryptedFile.mimetype = mdb.mimeTypeForFile(info).name().toLocal8Bit();
+
+      // Other clients expect "httpd/unix-directory" instead of "inode/directory"
+      // Doesn't matter much for us since we don't do much about that mimetype anyway
+      if (encryptedFile.mimetype == QByteArrayLiteral("inode/directory")) {
+          encryptedFile.mimetype = QByteArrayLiteral("httpd/unix-directory");
+      }
   }
 
   _item->_encryptedFileName = _remoteParentPath + QLatin1Char('/') + encryptedFile.encryptedFilename;