File indexing completed on 2024-04-14 03:57:36

0001 /*
0002     SPDX-FileCopyrightText: 2012-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 "pppoesetting.h"
0008 #include "pppoesetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 NetworkManager::PppoeSettingPrivate::PppoeSettingPrivate()
0013     : name(NM_SETTING_PPPOE_SETTING_NAME)
0014     , passwordFlags(Setting::None)
0015 {
0016 }
0017 
0018 NetworkManager::PppoeSetting::PppoeSetting()
0019     : Setting(Setting::Pppoe)
0020     , d_ptr(new PppoeSettingPrivate())
0021 {
0022 }
0023 
0024 NetworkManager::PppoeSetting::PppoeSetting(const Ptr &other)
0025     : Setting(other)
0026     , d_ptr(new PppoeSettingPrivate())
0027 {
0028     setService(other->service());
0029     setUsername(other->username());
0030     setPassword(other->password());
0031     setPasswordFlags(other->passwordFlags());
0032 }
0033 
0034 NetworkManager::PppoeSetting::~PppoeSetting()
0035 {
0036     delete d_ptr;
0037 }
0038 
0039 QString NetworkManager::PppoeSetting::name() const
0040 {
0041     Q_D(const PppoeSetting);
0042 
0043     return d->name;
0044 }
0045 
0046 void NetworkManager::PppoeSetting::setService(const QString &service)
0047 {
0048     Q_D(PppoeSetting);
0049 
0050     d->service = service;
0051 }
0052 
0053 QString NetworkManager::PppoeSetting::service() const
0054 {
0055     Q_D(const PppoeSetting);
0056 
0057     return d->service;
0058 }
0059 
0060 void NetworkManager::PppoeSetting::setParent(const QString &parent)
0061 {
0062     Q_D(PppoeSetting);
0063 
0064     d->parent = parent;
0065 }
0066 
0067 QString NetworkManager::PppoeSetting::parent() const
0068 {
0069     Q_D(const PppoeSetting);
0070 
0071     return d->parent;
0072 }
0073 
0074 void NetworkManager::PppoeSetting::setUsername(const QString &username)
0075 {
0076     Q_D(PppoeSetting);
0077 
0078     d->username = username;
0079 }
0080 
0081 QString NetworkManager::PppoeSetting::username() const
0082 {
0083     Q_D(const PppoeSetting);
0084 
0085     return d->username;
0086 }
0087 
0088 void NetworkManager::PppoeSetting::setPassword(const QString &password)
0089 {
0090     Q_D(PppoeSetting);
0091 
0092     d->password = password;
0093 }
0094 
0095 QString NetworkManager::PppoeSetting::password() const
0096 {
0097     Q_D(const PppoeSetting);
0098 
0099     return d->password;
0100 }
0101 
0102 void NetworkManager::PppoeSetting::setPasswordFlags(NetworkManager::Setting::SecretFlags flags)
0103 {
0104     Q_D(PppoeSetting);
0105 
0106     d->passwordFlags = flags;
0107 }
0108 
0109 NetworkManager::Setting::SecretFlags NetworkManager::PppoeSetting::passwordFlags() const
0110 {
0111     Q_D(const PppoeSetting);
0112 
0113     return d->passwordFlags;
0114 }
0115 
0116 QStringList NetworkManager::PppoeSetting::needSecrets(bool requestNew) const
0117 {
0118     QStringList secrets;
0119 
0120     if ((password().isEmpty() || requestNew) && !passwordFlags().testFlag(Setting::NotRequired)) {
0121         secrets << QLatin1String(NM_SETTING_PPPOE_PASSWORD);
0122     }
0123 
0124     return secrets;
0125 }
0126 
0127 void NetworkManager::PppoeSetting::secretsFromMap(const QVariantMap &secrets)
0128 {
0129     if (secrets.contains(QLatin1String(NM_SETTING_PPPOE_PASSWORD))) {
0130         setPassword(secrets.value(QLatin1String(NM_SETTING_PPPOE_PASSWORD)).toString());
0131     }
0132 }
0133 
0134 QVariantMap NetworkManager::PppoeSetting::secretsToMap() const
0135 {
0136     QVariantMap secrets;
0137 
0138     if (!password().isEmpty()) {
0139         secrets.insert(QLatin1String(NM_SETTING_PPPOE_PASSWORD), password());
0140     }
0141 
0142     return secrets;
0143 }
0144 
0145 void NetworkManager::PppoeSetting::fromMap(const QVariantMap &setting)
0146 {
0147     if (setting.contains(QLatin1String(NM_SETTING_PPPOE_SERVICE))) {
0148         setService(setting.value(QLatin1String(NM_SETTING_PPPOE_SERVICE)).toString());
0149     }
0150 
0151     if (setting.contains(QLatin1String(NM_SETTING_PPPOE_USERNAME))) {
0152         setUsername(setting.value(QLatin1String(NM_SETTING_PPPOE_USERNAME)).toString());
0153     }
0154 
0155     if (setting.contains(QLatin1String(NM_SETTING_PPPOE_PASSWORD))) {
0156         setPassword(setting.value(QLatin1String(NM_SETTING_PPPOE_PASSWORD)).toString());
0157     }
0158 
0159     if (setting.contains(QLatin1String(NM_SETTING_PPPOE_PASSWORD_FLAGS))) {
0160         setPasswordFlags((Setting::SecretFlags)setting.value(QLatin1String(NM_SETTING_PPPOE_PASSWORD_FLAGS)).toUInt());
0161     }
0162 }
0163 
0164 QVariantMap NetworkManager::PppoeSetting::toMap() const
0165 {
0166     QVariantMap setting;
0167 
0168     if (!service().isEmpty()) {
0169         setting.insert(QLatin1String(NM_SETTING_PPPOE_SERVICE), service());
0170     }
0171 
0172     if (!parent().isEmpty()) {
0173         setting.insert(QLatin1String(NM_SETTING_PPPOE_PARENT), parent());
0174     }
0175 
0176     if (!username().isEmpty()) {
0177         setting.insert(QLatin1String(NM_SETTING_PPPOE_USERNAME), username());
0178     }
0179 
0180     if (!password().isEmpty()) {
0181         setting.insert(QLatin1String(NM_SETTING_PPPOE_PASSWORD), password());
0182     }
0183 
0184     if (passwordFlags()) {
0185         setting.insert(QLatin1String(NM_SETTING_PPPOE_PASSWORD_FLAGS), (int)passwordFlags());
0186     }
0187 
0188     return setting;
0189 }
0190 
0191 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::PppoeSetting &setting)
0192 {
0193     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0194     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0195 
0196     dbg.nospace() << NM_SETTING_PPPOE_SERVICE << ": " << setting.service() << '\n';
0197     dbg.nospace() << NM_SETTING_PPPOE_PARENT << ": " << setting.parent() << '\n';
0198     dbg.nospace() << NM_SETTING_PPPOE_USERNAME << ": " << setting.username() << '\n';
0199     dbg.nospace() << NM_SETTING_PPPOE_PASSWORD << ": " << setting.password() << '\n';
0200     dbg.nospace() << NM_SETTING_PPPOE_PASSWORD_FLAGS << ": " << setting.passwordFlags() << '\n';
0201 
0202     return dbg.maybeSpace();
0203 }