From 6063508e7a084a268d7098952252b623f3dbf782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konrad=20Vit=C3=A9?= Date: Wed, 12 Feb 2025 16:16:23 +0100 Subject: [PATCH] SSH Agent: Reload settings when KeeAgent.settings attachment changed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Konrad Vité --- src/gui/entry/EditEntryWidget.cpp | 6 ++++++ src/sshagent/KeeAgentSettings.cpp | 14 +++++++++++++- src/sshagent/KeeAgentSettings.h | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index d2213a669..39850d9b5 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -661,6 +661,12 @@ void EditEntryWidget::updateSSHAgentAttachments() setSSHAgentSettings(); } + if (KeeAgentSettings::inEntryAttachments(m_attachments.data())) { + m_sshAgentSettings.reset(); + m_sshAgentSettings.fromEntryAttachments(m_attachments.data()); + setSSHAgentSettings(); + } + m_sshAgentUi->attachmentComboBox->clear(); m_sshAgentUi->attachmentComboBox->addItem(""); diff --git a/src/sshagent/KeeAgentSettings.cpp b/src/sshagent/KeeAgentSettings.cpp index 0d3084742..ccf48f912 100644 --- a/src/sshagent/KeeAgentSettings.cpp +++ b/src/sshagent/KeeAgentSettings.cpp @@ -533,7 +533,19 @@ bool KeeAgentSettings::inEntryAttachments(const EntryAttachments* attachments) */ bool KeeAgentSettings::fromEntry(const Entry* entry) { - const auto attachments = entry->attachments(); + return KeeAgentSettings::fromEntryAttachments(entry->attachments()); +} + +/** + * Read settings from entry attachments as an XML attachment. + * + * Sets error string on error. + * + * @param entry EntryAttachments to read the attachment from + * @return true if XML document was loaded + */ +bool KeeAgentSettings::fromEntryAttachments(const EntryAttachments* attachments) +{ if (attachments->hasKey("KeeAgent.settings")) { return fromXml(attachments->value("KeeAgent.settings")); } diff --git a/src/sshagent/KeeAgentSettings.h b/src/sshagent/KeeAgentSettings.h index d3a6da16e..4b63019c3 100644 --- a/src/sshagent/KeeAgentSettings.h +++ b/src/sshagent/KeeAgentSettings.h @@ -61,6 +61,7 @@ public: static bool inEntryAttachments(const EntryAttachments* attachments); bool fromEntry(const Entry* entry); + bool fromEntryAttachments(const EntryAttachments* attachments); void toEntry(Entry* entry) const; bool keyConfigured() const; bool toOpenSSHKey(const Entry* entry, OpenSSHKey& key, bool decrypt);