mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-03-27 16:38:14 -04:00
SSH Agent: Reset settings when KeeAgent.settings is removed
Fixes #4594
This commit is contained in:
parent
98566fec83
commit
a83345d136
@ -1758,7 +1758,7 @@ bool DatabaseWidget::currentEntryHasSshKey()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return KeeAgentSettings::inEntry(currentEntry);
|
return KeeAgentSettings::inEntryAttachments(currentEntry->attachments());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -532,22 +532,24 @@ void EditEntryWidget::setupSSHAgent()
|
|||||||
addPage(tr("SSH Agent"), Resources::instance()->icon("utilities-terminal"), m_sshAgentWidget);
|
addPage(tr("SSH Agent"), Resources::instance()->icon("utilities-terminal"), m_sshAgentWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditEntryWidget::updateSSHAgent()
|
void EditEntryWidget::setSSHAgentSettings()
|
||||||
{
|
{
|
||||||
KeeAgentSettings settings;
|
m_sshAgentUi->addKeyToAgentCheckBox->setChecked(m_sshAgentSettings.addAtDatabaseOpen());
|
||||||
settings.fromEntry(m_entry);
|
m_sshAgentUi->removeKeyFromAgentCheckBox->setChecked(m_sshAgentSettings.removeAtDatabaseClose());
|
||||||
|
m_sshAgentUi->requireUserConfirmationCheckBox->setChecked(m_sshAgentSettings.useConfirmConstraintWhenAdding());
|
||||||
m_sshAgentUi->addKeyToAgentCheckBox->setChecked(settings.addAtDatabaseOpen());
|
m_sshAgentUi->lifetimeCheckBox->setChecked(m_sshAgentSettings.useLifetimeConstraintWhenAdding());
|
||||||
m_sshAgentUi->removeKeyFromAgentCheckBox->setChecked(settings.removeAtDatabaseClose());
|
m_sshAgentUi->lifetimeSpinBox->setValue(m_sshAgentSettings.lifetimeConstraintDuration());
|
||||||
m_sshAgentUi->requireUserConfirmationCheckBox->setChecked(settings.useConfirmConstraintWhenAdding());
|
|
||||||
m_sshAgentUi->lifetimeCheckBox->setChecked(settings.useLifetimeConstraintWhenAdding());
|
|
||||||
m_sshAgentUi->lifetimeSpinBox->setValue(settings.lifetimeConstraintDuration());
|
|
||||||
m_sshAgentUi->attachmentComboBox->clear();
|
m_sshAgentUi->attachmentComboBox->clear();
|
||||||
m_sshAgentUi->addToAgentButton->setEnabled(false);
|
m_sshAgentUi->addToAgentButton->setEnabled(false);
|
||||||
m_sshAgentUi->removeFromAgentButton->setEnabled(false);
|
m_sshAgentUi->removeFromAgentButton->setEnabled(false);
|
||||||
m_sshAgentUi->copyToClipboardButton->setEnabled(false);
|
m_sshAgentUi->copyToClipboardButton->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
m_sshAgentSettings = settings;
|
void EditEntryWidget::updateSSHAgent()
|
||||||
|
{
|
||||||
|
m_sshAgentSettings.reset();
|
||||||
|
m_sshAgentSettings.fromEntry(m_entry);
|
||||||
|
setSSHAgentSettings();
|
||||||
|
|
||||||
updateSSHAgentAttachments();
|
updateSSHAgentAttachments();
|
||||||
}
|
}
|
||||||
@ -560,6 +562,13 @@ void EditEntryWidget::updateSSHAgentAttachment()
|
|||||||
|
|
||||||
void EditEntryWidget::updateSSHAgentAttachments()
|
void EditEntryWidget::updateSSHAgentAttachments()
|
||||||
{
|
{
|
||||||
|
// detect if KeeAgent.settings was removed by hand and reset settings
|
||||||
|
if (m_entry && KeeAgentSettings::inEntryAttachments(m_entry->attachments())
|
||||||
|
&& !KeeAgentSettings::inEntryAttachments(m_advancedUi->attachmentsWidget->entryAttachments())) {
|
||||||
|
m_sshAgentSettings.reset();
|
||||||
|
setSSHAgentSettings();
|
||||||
|
}
|
||||||
|
|
||||||
m_sshAgentUi->attachmentComboBox->clear();
|
m_sshAgentUi->attachmentComboBox->clear();
|
||||||
m_sshAgentUi->attachmentComboBox->addItem("");
|
m_sshAgentUi->attachmentComboBox->addItem("");
|
||||||
|
|
||||||
|
@ -111,6 +111,7 @@ private slots:
|
|||||||
void pickColor();
|
void pickColor();
|
||||||
#ifdef WITH_XC_SSHAGENT
|
#ifdef WITH_XC_SSHAGENT
|
||||||
void toKeeAgentSettings(KeeAgentSettings& settings) const;
|
void toKeeAgentSettings(KeeAgentSettings& settings) const;
|
||||||
|
void setSSHAgentSettings();
|
||||||
void updateSSHAgent();
|
void updateSSHAgent();
|
||||||
void updateSSHAgentAttachment();
|
void updateSSHAgentAttachment();
|
||||||
void updateSSHAgentAttachments();
|
void updateSSHAgentAttachments();
|
||||||
|
@ -19,6 +19,11 @@
|
|||||||
#include "KeeAgentSettings.h"
|
#include "KeeAgentSettings.h"
|
||||||
#include "core/Tools.h"
|
#include "core/Tools.h"
|
||||||
|
|
||||||
|
KeeAgentSettings::KeeAgentSettings()
|
||||||
|
{
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
bool KeeAgentSettings::operator==(const KeeAgentSettings& other) const
|
bool KeeAgentSettings::operator==(const KeeAgentSettings& other) const
|
||||||
{
|
{
|
||||||
// clang-format off
|
// clang-format off
|
||||||
@ -50,6 +55,25 @@ bool KeeAgentSettings::isDefault() const
|
|||||||
return (*this == defaultSettings);
|
return (*this == defaultSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset this instance to default settings
|
||||||
|
*/
|
||||||
|
void KeeAgentSettings::reset()
|
||||||
|
{
|
||||||
|
m_allowUseOfSshKey = false;
|
||||||
|
m_addAtDatabaseOpen = false;
|
||||||
|
m_removeAtDatabaseClose = false;
|
||||||
|
m_useConfirmConstraintWhenAdding = false;
|
||||||
|
m_useLifetimeConstraintWhenAdding = false;
|
||||||
|
m_lifetimeConstraintDuration = 600;
|
||||||
|
|
||||||
|
m_selectedType = QStringLiteral("file");
|
||||||
|
m_attachmentName.clear();
|
||||||
|
m_saveAttachmentToTempFile = false;
|
||||||
|
m_fileName.clear();
|
||||||
|
m_error.clear();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get last error as a QString.
|
* Get last error as a QString.
|
||||||
*
|
*
|
||||||
@ -300,14 +324,14 @@ QByteArray KeeAgentSettings::toXml() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if an entry has KeeAgent settings configured
|
* Check if entry attachments have KeeAgent settings configured
|
||||||
*
|
*
|
||||||
* @param entry Entry to check the attachment
|
* @param attachments EntryAttachments to check the key
|
||||||
* @return true if XML document exists
|
* @return true if XML document exists
|
||||||
*/
|
*/
|
||||||
bool KeeAgentSettings::inEntry(const Entry* entry)
|
bool KeeAgentSettings::inEntryAttachments(const EntryAttachments* attachments)
|
||||||
{
|
{
|
||||||
return entry->attachments()->hasKey("KeeAgent.settings");
|
return attachments->hasKey("KeeAgent.settings");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,14 +28,16 @@
|
|||||||
class KeeAgentSettings
|
class KeeAgentSettings
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
KeeAgentSettings();
|
||||||
bool operator==(const KeeAgentSettings& other) const;
|
bool operator==(const KeeAgentSettings& other) const;
|
||||||
bool operator!=(const KeeAgentSettings& other) const;
|
bool operator!=(const KeeAgentSettings& other) const;
|
||||||
bool isDefault() const;
|
bool isDefault() const;
|
||||||
|
void reset();
|
||||||
|
|
||||||
bool fromXml(const QByteArray& ba);
|
bool fromXml(const QByteArray& ba);
|
||||||
QByteArray toXml() const;
|
QByteArray toXml() const;
|
||||||
|
|
||||||
static bool inEntry(const Entry* entry);
|
static bool inEntryAttachments(const EntryAttachments* attachments);
|
||||||
bool fromEntry(const Entry* entry);
|
bool fromEntry(const Entry* entry);
|
||||||
void toEntry(Entry* entry) const;
|
void toEntry(Entry* entry) const;
|
||||||
bool keyConfigured() const;
|
bool keyConfigured() const;
|
||||||
@ -77,17 +79,17 @@ private:
|
|||||||
bool readBool(QXmlStreamReader& reader);
|
bool readBool(QXmlStreamReader& reader);
|
||||||
int readInt(QXmlStreamReader& reader);
|
int readInt(QXmlStreamReader& reader);
|
||||||
|
|
||||||
bool m_allowUseOfSshKey = false;
|
bool m_allowUseOfSshKey;
|
||||||
bool m_addAtDatabaseOpen = false;
|
bool m_addAtDatabaseOpen;
|
||||||
bool m_removeAtDatabaseClose = false;
|
bool m_removeAtDatabaseClose;
|
||||||
bool m_useConfirmConstraintWhenAdding = false;
|
bool m_useConfirmConstraintWhenAdding;
|
||||||
bool m_useLifetimeConstraintWhenAdding = false;
|
bool m_useLifetimeConstraintWhenAdding;
|
||||||
int m_lifetimeConstraintDuration = 600;
|
int m_lifetimeConstraintDuration;
|
||||||
|
|
||||||
// location
|
// location
|
||||||
QString m_selectedType = QString("file");
|
QString m_selectedType;
|
||||||
QString m_attachmentName;
|
QString m_attachmentName;
|
||||||
bool m_saveAttachmentToTempFile = false;
|
bool m_saveAttachmentToTempFile;
|
||||||
QString m_fileName;
|
QString m_fileName;
|
||||||
QString m_error;
|
QString m_error;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user