| 1 | /* | 
|---|
| 2 | SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com> | 
|---|
| 3 |  | 
|---|
| 4 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL | 
|---|
| 5 | */ | 
|---|
| 6 |  | 
|---|
| 7 | #include "adslsetting.h" | 
|---|
| 8 | #include "adslsetting_p.h" | 
|---|
| 9 | #include <manager.h> | 
|---|
| 10 |  | 
|---|
| 11 | #include <QDebug> | 
|---|
| 12 |  | 
|---|
| 13 | NetworkManager::AdslSettingPrivate::AdslSettingPrivate() | 
|---|
| 14 | : name(NM_SETTING_ADSL_SETTING_NAME) | 
|---|
| 15 | , passwordFlags(Setting::None) | 
|---|
| 16 | , protocol(AdslSetting::UnknownProtocol) | 
|---|
| 17 | , encapsulation(AdslSetting::UnknownEncapsulation) | 
|---|
| 18 | , vpi(0) | 
|---|
| 19 | , vci(0) | 
|---|
| 20 | { | 
|---|
| 21 | } | 
|---|
| 22 |  | 
|---|
| 23 | NetworkManager::AdslSetting::AdslSetting() | 
|---|
| 24 | : Setting(Setting::Adsl) | 
|---|
| 25 | , d_ptr(new AdslSettingPrivate()) | 
|---|
| 26 | { | 
|---|
| 27 | } | 
|---|
| 28 |  | 
|---|
| 29 | NetworkManager::AdslSetting::AdslSetting(const AdslSetting::Ptr &other) | 
|---|
| 30 | : Setting(other) | 
|---|
| 31 | , d_ptr(new AdslSettingPrivate()) | 
|---|
| 32 | { | 
|---|
| 33 | setUsername(other->username()); | 
|---|
| 34 | setPassword(other->password()); | 
|---|
| 35 | setProtocol(other->protocol()); | 
|---|
| 36 | setPasswordFlags(other->passwordFlags()); | 
|---|
| 37 | setProtocol(other->protocol()); | 
|---|
| 38 | setEncapsulation(other->encapsulation()); | 
|---|
| 39 | setVpi(other->vpi()); | 
|---|
| 40 | setVci(other->vci()); | 
|---|
| 41 | } | 
|---|
| 42 |  | 
|---|
| 43 | NetworkManager::AdslSetting::~AdslSetting() | 
|---|
| 44 | { | 
|---|
| 45 | delete d_ptr; | 
|---|
| 46 | } | 
|---|
| 47 |  | 
|---|
| 48 | QString NetworkManager::AdslSetting::name() const | 
|---|
| 49 | { | 
|---|
| 50 | Q_D(const AdslSetting); | 
|---|
| 51 |  | 
|---|
| 52 | return d->name; | 
|---|
| 53 | } | 
|---|
| 54 |  | 
|---|
| 55 | void NetworkManager::AdslSetting::setUsername(const QString &username) | 
|---|
| 56 | { | 
|---|
| 57 | Q_D(AdslSetting); | 
|---|
| 58 |  | 
|---|
| 59 | d->username = username; | 
|---|
| 60 | } | 
|---|
| 61 |  | 
|---|
| 62 | QString NetworkManager::AdslSetting::username() const | 
|---|
| 63 | { | 
|---|
| 64 | Q_D(const AdslSetting); | 
|---|
| 65 |  | 
|---|
| 66 | return d->username; | 
|---|
| 67 | } | 
|---|
| 68 |  | 
|---|
| 69 | void NetworkManager::AdslSetting::setPassword(const QString &password) | 
|---|
| 70 | { | 
|---|
| 71 | Q_D(AdslSetting); | 
|---|
| 72 |  | 
|---|
| 73 | d->password = password; | 
|---|
| 74 | } | 
|---|
| 75 |  | 
|---|
| 76 | QString NetworkManager::AdslSetting::password() const | 
|---|
| 77 | { | 
|---|
| 78 | Q_D(const AdslSetting); | 
|---|
| 79 |  | 
|---|
| 80 | return d->password; | 
|---|
| 81 | } | 
|---|
| 82 |  | 
|---|
| 83 | void NetworkManager::AdslSetting::setPasswordFlags(NetworkManager::Setting::SecretFlags flags) | 
|---|
| 84 | { | 
|---|
| 85 | Q_D(AdslSetting); | 
|---|
| 86 |  | 
|---|
| 87 | d->passwordFlags = flags; | 
|---|
| 88 | } | 
|---|
| 89 |  | 
|---|
| 90 | NetworkManager::Setting::SecretFlags NetworkManager::AdslSetting::passwordFlags() const | 
|---|
| 91 | { | 
|---|
| 92 | Q_D(const AdslSetting); | 
|---|
| 93 |  | 
|---|
| 94 | return d->passwordFlags; | 
|---|
| 95 | } | 
|---|
| 96 |  | 
|---|
| 97 | void NetworkManager::AdslSetting::setProtocol(NetworkManager::AdslSetting::Protocol protocol) | 
|---|
| 98 | { | 
|---|
| 99 | Q_D(AdslSetting); | 
|---|
| 100 |  | 
|---|
| 101 | d->protocol = protocol; | 
|---|
| 102 | } | 
|---|
| 103 |  | 
|---|
| 104 | NetworkManager::AdslSetting::Protocol NetworkManager::AdslSetting::protocol() const | 
|---|
| 105 | { | 
|---|
| 106 | Q_D(const AdslSetting); | 
|---|
| 107 |  | 
|---|
| 108 | return d->protocol; | 
|---|
| 109 | } | 
|---|
| 110 |  | 
|---|
| 111 | void NetworkManager::AdslSetting::setEncapsulation(NetworkManager::AdslSetting::Encapsulation encapsulation) | 
|---|
| 112 | { | 
|---|
| 113 | Q_D(AdslSetting); | 
|---|
| 114 |  | 
|---|
| 115 | d->encapsulation = encapsulation; | 
|---|
| 116 | } | 
|---|
| 117 |  | 
|---|
| 118 | NetworkManager::AdslSetting::Encapsulation NetworkManager::AdslSetting::encapsulation() const | 
|---|
| 119 | { | 
|---|
| 120 | Q_D(const AdslSetting); | 
|---|
| 121 |  | 
|---|
| 122 | return d->encapsulation; | 
|---|
| 123 | } | 
|---|
| 124 |  | 
|---|
| 125 | void NetworkManager::AdslSetting::setVpi(quint32 vpi) | 
|---|
| 126 | { | 
|---|
| 127 | Q_D(AdslSetting); | 
|---|
| 128 |  | 
|---|
| 129 | d->vpi = vpi; | 
|---|
| 130 | } | 
|---|
| 131 |  | 
|---|
| 132 | quint32 NetworkManager::AdslSetting::vpi() const | 
|---|
| 133 | { | 
|---|
| 134 | Q_D(const AdslSetting); | 
|---|
| 135 |  | 
|---|
| 136 | return d->vpi; | 
|---|
| 137 | } | 
|---|
| 138 |  | 
|---|
| 139 | void NetworkManager::AdslSetting::setVci(quint32 vci) | 
|---|
| 140 | { | 
|---|
| 141 | Q_D(AdslSetting); | 
|---|
| 142 |  | 
|---|
| 143 | d->vci = vci; | 
|---|
| 144 | } | 
|---|
| 145 |  | 
|---|
| 146 | quint32 NetworkManager::AdslSetting::vci() const | 
|---|
| 147 | { | 
|---|
| 148 | Q_D(const AdslSetting); | 
|---|
| 149 |  | 
|---|
| 150 | return d->vci; | 
|---|
| 151 | } | 
|---|
| 152 |  | 
|---|
| 153 | QStringList NetworkManager::AdslSetting::needSecrets(bool requestNew) const | 
|---|
| 154 | { | 
|---|
| 155 | QStringList secrets; | 
|---|
| 156 |  | 
|---|
| 157 | if ((password().isEmpty() || requestNew) && !passwordFlags().testFlag(flag: NotRequired)) { | 
|---|
| 158 | secrets << QLatin1String(NM_SETTING_ADSL_PASSWORD); | 
|---|
| 159 | } | 
|---|
| 160 |  | 
|---|
| 161 | return secrets; | 
|---|
| 162 | } | 
|---|
| 163 |  | 
|---|
| 164 | void NetworkManager::AdslSetting::fromMap(const QVariantMap &setting) | 
|---|
| 165 | { | 
|---|
| 166 | if (setting.contains(key: QLatin1String(NM_SETTING_ADSL_USERNAME))) { | 
|---|
| 167 | setUsername(setting.value(key: QLatin1String(NM_SETTING_ADSL_USERNAME)).toString()); | 
|---|
| 168 | } | 
|---|
| 169 |  | 
|---|
| 170 | if (setting.contains(key: QLatin1String(NM_SETTING_ADSL_PASSWORD))) { | 
|---|
| 171 | setPassword(setting.value(key: QLatin1String(NM_SETTING_ADSL_PASSWORD)).toString()); | 
|---|
| 172 | } | 
|---|
| 173 |  | 
|---|
| 174 | if (setting.contains(key: QLatin1String(NM_SETTING_ADSL_PASSWORD_FLAGS))) { | 
|---|
| 175 | setPasswordFlags((Setting::SecretFlags)setting.value(key: QLatin1String(NM_SETTING_ADSL_PASSWORD_FLAGS)).toInt()); | 
|---|
| 176 | } | 
|---|
| 177 |  | 
|---|
| 178 | if (setting.contains(key: QLatin1String(NM_SETTING_ADSL_PROTOCOL))) { | 
|---|
| 179 | const QString protocol = setting.value(key: QLatin1String(NM_SETTING_ADSL_PROTOCOL)).toString(); | 
|---|
| 180 |  | 
|---|
| 181 | if (protocol == QLatin1String(NM_SETTING_ADSL_PROTOCOL_PPPOA)) { | 
|---|
| 182 | setProtocol(Pppoa); | 
|---|
| 183 | } else if (protocol == QLatin1String(NM_SETTING_ADSL_PROTOCOL_PPPOE)) { | 
|---|
| 184 | setProtocol(Pppoe); | 
|---|
| 185 | } else if (protocol == QLatin1String(NM_SETTING_ADSL_PROTOCOL_IPOATM)) { | 
|---|
| 186 | setProtocol(Ipoatm); | 
|---|
| 187 | } | 
|---|
| 188 | } | 
|---|
| 189 |  | 
|---|
| 190 | if (setting.contains(key: QLatin1String(NM_SETTING_ADSL_ENCAPSULATION))) { | 
|---|
| 191 | const QString encapsulation = setting.value(key: QLatin1String(NM_SETTING_ADSL_ENCAPSULATION)).toString(); | 
|---|
| 192 |  | 
|---|
| 193 | if (encapsulation == QLatin1String(NM_SETTING_ADSL_ENCAPSULATION_VCMUX)) { | 
|---|
| 194 | setEncapsulation(Vcmux); | 
|---|
| 195 | } else if (encapsulation == QLatin1String(NM_SETTING_ADSL_ENCAPSULATION_LLC)) { | 
|---|
| 196 | setEncapsulation(Llc); | 
|---|
| 197 | } | 
|---|
| 198 | } | 
|---|
| 199 |  | 
|---|
| 200 | if (setting.contains(key: QLatin1String(NM_SETTING_ADSL_VPI))) { | 
|---|
| 201 | setVpi(setting.value(key: QLatin1String(NM_SETTING_ADSL_VPI)).toUInt()); | 
|---|
| 202 | } | 
|---|
| 203 |  | 
|---|
| 204 | if (setting.contains(key: QLatin1String(NM_SETTING_ADSL_VCI))) { | 
|---|
| 205 | setVci(setting.value(key: QLatin1String(NM_SETTING_ADSL_VCI)).toUInt()); | 
|---|
| 206 | } | 
|---|
| 207 | } | 
|---|
| 208 |  | 
|---|
| 209 | QVariantMap NetworkManager::AdslSetting::toMap() const | 
|---|
| 210 | { | 
|---|
| 211 | QVariantMap setting; | 
|---|
| 212 |  | 
|---|
| 213 | if (!username().isEmpty()) { | 
|---|
| 214 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_USERNAME), value: username()); | 
|---|
| 215 | } | 
|---|
| 216 |  | 
|---|
| 217 | if (!password().isEmpty()) { | 
|---|
| 218 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_PASSWORD), value: password()); | 
|---|
| 219 | } | 
|---|
| 220 |  | 
|---|
| 221 | if (passwordFlags() != None) { | 
|---|
| 222 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_PASSWORD_FLAGS), value: (int)passwordFlags()); | 
|---|
| 223 | } | 
|---|
| 224 |  | 
|---|
| 225 | switch (protocol()) { | 
|---|
| 226 | case Pppoa: | 
|---|
| 227 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_PROTOCOL), value: QLatin1String(NM_SETTING_ADSL_PROTOCOL_PPPOA)); | 
|---|
| 228 | break; | 
|---|
| 229 | case Pppoe: | 
|---|
| 230 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_PROTOCOL), value: QLatin1String(NM_SETTING_ADSL_PROTOCOL_PPPOE)); | 
|---|
| 231 | break; | 
|---|
| 232 | case Ipoatm: | 
|---|
| 233 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_PROTOCOL), value: QLatin1String(NM_SETTING_ADSL_PROTOCOL_IPOATM)); | 
|---|
| 234 | break; | 
|---|
| 235 | case UnknownProtocol: | 
|---|
| 236 | break; | 
|---|
| 237 | } | 
|---|
| 238 |  | 
|---|
| 239 | switch (encapsulation()) { | 
|---|
| 240 | case Vcmux: | 
|---|
| 241 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_ENCAPSULATION), value: QLatin1String(NM_SETTING_ADSL_ENCAPSULATION_VCMUX)); | 
|---|
| 242 | break; | 
|---|
| 243 | case Llc: | 
|---|
| 244 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_ENCAPSULATION), value: QLatin1String(NM_SETTING_ADSL_ENCAPSULATION_LLC)); | 
|---|
| 245 | break; | 
|---|
| 246 | case UnknownEncapsulation: | 
|---|
| 247 | break; | 
|---|
| 248 | } | 
|---|
| 249 |  | 
|---|
| 250 | if (vpi()) { | 
|---|
| 251 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_VPI), value: vpi()); | 
|---|
| 252 | } | 
|---|
| 253 |  | 
|---|
| 254 | if (vci()) { | 
|---|
| 255 | setting.insert(key: QLatin1String(NM_SETTING_ADSL_VCI), value: vci()); | 
|---|
| 256 | } | 
|---|
| 257 |  | 
|---|
| 258 | return setting; | 
|---|
| 259 | } | 
|---|
| 260 |  | 
|---|
| 261 | QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::AdslSetting &setting) | 
|---|
| 262 | { | 
|---|
| 263 | dbg.nospace() << "type: "<< setting.typeAsString(type: setting.type()) << '\n'; | 
|---|
| 264 | dbg.nospace() << "initialized: "<< !setting.isNull() << '\n'; | 
|---|
| 265 |  | 
|---|
| 266 | dbg.nospace() << NM_SETTING_ADSL_USERNAME << ": "<< setting.username() << '\n'; | 
|---|
| 267 | dbg.nospace() << NM_SETTING_ADSL_PASSWORD << ": "<< setting.password() << '\n'; | 
|---|
| 268 | dbg.nospace() << NM_SETTING_ADSL_PASSWORD_FLAGS << ": "<< setting.passwordFlags() << '\n'; | 
|---|
| 269 | dbg.nospace() << NM_SETTING_ADSL_PROTOCOL << ": "<< setting.protocol() << '\n'; | 
|---|
| 270 | dbg.nospace() << NM_SETTING_ADSL_ENCAPSULATION << ": "<< setting.encapsulation() << '\n'; | 
|---|
| 271 | dbg.nospace() << NM_SETTING_ADSL_VPI << ": "<< setting.vpi() << '\n'; | 
|---|
| 272 | dbg.nospace() << NM_SETTING_ADSL_VCI << ": "<< setting.vci() << '\n'; | 
|---|
| 273 |  | 
|---|
| 274 | return dbg.maybeSpace(); | 
|---|
| 275 | } | 
|---|
| 276 |  | 
|---|