diff --git a/plugins/Git/git.cpp b/plugins/Git/git.cpp index 83f0836..ee069cc 100644 --- a/plugins/Git/git.cpp +++ b/plugins/Git/git.cpp @@ -9,7 +9,7 @@ #include "utils.h" -QDir Git::clone_setup() +QDir Git::cloneSetup() { QDir tmp_dir(QStandardPaths::writableLocation( QStandardPaths::CacheLocation).append("/clone")); @@ -20,12 +20,12 @@ QDir Git::clone_setup() } -bool Git::clone_tear_down(QDir tmp_dir) +bool Git::cloneTearDown(QDir tmp_dir) { return tmp_dir.removeRecursively(); } -bool Git::move_to_destination(QString path, QDir tmp_dir) +bool Git::moveToDestination(QString path, QDir tmp_dir) { qDebug() << "Removing password_store " << path; QDir destination_dir(path); @@ -37,42 +37,40 @@ bool Git::move_to_destination(QString path, QDir tmp_dir) return dir.rename(tmp_dir.absolutePath(), destination_dir.absolutePath()); // TODO Better error handling } - - bool Git::clone(QString url, QString path, mode_type mode) //, GitPlugin::RepoType type, QString pass) { auto v = overload { [](const Unset & x) { return "Unset"; }, - [](const HTTP & x) { return "Unset"; }, + [](const HTTP & x) { return "HTTP"; }, [](const HTTPAuth & x) { return "HTTPAuth"; }, [](const SSHAuth & x) { return "SSHAuth"; }, [](const SSHKey & x) { return "SSHKey"; }, }; qInfo() << "Cloning " << url << " to destination " << path << " using " << std::visit(v, mode); - LibGit::instance()->set_mode(mode); - auto tmp_dir = this->clone_setup(); + LibGit::instance()->setMode(mode); + auto tmp_dir = this->cloneSetup(); qDebug() << "Cloning " << url << " to tmp dir " << tmp_dir.absolutePath(); auto ret = LibGit::instance()->clone(url, tmp_dir.absolutePath()); // TODO Better error handling if (ret) { - this->move_to_destination(path, tmp_dir); + this->moveToDestination(path, tmp_dir); } - this->clone_tear_down(tmp_dir); - LibGit::instance()->set_mode(Unset()); + this->cloneTearDown(tmp_dir); + LibGit::instance()->setMode(Unset()); return ret ; } -bool Git::clone_http(QString url, QString path) //, GitPlugin::RepoType type, QString pass) +bool Git::cloneHttp(QString url, QString path) { HTTP mode = {}; return this->clone(url, path, mode); } -bool Git::clone_http_pass(QString url, QString path, QString pass) +bool Git::cloneHttpPass(QString url, QString path, QString pass) { HTTPAuth mode = { pass }; return this->clone(url, path, mode); diff --git a/plugins/Git/git.h b/plugins/Git/git.h index 260f5b5..61f8370 100644 --- a/plugins/Git/git.h +++ b/plugins/Git/git.h @@ -7,14 +7,17 @@ #include "libgit.h" +/** + * @brief The Git class is class that provide Git functionnly to clone and update a repo. + */ class Git : public QObject { Q_OBJECT private: - QDir clone_setup(); - bool move_to_destination(QString path, QDir tmp_dir); - bool clone_tear_down(QDir tmp_dir); + QDir cloneSetup(); + bool moveToDestination(QString path, QDir tmp_dir); + bool cloneTearDown(QDir tmp_dir); bool clone(QString url, QString path, mode_type mode); @@ -22,8 +25,8 @@ public: Git() = default; ~Git() override = default; - Q_INVOKABLE bool clone_http(QString url, QString path); - Q_INVOKABLE bool clone_http_pass(QString url, QString path, QString pass); + Q_INVOKABLE bool cloneHttp(QString url, QString path); + Q_INVOKABLE bool cloneHttpPass(QString url, QString path, QString pass); // Q_INVOKABLE bool clone_ssh_pass(QString url, QString path, QString pass); // Q_INVOKABLE bool clone_ssh_key(QString url, QString path, QString pub_key, QString priv_key, QString passphrase); // Q_INVOKABLE bool update(QUrl url, QString path); diff --git a/plugins/Git/libgit.cpp b/plugins/Git/libgit.cpp index f2dff81..9cb13bb 100644 --- a/plugins/Git/libgit.cpp +++ b/plugins/Git/libgit.cpp @@ -21,12 +21,12 @@ LibGit::~LibGit() git_libgit2_shutdown(); } -void LibGit::set_mode(mode_type type) +void LibGit::setMode(mode_type type) { this->mode = type; } -int LibGit::credentials_cb(git_cred **out, const char *url, const char *username_from_url, +int LibGit::credentialsCB(git_cred **out, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload) { // TODO : More precise Error Handling for UI @@ -73,7 +73,7 @@ bool LibGit::clone(QString url, QString path) git_repository *repo = NULL; git_clone_options opts = GIT_CLONE_OPTIONS_INIT; - opts.fetch_opts.callbacks.credentials = *credentials_cb; + opts.fetch_opts.callbacks.credentials = *credentialsCB; int ret = git_clone(&repo, url.toLocal8Bit().data(), path.toLocal8Bit().data(), &opts); if (ret != 0) { diff --git a/plugins/Git/libgit.h b/plugins/Git/libgit.h index 8a78788..815b3b7 100644 --- a/plugins/Git/libgit.h +++ b/plugins/Git/libgit.h @@ -26,7 +26,7 @@ private: mode_type mode; - static int credentials_cb(git_cred **out, const char *url, const char *username_from_url, + static int credentialsCB(git_cred **out, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload); public: @@ -40,7 +40,7 @@ public: void operator=(LibGit const &) = delete; bool clone(QString url, QString path); - void set_mode(mode_type type); + void setMode(mode_type type); }; #endif diff --git a/plugins/Pass/gpg.cpp b/plugins/Pass/gpg.cpp index c30f2d6..948bab0 100644 --- a/plugins/Pass/gpg.cpp +++ b/plugins/Pass/gpg.cpp @@ -137,6 +137,7 @@ QPair Gpg::decrypt(QByteArray cipherText) auto decResult = job->exec(cipherText, plain_text); delete job; + delete provider; if (decResult.error()) { qWarning() << "something gone wrong on decrypt"; @@ -245,9 +246,6 @@ Error Gpg::importKeysFromFile(QString path) auto job = openpgp()->importJob(); auto ctx = ImportJob::context(job); - auto provider = new UTPassphraseProvider; - ctx->setPassphraseProvider(provider); - ctx->setPinentryMode(Context::PinentryLoopback); auto result = job->exec(file.readAll()); qDebug() << "numImported" << result.numImported(); @@ -258,7 +256,6 @@ Error Gpg::importKeysFromFile(QString path) file.close(); delete job; - delete provider; if (result.error()) { qWarning() << "Import go wrong"; diff --git a/plugins/Pass/pass.cpp b/plugins/Pass/pass.cpp index 50e1d63..dbddcdf 100644 --- a/plugins/Pass/pass.cpp +++ b/plugins/Pass/pass.cpp @@ -12,7 +12,7 @@ Pass::Pass(): m_password_store (QStandardPaths::writableLocation( QStandardPaths::AppDataLocation).append("/.password-store")) {} -void Pass::init(QObject *window) +void Pass::initialize(QObject *window) { if (!window) { qFatal("window is invalid. Abording."); @@ -27,7 +27,7 @@ void Pass::init(QObject *window) qInfo() << "Password Store is :" << m_password_store; } -void Pass::decrypt(QUrl url) +void Pass::show(QUrl url) { qInfo() << "Decrypting"; auto decrypt_ret = Gpg::instance()->decryptFromFile(url.toLocalFile()); @@ -43,19 +43,19 @@ void Pass::decrypt(QUrl url) } } -bool Pass::gpgDeleteKeyId(QString id) +bool Pass::deleteGPGKey(QString id) { qInfo() << "Deleting Key id " << id; return !Gpg::instance()->deleteKeyId(id); } -bool Pass::gpgImportKeyFromFile(QUrl url) +bool Pass::importGPGKey(QUrl url) { qInfo() << "Importing Key from " << url; return !Gpg::instance()->importKeysFromFile(url.toLocalFile()); } -QVariant Pass::gpgGetAllKeysModel() +QVariant Pass::getAllGPGKeys() { qInfo() << "Getting all key form gpg "; return QVariant::fromValue(PassKeyModel::keysToPassKeyQObjectList( diff --git a/plugins/Pass/pass.h b/plugins/Pass/pass.h index b592510..3ff9fed 100644 --- a/plugins/Pass/pass.h +++ b/plugins/Pass/pass.h @@ -28,11 +28,11 @@ public: return m_password_store; } - Q_INVOKABLE void init(QObject *window); - Q_INVOKABLE void decrypt(QUrl url); - Q_INVOKABLE bool gpgDeleteKeyId(QString id); - Q_INVOKABLE bool gpgImportKeyFromFile(QUrl url); - Q_INVOKABLE QVariant gpgGetAllKeysModel(); + Q_INVOKABLE void initialize(QObject *window); + Q_INVOKABLE void show(QUrl url); + Q_INVOKABLE bool deleteGPGKey(QString id); + Q_INVOKABLE bool importGPGKey(QUrl url); + Q_INVOKABLE QVariant getAllGPGKeys(); }; #endif diff --git a/po/utpass.qrouland.pot b/po/utpass.qrouland.pot index cbb4bdb..ae0ef3f 100644 --- a/po/utpass.qrouland.pot +++ b/po/utpass.qrouland.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: utpass.qrouland\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-13 20:49+0100\n" +"POT-Creation-Date: 2025-01-14 09:52+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,7 +47,7 @@ msgid "Ok" msgstr "" #: ../qml/dialogs/PassphraseDialog.qml:41 -#: ../qml/dialogs/SimpleValidationDialog.qml:33 +#: ../qml/dialogs/SimpleValidationDialog.qml:34 msgid "Cancel" msgstr "" diff --git a/qml/Main.qml b/qml/Main.qml index 68d756d..da6451a 100644 --- a/qml/Main.qml +++ b/qml/Main.qml @@ -13,7 +13,7 @@ MainView { signal responsePassphraseDialog(bool canceled, string passphrase) function initPass(rootView) { - Pass.init(rootView); + Pass.initialize(rootView); pageStack.push(Qt.resolvedUrl("pages/PasswordList.qml")); } @@ -21,10 +21,10 @@ MainView { //TODO use parameters to impove passphrase dialog var passphraseDialog = PopupUtils.open(Qt.resolvedUrl("dialogs/PassphraseDialog.qml")); passphraseDialog.activateFocus(); - var validated = function validated(passphrase) { + var validated = function (passphrase) { responsePassphraseDialog(false, passphrase); }; - var canceled = function canceled() { + var canceled = function () { responsePassphraseDialog(true, ""); }; passphraseDialog.validated.connect(validated); diff --git a/qml/components/FileDir.qml b/qml/components/FileDir.qml index 865ab96..7810952 100644 --- a/qml/components/FileDir.qml +++ b/qml/components/FileDir.qml @@ -51,7 +51,7 @@ Component { Pass.onDecryptFailed.connect(function() { PopupUtils.open(passwordPageDecryptError); }); - Pass.decrypt(folderModel.folder + "/" + fileName); + Pass.show(folderModel.folder + "/" + fileName); } } } diff --git a/qml/pages/settings/ImportKeyFile.qml b/qml/pages/settings/ImportKeyFile.qml index 89d58e0..1416d96 100644 --- a/qml/pages/settings/ImportKeyFile.qml +++ b/qml/pages/settings/ImportKeyFile.qml @@ -28,7 +28,7 @@ Page { if (importKeyFilePage.activeTransfer.state === ContentTransfer.Charged) { console.log("Charged"); console.log(importKeyFilePage.activeTransfer.items[0].url); - var status = Pass.gpgImportKeyFromFile(importKeyFilePage.activeTransfer.items[0].url); + var status = Pass.importGPGKey(importKeyFilePage.activeTransfer.items[0].url); Utils.rmFile(importKeyFilePage.activeTransfer.items[0].url); if (status) PopupUtils.open(dialogImportKeyPageSucess); diff --git a/qml/pages/settings/InfoKeys.qml b/qml/pages/settings/InfoKeys.qml index 5d280d2..0d7031c 100644 --- a/qml/pages/settings/InfoKeys.qml +++ b/qml/pages/settings/InfoKeys.qml @@ -18,7 +18,7 @@ Page { anchors.bottom: parent.bottom anchors.right: parent.right anchors.left: parent.left - model: Pass.gpgGetAllKeysModel() + model: Pass.getAllGPGKeys() delegate: Grid { columns: 1 @@ -77,7 +77,7 @@ Page { continueText: i18n.tr("Yes") continueColor: theme.palette.normal.negative onValidated: { - var status = Pass.gpgDeleteKeyId(infoKeysPage.currentKey); + var status = Pass.deleteGPGKey(infoKeysPage.currentKey); if (status) PopupUtils.open(infoKeysPageDeleteSuccess); else @@ -102,7 +102,7 @@ Page { SuccessDialog { textSuccess: i18n.tr("Key successfully deleted !") onDialogClosed: { - infoKeysListView.model = Pass.gpgGetAllKeysModel(); + infoKeysListView.model = Pass.getAllGPGKeys(); } }