Implement function to clear all ssh-agent identities (#10649)

Fixes #8346

---------

Co-authored-by: Jonathan White <support@dmapps.us>
This commit is contained in:
Jonathan White 2025-02-02 09:47:00 -05:00
parent 1a11a55a42
commit f48dcb3dba
No known key found for this signature in database
GPG key ID: 440FC65F2E0C6E01
9 changed files with 113 additions and 2 deletions

View file

@ -204,7 +204,10 @@ MainWindow::MainWindow()
#ifdef WITH_XC_SSHAGENT
connect(sshAgent(), SIGNAL(error(QString)), this, SLOT(showErrorMessage(QString)));
connect(sshAgent(), SIGNAL(enabledChanged(bool)), this, SLOT(agentEnabled(bool)));
connect(m_ui->actionClearSSHAgent, SIGNAL(triggered()), SLOT(clearSSHAgent()));
m_ui->settingsWidget->addSettingsPage(new AgentSettingsPage());
#else
agentEnabled(false);
#endif
initViewMenu();
@ -449,6 +452,7 @@ MainWindow::MainWindow()
m_ui->actionSettings->setIcon(icons()->icon("configure"));
m_ui->actionPasswordGenerator->setIcon(icons()->icon("password-generator"));
m_ui->actionClearSSHAgent->setIcon(icons()->icon("utilities-terminal"));
m_ui->actionAbout->setIcon(icons()->icon("help-about"));
m_ui->actionDonate->setIcon(icons()->icon("donate"));
@ -1011,6 +1015,8 @@ void MainWindow::updateMenuActionState()
m_ui->actionEntryAddToAgent->setEnabled(hasSSHKey);
m_ui->actionEntryRemoveFromAgent->setVisible(hasSSHKey);
m_ui->actionEntryRemoveFromAgent->setEnabled(hasSSHKey);
m_ui->actionClearSSHAgent->setVisible(sshAgent()->isEnabled());
m_ui->actionClearSSHAgent->setEnabled(sshAgent()->isEnabled());
#endif
m_ui->actionGroupNew->setEnabled(groupSelected && !inRecycleBin);
@ -1467,6 +1473,15 @@ void MainWindow::focusSearchWidget()
}
}
void MainWindow::clearSSHAgent()
{
#ifdef WITH_XC_SSHAGENT
auto agent = SSHAgent::instance();
auto ret = agent->clearAllAgentIdentities();
displayGlobalMessage(agent->errorString(), ret ? MessageWidget::Positive : KMessageWidget::Error, false);
#endif
}
void MainWindow::saveWindowInformation()
{
if (isVisible()) {
@ -1590,6 +1605,8 @@ void MainWindow::agentEnabled(bool enabled)
{
m_ui->actionEntryAddToAgent->setVisible(enabled);
m_ui->actionEntryRemoveFromAgent->setVisible(enabled);
m_ui->actionClearSSHAgent->setEnabled(enabled);
m_ui->actionClearSSHAgent->setVisible(enabled);
}
void MainWindow::showEntryContextMenu(const QPoint& globalPos)