File indexing completed on 2024-05-05 17:42:56

0001 /*
0002     SPDX-FileCopyrightText: 2010 Andrey Borzenkov <arvidjaar@gmail.com>
0003     SPDX-FileCopyrightText: 2013 Lukas Tinkl <ltinkl@redhat.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007 
0008 #include "vpncauth.h"
0009 #include "nm-vpnc-service.h"
0010 #include "ui_vpncauth.h"
0011 
0012 #include <QString>
0013 
0014 class VpncAuthDialogPrivate
0015 {
0016 public:
0017     Ui_VpncAuth ui;
0018     NetworkManager::VpnSetting::Ptr setting;
0019 };
0020 
0021 VpncAuthDialog::VpncAuthDialog(const NetworkManager::VpnSetting::Ptr &setting, const QStringList &hints, QWidget *parent)
0022     : SettingWidget(setting, hints, parent)
0023     , d_ptr(new VpncAuthDialogPrivate)
0024 {
0025     Q_D(VpncAuthDialog);
0026     d->ui.setupUi(this);
0027     d->setting = setting;
0028 
0029     readSecrets();
0030 
0031     KAcceleratorManager::manage(this);
0032 }
0033 
0034 VpncAuthDialog::~VpncAuthDialog()
0035 {
0036     delete d_ptr;
0037 }
0038 
0039 void VpncAuthDialog::readSecrets()
0040 {
0041     Q_D(VpncAuthDialog);
0042     const NMStringMap data = d->setting->data();
0043     const NMStringMap secrets = d->setting->secrets();
0044 
0045     //   username
0046     const QString user = data.value(NM_VPNC_KEY_XAUTH_USER);
0047     if (!user.isEmpty()) {
0048         d->ui.leUserName->setText(user);
0049     }
0050     //   group name
0051     const QString group = data.value(NM_VPNC_KEY_ID);
0052     if (!group.isEmpty()) {
0053         d->ui.leGroupName->setText(group);
0054     }
0055 
0056     bool haveUserPassword = true;
0057     if (!((NetworkManager::Setting::SecretFlags)data.value(NM_VPNC_KEY_XAUTH_PASSWORD "-flags").toInt()).testFlag(NetworkManager::Setting::NotRequired)) {
0058         d->ui.leUserPassword->setText(secrets.value(QLatin1String(NM_VPNC_KEY_XAUTH_PASSWORD)));
0059     } else {
0060         d->ui.userNameLabel->setVisible(false);
0061         d->ui.leUserName->setVisible(false);
0062         d->ui.userPasswordLabel->setVisible(false);
0063         d->ui.leUserPassword->setVisible(false);
0064         haveUserPassword = false;
0065     }
0066 
0067     if (!((NetworkManager::Setting::SecretFlags)data.value(NM_VPNC_KEY_SECRET "-flags").toInt()).testFlag(NetworkManager::Setting::NotRequired)) {
0068         d->ui.leGroupPassword->setText(secrets.value(QLatin1String(NM_VPNC_KEY_SECRET)));
0069     } else {
0070         d->ui.groupNameLabel->setVisible(false);
0071         d->ui.leGroupName->setVisible(false);
0072         d->ui.groupPasswordLabel->setVisible(false);
0073         d->ui.leGroupPassword->setVisible(false);
0074     }
0075 
0076     if (haveUserPassword && d->ui.leUserPassword->text().isEmpty()) {
0077         d->ui.leUserPassword->setFocus(Qt::OtherFocusReason);
0078     } else if (d->ui.leGroupPassword->text().isEmpty()) {
0079         d->ui.leGroupPassword->setFocus(Qt::OtherFocusReason);
0080     }
0081 }
0082 
0083 QVariantMap VpncAuthDialog::setting() const
0084 {
0085     Q_D(const VpncAuthDialog);
0086 
0087     NMStringMap secrets;
0088     QVariantMap result;
0089 
0090     //   user password
0091     if (!d->ui.leUserPassword->text().isEmpty()) {
0092         secrets.insert(NM_VPNC_KEY_XAUTH_PASSWORD, d->ui.leUserPassword->text());
0093     }
0094     //   group password
0095     if (!d->ui.leGroupPassword->text().isEmpty()) {
0096         secrets.insert(NM_VPNC_KEY_SECRET, d->ui.leGroupPassword->text());
0097     }
0098 
0099     result.insert("secrets", QVariant::fromValue<NMStringMap>(secrets));
0100 
0101     return result;
0102 }