File indexing completed on 2024-04-28 16:52:47
0001 /* 0002 SPDX-FileCopyrightText: 2013 Jan Grulich <jgrulich@redhat.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "libreswanauth.h" 0008 #include "nm-libreswan-service.h" 0009 #include "ui_libreswanauth.h" 0010 0011 #include <QString> 0012 0013 class LibreswanAuthDialogPrivate 0014 { 0015 public: 0016 Ui_LibreswanAuth ui; 0017 NetworkManager::VpnSetting::Ptr setting; 0018 }; 0019 0020 LibreswanAuthDialog::LibreswanAuthDialog(const NetworkManager::VpnSetting::Ptr &setting, const QStringList &hints, QWidget *parent) 0021 : SettingWidget(setting, hints, parent) 0022 , d_ptr(new LibreswanAuthDialogPrivate) 0023 { 0024 Q_D(LibreswanAuthDialog); 0025 d->ui.setupUi(this); 0026 d->setting = setting; 0027 0028 readSecrets(); 0029 0030 KAcceleratorManager::manage(this); 0031 } 0032 0033 LibreswanAuthDialog::~LibreswanAuthDialog() 0034 { 0035 delete d_ptr; 0036 } 0037 0038 void LibreswanAuthDialog::readSecrets() 0039 { 0040 Q_D(LibreswanAuthDialog); 0041 const NMStringMap data = d->setting->data(); 0042 const NMStringMap secrets = d->setting->secrets(); 0043 0044 const QString groupName = data.value(NM_LIBRESWAN_LEFTID); 0045 if (!groupName.isEmpty()) { 0046 d->ui.leGroupName->setText(groupName); 0047 } 0048 0049 bool haveUserPassword = true; 0050 if (data.value(NM_LIBRESWAN_XAUTH_PASSWORD_INPUT_MODES) != NM_LIBRESWAN_PW_TYPE_UNUSED) { 0051 d->ui.leUserPassword->setText(secrets.value(NM_LIBRESWAN_XAUTH_PASSWORD)); 0052 } else { 0053 d->ui.leUserPassword->setVisible(false); 0054 d->ui.userPasswordLabel->setVisible(false); 0055 haveUserPassword = false; 0056 } 0057 0058 bool haveGroupPassword = true; 0059 if (data.value(NM_LIBRESWAN_PSK_INPUT_MODES) != NM_LIBRESWAN_PW_TYPE_UNUSED) { 0060 d->ui.leGroupPassword->setText(secrets.value(NM_LIBRESWAN_PSK_VALUE)); 0061 } else { 0062 d->ui.leGroupPassword->setVisible(false); 0063 d->ui.groupPasswordLabel->setVisible(false); 0064 haveGroupPassword = false; 0065 } 0066 0067 if (haveUserPassword && d->ui.leUserPassword->text().isEmpty()) { 0068 d->ui.leUserPassword->setFocus(Qt::OtherFocusReason); 0069 } else if (haveGroupPassword && d->ui.leGroupPassword->text().isEmpty()) { 0070 d->ui.leGroupPassword->setFocus(Qt::OtherFocusReason); 0071 } 0072 } 0073 0074 QVariantMap LibreswanAuthDialog::setting() const 0075 { 0076 Q_D(const LibreswanAuthDialog); 0077 0078 NMStringMap secrets; 0079 QVariantMap result; 0080 0081 if (!d->ui.leUserPassword->text().isEmpty()) { 0082 secrets.insert(NM_LIBRESWAN_XAUTH_PASSWORD, d->ui.leUserPassword->text()); 0083 } 0084 0085 if (!d->ui.leGroupPassword->text().isEmpty()) { 0086 secrets.insert(NM_LIBRESWAN_PSK_VALUE, d->ui.leGroupPassword->text()); 0087 } 0088 0089 result.insert("secrets", QVariant::fromValue<NMStringMap>(secrets)); 0090 0091 return result; 0092 }