Browse Source

[CSE] Display menu for encrytp / decryot folders

If the server supports client syde encryption, display
a menu on right click that should display encrypt and decrypt.
ideally it would show the encrypt if the folder is decrypted, and
decrypt if the folder is encrypted but currently there's no way
for the client to know that.
Tomaz Canabrava 8 years ago
parent
commit
9318c487b9

+ 26 - 0
src/gui/accountsettings.cpp

@@ -275,6 +275,23 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
             ac->setEnabled(false);
         }
 
+        qCInfo(lcAccountSettings) << "Display Client Side Encryption Options"
+            << accountsState()->account()->hasClientSideEncryption();
+
+            if (accountsState()->account()->hasClientSideEncryption()) {
+            ac = menu->addAction(tr("Encrypt"));
+            connect(ac, &QAction::triggered, [this, &index](bool triggered) {
+                Q_UNUSED(triggered);
+
+            });
+
+            ac = menu->addAction(tr("Decrypt"));
+            connect(ac, &QAction::triggered, [this, &index](bool triggered) {
+                Q_UNUSED(triggered);
+
+            });
+
+        }
         menu->exec(QCursor::pos());
 
         return;
@@ -701,6 +718,15 @@ void AccountSettings::slotAccountStateChanged()
             _toggleSignInOutAction->setText(tr("Log out"));
         }
     }
+
+    if (state == AccountState::State::Connected) {
+        /* TODO: We should probably do something better here.
+         * Verify if the user has a private key already uploaded to the server,
+         * if it has, do not offer to create one.
+         */
+        qCInfo(lcAccountSettings) << "Accout" << accountsState()->account()->displayName()
+            << "Client Side Encryption" << accountsState()->account()->hasClientSideEncryption();
+    }
 }
 
 void AccountSettings::slotLinkActivated(const QString &link)

+ 2 - 0
src/gui/folder.h

@@ -62,6 +62,8 @@ public:
     bool paused;
     /// whether the folder syncs hidden files
     bool ignoreHiddenFiles;
+    /// the folder has client side encryption
+    bool isClientSideEncrypted;
 
     /// Saves the folder definition, creating a new settings group.
     static void save(QSettings &settings, const FolderDefinition &folder);

+ 9 - 0
src/libsync/account.cpp

@@ -484,5 +484,14 @@ void Account::setNonShib(bool nonShib)
     }
 }
 
+bool Account::hasClientSideEncryption() const
+{
+    return _hasClientSideEncryption;
+}
+
+void Account::setHasClientSideEncryption(bool cse)
+{
+    _hasClientSideEncryption = cse;
+}
 
 } // namespace OCC

+ 4 - 0
src/libsync/account.h

@@ -225,6 +225,9 @@ public:
     /// Called by network jobs on credential errors, emits invalidCredentials()
     void handleInvalidCredentials();
 
+    bool hasClientSideEncryption() const;
+    void setHasClientSideEncryption(bool cse);
+
 public slots:
     /// Used when forgetting credentials
     void clearQNAMCache();
@@ -275,6 +278,7 @@ private:
     QSharedPointer<QNetworkAccessManager> _am;
     QScopedPointer<AbstractCredentials> _credentials;
     bool _http2Supported = false;
+    bool _hasClientSideEncryption;
 
     /// Certificates that were explicitly rejected by the user
     QList<QSslCertificate> _rejectedCertificates;

+ 1 - 1
src/libsync/connectionvalidator.cpp

@@ -263,7 +263,7 @@ void ConnectionValidator::checkClientSideEncryption()
             }
         }
 
-        // _account->setHasClientSideEncryption(hasClientSideEncryption);
+        _account->setHasClientSideEncryption(hasClientSideEncryption);
     });
     job->start();
 }