Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

E2ee root folder remove issue #2799

Merged
merged 1 commit into from
Jan 11, 2021
Merged

Conversation

allexzander
Copy link
Contributor

@allexzander allexzander commented Jan 6, 2021

Implement nested items removal when removing root encrypted folder.

Signed-off-by: allexzander [email protected]

@allexzander allexzander force-pushed the e2ee-root-folder-remove-issue branch 2 times, most recently from 591afc3 to 798e094 Compare January 6, 2021 14:21
src/common/syncjournaldb.cpp Outdated Show resolved Hide resolved
src/libsync/clientsideencryptionjobs.cpp Outdated Show resolved Hide resolved
src/libsync/clientsideencryptionjobs.h Outdated Show resolved Hide resolved
src/libsync/clientsideencryptionjobs.h Outdated Show resolved Hide resolved
src/libsync/deletejob.cpp Show resolved Hide resolved
src/libsync/propagateremotedeleteencrypted.cpp Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencrypted.cpp Outdated Show resolved Hide resolved
src/common/syncjournaldb.h Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencrypted.cpp Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencrypted.h Outdated Show resolved Hide resolved
@allexzander allexzander closed this Jan 7, 2021
@allexzander allexzander reopened this Jan 7, 2021
@allexzander allexzander force-pushed the e2ee-root-folder-remove-issue branch 4 times, most recently from 064f7ab to dfb670e Compare January 11, 2021 07:44
@allexzander allexzander marked this pull request as ready for review January 11, 2021 07:45
src/libsync/propagateremotedelete.cpp Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencrypted.cpp Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencrypted.h Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencrypted.h Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencryptedrootfolder.cpp Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencryptedrootfolder.cpp Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencryptedrootfolder.cpp Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencryptedrootfolder.h Outdated Show resolved Hide resolved
Copy link
Member

@er-vin er-vin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple of nitpicks, then clean up the history as you see fit and we're good to go I'd say.

src/libsync/abstractpropagateremotedeleteencrypted.cpp Outdated Show resolved Hide resolved
src/libsync/clientsideencryptionjobs.h Outdated Show resolved Hide resolved
src/libsync/propagateremotedeleteencryptedrootfolder.cpp Outdated Show resolved Hide resolved
@allexzander allexzander force-pushed the e2ee-root-folder-remove-issue branch from f2b9eb3 to c1ff803 Compare January 11, 2021 15:15
@allexzander allexzander requested a review from er-vin January 11, 2021 15:16
Copy link
Member

@er-vin er-vin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright, squash it all and get it in I'd say.

@allexzander allexzander force-pushed the e2ee-root-folder-remove-issue branch from c1ff803 to 4ed7fea Compare January 11, 2021 19:13
@allexzander allexzander linked an issue Jan 11, 2021 that may be closed by this pull request
@nextcloud-desktop-bot
Copy link

AppImage file: Nextcloud-PR-2799-4ed7feab2bce2c0c57912264705cbc762e9cc01c-x86_64.AppImage

To test this change/fix you can simply download above AppImage file and test it.

Please make sure to quit your existing Nextcloud app and backup your data.

@allexzander allexzander merged commit 7dc19b9 into master Jan 11, 2021
@allexzander allexzander deleted the e2ee-root-folder-remove-issue branch January 11, 2021 19:20
@allexzander allexzander restored the e2ee-root-folder-remove-issue branch January 14, 2021 07:20
@gerion0
Copy link

gerion0 commented Jan 28, 2021

Just a question: Is e2ee folder renaming/moving also possible with this?

Workflow:

  1. Create e2ee folder foo. Move data in it.
  2. Rename it to bar.
  3. Create e2ee folder 'foo2'. Move data in it.
  4. Move it to somewhere/.

@allexzander
Copy link
Contributor Author

@gerion0 Yes. These scenarios are now possible.

@tripougnif
Copy link

tripougnif commented Feb 5, 2021

With the appimage (v 3.1.50), I still can't delete folders that are not at the root. For example, if my encrypted folder is at /subfolder/encrypted_folder, the client sends a PROPFIND for /encrypted_folder to which the server replies with a 404...

Real example from the debug log:

2021-02-05 15:54:11:128 [ info nextcloud.gui.folderwatcher ]:   Detected changes in paths: QSet("/home/alain/Documents/Nuage/Secrets")
2021-02-05 15:54:11:129 [ warning nextcloud.sync.filesystem ]:  Could not get modification time for "/home/alain/Documents/Nuage/Secrets" with csync, using QFileIn
fo
2021-02-05 15:54:11:129 [ info nextcloud.gui.socketapi ]:       Sending SocketAPI message --> "STATUS:SYNC:/home/alain/Documents/Nuage/Secrets" to QLocalSocket(0x7
f56dc009e20)
2021-02-05 15:54:11:129 [ debug nextcloud.gui.folderwatcher ]   [ OCC::FolderWatcherPrivate::removeFoldersBelow ]:      Removed watch for "/home/alain/Documents/Nu
age/Secrets"
2021-02-05 15:54:13:455 [ info sync.discovery ]:        Processing "Secrets" | valid: true/false/true | mtime: 1612558418/0/1612558441 | size: 0/0/0 | etag: "601db
052c1115"//"601db06961874" | checksum: ""//"" | perm: 0x55699c927318//0x55699cf5d298 | fileid: "00078533oczpg9ec8302"//"00078533oczpg9ec8302" | inode: 7635242/0/ |
 type: CSyncEnums::ItemTypeDirectory/CSyncEnums::ItemTypeSkip/CSyncEnums::ItemTypeDirectory | e2ee: true/true | e2eeMangledName: ""/""
2021-02-05 15:54:13:455 [ info sync.discovery ]:        Discovered "Secrets" CSyncEnums::CSYNC_INSTRUCTION_REMOVE OCC::SyncFileItem::Up CSyncEnums::ItemTypeDirectory
2021-02-05 15:54:13:456 [ info sync.discovery ]:        STARTING "Secrets" OCC::ProcessDirectoryJob::NormalQuery "Secrets" OCC::ProcessDirectoryJob::ParentDontExist
2021-02-05 15:54:13:456 [ info nextcloud.sync.accessmanager ]:  6 "PROPFIND" "https://nuage.zenfolie.org/remote.php/dav/files/alain/Documents/Nuage/Secrets" has X-Request-ID "042a82bc-e009-4326-be17-2a495a9fe181"
2021-02-05 15:54:13:457 [ debug nextcloud.sync.cookiejar ]      [ OCC::CookieJar::cookiesForUrl ]:      QUrl("https://nuage.zenfolie.org/remote.php/dav/files/alain/Documents/Nuage/Secrets") requests: (QNetworkCookie("__Host-nc_sameSiteCookielax=true; secure; HttpOnly; expires=Fri, 31-Dec-2100 23:59:59 GMT; domain=nuage.zenfolie.org; path=/"), QNetworkCookie("__Host-nc_sameSiteCookiestrict=true; secure; HttpOnly; expires=Fri, 31-Dec-2100 23:59:59 GMT; domain=nuage.zenfolie.org; path=/"), QNetworkCookie("oc_sessionPassphrase=HnRb%2F3CE2sYFlb5nbtSVLgpATjTCLb2EfA%2BwS79sT%2F0PA0KIMmaEtOmZtzKLDJdcRtdy4uD%2BVPVuL3vGdnrl80b%2FffAoc3twYWp1o8M5mkFPRz8Ps5bm5nMaTAXXHgex; secure; HttpOnly; domain=nuage.zenfolie.org; path=/"), QNetworkCookie("oczpg9ec8302=sk14632b60dqro1c2k86en190b; secure; HttpOnly; domain=nuage.zenfolie.org; path=/"))
2021-02-05 15:54:13:457 [ info nextcloud.sync.networkjob ]:     OCC::LsColJob created for "https://nuage.zenfolie.org" + "/Documents/Nuage/Secrets" "OCC::DiscoverySingleDirectoryJob"
2021-02-05 15:54:13:611 [ info nextcloud.sync.networkjob.lscol ]:       LSCOL of QUrl("https://nuage.zenfolie.org/remote.php/dav/files/alain/Documents/Nuage/Secrets") FINISHED WITH STATUS "OK"
2021-02-05 15:54:13:612 [ debug nextcloud.sync.networkjob ]     [ OCC::AbstractNetworkJob::slotFinished ]:      Network job OCC::LsColJob finished for "/Documents/Nuage/Secrets"
2021-02-05 15:54:14:044 [ info sync.discovery ]:        Processing "Secrets/rénos salle de bain.ods" | valid: true/false/true | mtime: 1604876472/0/1604876472 | size: 12092/0/12108 | etag: "601db068b3f52"//"601db068b3f52" | checksum: "SHA1:c26ef1562996df12f6a9d9a227ceb29baaa4a646"//"SHA1:c26ef1562996df12f6a9d9a227ceb29baaa4a646</checksum>" | perm: 0x7f5713dc4158//0x55699c9c9318 | fileid: "00078538oczpg9ec8302"//"00078538oczpg9ec8302" | inode: 7635243/0/ | type: CSyncEnums::ItemTypeFile/CSyncEnums::ItemTypeSkip/CSyncEnums::ItemTypeFile | e2ee: true/true | e2eeMangledName: "Secrets/24de59ee88c349a784f8e6b9821341c9"/"Documents/Nuage/Secrets/24de59ee88c349a784f8e6b9821341c9"
2021-02-05 15:54:14:044 [ info sync.discovery ]:        Discovered "Secrets/rénos salle de bain.ods" CSyncEnums::CSYNC_INSTRUCTION_REMOVE OCC::SyncFileItem::Up CSyncEnums::ItemTypeFile
2021-02-05 15:54:14:044 [ debug nextcloud.sync.database.sql ]   [ OCC::SqlQuery::bindValue ]:   SQL bind 1 "Secrets/rénos salle de bain.ods"
2021-02-05 15:54:14:044 [ debug nextcloud.sync.database.sql ]   [ OCC::SqlQuery::bindValue ]:   SQL bind 1 "Secrets"
2021-02-05 15:54:14:045 [ debug nextcloud.sync.statustracker ]  [ OCC::SyncFileStatusTracker::slotAboutToPropagate ]:   Investigating "Secrets" OCC::SyncFileItem::NoStatus CSyncEnums::CSYNC_INSTRUCTION_REMOVE
2021-02-05 15:54:14:045 [ info nextcloud.gui.socketapi ]:       Sending SocketAPI message --> "STATUS:SYNC:/home/alain/Documents/Nuage/Secrets" to QLocalSocket(0x7f56dc009e20)
2021-02-05 15:54:14:045 [ debug nextcloud.sync.statustracker ]  [ OCC::SyncFileStatusTracker::slotAboutToPropagate ]:   Investigating "Secrets/rénos salle de bain.ods" OCC::SyncFileItem::NoStatus CSyncEnums::CSYNC_INSTRUCTION_REMOVE
2021-02-05 15:54:14:054 [ info nextcloud.sync.propagator ]:     Starting CSyncEnums::CSYNC_INSTRUCTION_REMOVE propagation of "Secrets" by OCC::PropagateRemoteDelete(0x7f56c808e5a0)
2021-02-05 15:54:14:054 [ info nextcloud.sync.accessmanager ]:  6 "PROPFIND" "https://nuage.zenfolie.org/remote.php/dav/files/alain/Secrets" has X-Request-ID "f85dc4bd-62cf-4521-ad30-2fcd3616d509"
2021-02-05 15:54:14:054 [ debug nextcloud.sync.cookiejar ]      [ OCC::CookieJar::cookiesForUrl ]:      QUrl("https://nuage.zenfolie.org/remote.php/dav/files/alain/Secrets") requests: (QNetworkCookie("__Host-nc_sameSiteCookielax=true; secure; HttpOnly; expires=Fri, 31-Dec-2100 23:59:59 GMT; domain=nuage.zenfolie.org; path=/"), QNetworkCookie("__Host-nc_sameSiteCookiestrict=true; secure; HttpOnly; expires=Fri, 31-Dec-2100 23:59:59 GMT; domain=nuage.zenfolie.org; path=/"), QNetworkCookie("oc_sessionPassphrase=HnRb%2F3CE2sYFlb5nbtSVLgpATjTCLb2EfA%2BwS79sT%2F0PA0KIMmaEtOmZtzKLDJdcRtdy4uD%2BVPVuL3vGdnrl80b%2FffAoc3twYWp1o8M5mkFPRz8Ps5bm5nMaTAXXHgex; secure; HttpOnly; domain=nuage.zenfolie.org; path=/"), QNetworkCookie("oczpg9ec8302=sk14632b60dqro1c2k86en190b; secure; HttpOnly; domain=nuage.zenfolie.org; path=/"))
2021-02-05 15:54:14:055 [ info nextcloud.sync.networkjob ]:     OCC::LsColJob created for "https://nuage.zenfolie.org" + "Secrets" "OCC::PropagateRemoteDeleteEncryptedRootFolder"
2021-02-05 15:54:14:207 [ warning nextcloud.sync.networkjob ]:  QNetworkReply::ContentNotFoundError "Server replied \"404 Not Found\" to \"PROPFIND https://nuage.zenfolie.org/remote.php/dav/files/alain/Secrets\"" QVariant(int, 404)
2021-02-05 15:54:14:207 [ warning nextcloud.sync.credentials.webflow ]: "Error transferring https://nuage.zenfolie.org/remote.php/dav/files/alain/Secrets - server replied: Not Found"
2021-02-05 15:54:14:207 [ info nextcloud.sync.networkjob.lscol ]:       LSCOL of QUrl("https://nuage.zenfolie.org/remote.php/dav/files/alain/Secrets") FINISHED WITH STATUS "ContentNotFoundError Server replied \"404 Not Found\" to \"PROPFIND https://nuage.zenfolie.org/remote.php/dav/files/alain/Secrets\""

I haven't tried with encrypted folder created at the root...

@er-vin
Copy link
Member

er-vin commented Feb 6, 2021

With the appimage (v 3.1.50), I still can't delete folders that are not at the root. For example, if my encrypted folder is at /subfolder/encrypted_folder, the client sends a PROPFIND for /encrypted_folder to which the server replies with a 404...

Which appimage version is this exactly? Because I produced another fix which should have addressed this a couple of days ago.

@tripougnif
Copy link

tripougnif commented Feb 6, 2021

AppImage file: Nextcloud-PR-2799-4ed7feab2bce2c0c57912264705cbc762e9cc01c-x86_64.AppImage

To test this change/fix you can simply download above AppImage file and test it.

Please make sure to quit your existing Nextcloud app and backup your data.

That one.

I guess I should try the daily build...

@allexzander
Copy link
Contributor Author

AppImage file: Nextcloud-PR-2799-4ed7feab2bce2c0c57912264705cbc762e9cc01c-x86_64.AppImage
To test this change/fix you can simply download above AppImage file and test it.
Please make sure to quit your existing Nextcloud app and backup your data.

That one.

I guess I should try the daily build...

@tripougnif

You can also try this is the one with the latest fix from @er-vin #2892.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Deleting e2ee folder failed?
5 participants