fix: SetttingsDialog KeySize Combobox does not set key length

fixes #8380
This commit is contained in:
sithlord48 2025-03-19 09:53:22 -04:00 committed by Nick Bolton
parent 96b50b7d1c
commit e624e6f174
3 changed files with 31 additions and 21 deletions

View file

@ -34,6 +34,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, const IServerConfig &serverConfi
ui->comboTlsKeyLength->setItemIcon(0, QIcon::fromTheme(QIcon::ThemeIcon::SecurityLow)); ui->comboTlsKeyLength->setItemIcon(0, QIcon::fromTheme(QIcon::ThemeIcon::SecurityLow));
ui->comboTlsKeyLength->setItemIcon(1, QIcon::fromTheme(QStringLiteral("security-medium"))); ui->comboTlsKeyLength->setItemIcon(1, QIcon::fromTheme(QStringLiteral("security-medium")));
ui->comboTlsKeyLength->setItemIcon(2, QIcon::fromTheme(QIcon::ThemeIcon::SecurityHigh)); ui->comboTlsKeyLength->setItemIcon(2, QIcon::fromTheme(QIcon::ThemeIcon::SecurityHigh));
ui->lblTlsCertInfo->setFixedSize(28, 28);
ui->rbIconMono->setIcon(QIcon::fromTheme(QStringLiteral("deskflow-symbolic"))); ui->rbIconMono->setIcon(QIcon::fromTheme(QStringLiteral("deskflow-symbolic")));
ui->rbIconColorful->setIcon(QIcon::fromTheme(QStringLiteral("deskflow"))); ui->rbIconColorful->setIcon(QIcon::fromTheme(QStringLiteral("deskflow")));
@ -64,6 +65,7 @@ void SettingsDialog::initConnections()
connect(ui->groupSecurity, &QGroupBox::toggled, this, &SettingsDialog::updateTlsControlsEnabled); connect(ui->groupSecurity, &QGroupBox::toggled, this, &SettingsDialog::updateTlsControlsEnabled);
connect(ui->cbServiceEnabled, &QCheckBox::toggled, this, &SettingsDialog::updateControls); connect(ui->cbServiceEnabled, &QCheckBox::toggled, this, &SettingsDialog::updateControls);
connect(ui->btnTlsRegenCert, &QPushButton::clicked, this, &SettingsDialog::regenCertificates); connect(ui->btnTlsRegenCert, &QPushButton::clicked, this, &SettingsDialog::regenCertificates);
connect(ui->comboTlsKeyLength, &QComboBox::currentIndexChanged, this, &SettingsDialog::updateRequestedKeySize);
connect(ui->btnTlsCertPath, &QPushButton::clicked, this, &SettingsDialog::browseCertificatePath); connect(ui->btnTlsCertPath, &QPushButton::clicked, this, &SettingsDialog::browseCertificatePath);
connect(ui->btnBrowseLog, &QPushButton::clicked, this, &SettingsDialog::browseLogPath); connect(ui->btnBrowseLog, &QPushButton::clicked, this, &SettingsDialog::browseLogPath);
connect(ui->cbLogToFile, &QCheckBox::toggled, this, &SettingsDialog::setLogToFile); connect(ui->cbLogToFile, &QCheckBox::toggled, this, &SettingsDialog::setLogToFile);
@ -73,6 +75,8 @@ void SettingsDialog::regenCertificates()
{ {
if (m_tlsUtility.generateCertificate()) { if (m_tlsUtility.generateCertificate()) {
QMessageBox::information(this, tr("TLS Certificate Regenerated"), tr("TLS certificate regenerated successfully.")); QMessageBox::information(this, tr("TLS Certificate Regenerated"), tr("TLS certificate regenerated successfully."));
const auto certificate = Settings::value(Settings::Security::Certificate).toString();
updateKeyLengthOnFile(certificate);
} }
} }
@ -184,11 +188,10 @@ void SettingsDialog::updateTlsControls()
const auto certificate = Settings::value(Settings::Security::Certificate).toString(); const auto certificate = Settings::value(Settings::Security::Certificate).toString();
if (QFile(certificate).exists()) { if (QFile(certificate).exists()) {
updateKeyLengthOnFile(certificate); updateKeyLengthOnFile(certificate);
} else {
const auto keyLengthText = Settings::value(Settings::Security::KeySize).toString();
ui->comboTlsKeyLength->setCurrentText(keyLengthText);
} }
ui->comboTlsKeyLength->setCurrentText(Settings::value(Settings::Security::KeySize).toString());
const auto tlsEnabled = Settings::value(Settings::Security::TlsEnabled).toBool(); const auto tlsEnabled = Settings::value(Settings::Security::TlsEnabled).toBool();
const auto writable = Settings::isWritable(); const auto writable = Settings::isWritable();
const auto enabled = writable && tlsEnabled; const auto enabled = writable && tlsEnabled;
@ -234,8 +237,14 @@ void SettingsDialog::updateKeyLengthOnFile(const QString &path)
} }
auto length = ssl.getCertKeyLength(path); auto length = ssl.getCertKeyLength(path);
ui->comboTlsKeyLength->setCurrentText(QString::number(length)); QPixmap labelIcon = QPixmap(QIcon::fromTheme(QIcon::ThemeIcon::SecurityLow).pixmap(24, 24));
Settings::setValue(Settings::Security::KeySize, length); if (length == 2048)
labelIcon = QPixmap(QIcon::fromTheme(QStringLiteral("security-medium")).pixmap(24, 24));
if (length == 4096)
labelIcon = QPixmap(QIcon::fromTheme(QIcon::ThemeIcon::SecurityHigh).pixmap(24, 24));
ui->lblTlsCertInfo->setPixmap(labelIcon);
ui->lblTlsCertInfo->setToolTip(QStringLiteral("Key length: %1 bits").arg(QString::number(length)));
} }
void SettingsDialog::updateControls() void SettingsDialog::updateControls()
@ -275,4 +284,11 @@ void SettingsDialog::updateControls()
updateTlsControls(); updateTlsControls();
} }
void SettingsDialog::updateRequestedKeySize()
{
if (ui->comboTlsKeyLength->currentText() == Settings::value(Settings::Security::KeySize).toString())
return;
Settings::setValue(Settings::Security::KeySize, ui->comboTlsKeyLength->currentText());
}
SettingsDialog::~SettingsDialog() = default; SettingsDialog::~SettingsDialog() = default;

View file

@ -58,6 +58,9 @@ private:
/// @brief Enables controls when they should be. /// @brief Enables controls when they should be.
void updateControls(); void updateControls();
/// @brief updates the setting vaule for key size.
void updateRequestedKeySize();
std::unique_ptr<Ui::SettingsDialog> ui; std::unique_ptr<Ui::SettingsDialog> ui;
const IServerConfig &m_serverConfig; const IServerConfig &m_serverConfig;
const CoreProcess &m_coreProcess; const CoreProcess &m_coreProcess;

View file

@ -163,6 +163,13 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item>
<widget class="QLabel" name="lblTlsCertInfo">
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item> <item>
<widget class="QLabel" name="lblTlsCert"> <widget class="QLabel" name="lblTlsCert">
<property name="sizePolicy"> <property name="sizePolicy">
@ -176,22 +183,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QLineEdit" name="lineTlsCertPath"> <widget class="QLineEdit" name="lineTlsCertPath">
<property name="minimumSize"> <property name="minimumSize">