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 }