File indexing completed on 2024-04-21 04:00:00
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 "adslsetting.h" 0008 #include "adslsetting_p.h" 0009 #include <manager.h> 0010 0011 #include <QDebug> 0012 0013 NetworkManager::AdslSettingPrivate::AdslSettingPrivate() 0014 : name(NM_SETTING_ADSL_SETTING_NAME) 0015 , passwordFlags(Setting::None) 0016 , protocol(AdslSetting::UnknownProtocol) 0017 , encapsulation(AdslSetting::UnknownEncapsulation) 0018 , vpi(0) 0019 , vci(0) 0020 { 0021 } 0022 0023 NetworkManager::AdslSetting::AdslSetting() 0024 : Setting(Setting::Adsl) 0025 , d_ptr(new AdslSettingPrivate()) 0026 { 0027 } 0028 0029 NetworkManager::AdslSetting::AdslSetting(const AdslSetting::Ptr &other) 0030 : Setting(other) 0031 , d_ptr(new AdslSettingPrivate()) 0032 { 0033 setUsername(other->username()); 0034 setPassword(other->password()); 0035 setProtocol(other->protocol()); 0036 setPasswordFlags(other->passwordFlags()); 0037 setProtocol(other->protocol()); 0038 setEncapsulation(other->encapsulation()); 0039 setVpi(other->vpi()); 0040 setVci(other->vci()); 0041 } 0042 0043 NetworkManager::AdslSetting::~AdslSetting() 0044 { 0045 delete d_ptr; 0046 } 0047 0048 QString NetworkManager::AdslSetting::name() const 0049 { 0050 Q_D(const AdslSetting); 0051 0052 return d->name; 0053 } 0054 0055 void NetworkManager::AdslSetting::setUsername(const QString &username) 0056 { 0057 Q_D(AdslSetting); 0058 0059 d->username = username; 0060 } 0061 0062 QString NetworkManager::AdslSetting::username() const 0063 { 0064 Q_D(const AdslSetting); 0065 0066 return d->username; 0067 } 0068 0069 void NetworkManager::AdslSetting::setPassword(const QString &password) 0070 { 0071 Q_D(AdslSetting); 0072 0073 d->password = password; 0074 } 0075 0076 QString NetworkManager::AdslSetting::password() const 0077 { 0078 Q_D(const AdslSetting); 0079 0080 return d->password; 0081 } 0082 0083 void NetworkManager::AdslSetting::setPasswordFlags(NetworkManager::Setting::SecretFlags flags) 0084 { 0085 Q_D(AdslSetting); 0086 0087 d->passwordFlags = flags; 0088 } 0089 0090 NetworkManager::Setting::SecretFlags NetworkManager::AdslSetting::passwordFlags() const 0091 { 0092 Q_D(const AdslSetting); 0093 0094 return d->passwordFlags; 0095 } 0096 0097 void NetworkManager::AdslSetting::setProtocol(NetworkManager::AdslSetting::Protocol protocol) 0098 { 0099 Q_D(AdslSetting); 0100 0101 d->protocol = protocol; 0102 } 0103 0104 NetworkManager::AdslSetting::Protocol NetworkManager::AdslSetting::protocol() const 0105 { 0106 Q_D(const AdslSetting); 0107 0108 return d->protocol; 0109 } 0110 0111 void NetworkManager::AdslSetting::setEncapsulation(NetworkManager::AdslSetting::Encapsulation encapsulation) 0112 { 0113 Q_D(AdslSetting); 0114 0115 d->encapsulation = encapsulation; 0116 } 0117 0118 NetworkManager::AdslSetting::Encapsulation NetworkManager::AdslSetting::encapsulation() const 0119 { 0120 Q_D(const AdslSetting); 0121 0122 return d->encapsulation; 0123 } 0124 0125 void NetworkManager::AdslSetting::setVpi(quint32 vpi) 0126 { 0127 Q_D(AdslSetting); 0128 0129 d->vpi = vpi; 0130 } 0131 0132 quint32 NetworkManager::AdslSetting::vpi() const 0133 { 0134 Q_D(const AdslSetting); 0135 0136 return d->vpi; 0137 } 0138 0139 void NetworkManager::AdslSetting::setVci(quint32 vci) 0140 { 0141 Q_D(AdslSetting); 0142 0143 d->vci = vci; 0144 } 0145 0146 quint32 NetworkManager::AdslSetting::vci() const 0147 { 0148 Q_D(const AdslSetting); 0149 0150 return d->vci; 0151 } 0152 0153 QStringList NetworkManager::AdslSetting::needSecrets(bool requestNew) const 0154 { 0155 QStringList secrets; 0156 0157 if ((password().isEmpty() || requestNew) && !passwordFlags().testFlag(NotRequired)) { 0158 secrets << QLatin1String(NM_SETTING_ADSL_PASSWORD); 0159 } 0160 0161 return secrets; 0162 } 0163 0164 void NetworkManager::AdslSetting::fromMap(const QVariantMap &setting) 0165 { 0166 if (setting.contains(QLatin1String(NM_SETTING_ADSL_USERNAME))) { 0167 setUsername(setting.value(QLatin1String(NM_SETTING_ADSL_USERNAME)).toString()); 0168 } 0169 0170 if (setting.contains(QLatin1String(NM_SETTING_ADSL_PASSWORD))) { 0171 setPassword(setting.value(QLatin1String(NM_SETTING_ADSL_PASSWORD)).toString()); 0172 } 0173 0174 if (setting.contains(QLatin1String(NM_SETTING_ADSL_PASSWORD_FLAGS))) { 0175 setPasswordFlags((Setting::SecretFlags)setting.value(QLatin1String(NM_SETTING_ADSL_PASSWORD_FLAGS)).toInt()); 0176 } 0177 0178 if (setting.contains(QLatin1String(NM_SETTING_ADSL_PROTOCOL))) { 0179 const QString protocol = setting.value(QLatin1String(NM_SETTING_ADSL_PROTOCOL)).toString(); 0180 0181 if (protocol == QLatin1String(NM_SETTING_ADSL_PROTOCOL_PPPOA)) { 0182 setProtocol(Pppoa); 0183 } else if (protocol == QLatin1String(NM_SETTING_ADSL_PROTOCOL_PPPOE)) { 0184 setProtocol(Pppoe); 0185 } else if (protocol == QLatin1String(NM_SETTING_ADSL_PROTOCOL_IPOATM)) { 0186 setProtocol(Ipoatm); 0187 } 0188 } 0189 0190 if (setting.contains(QLatin1String(NM_SETTING_ADSL_ENCAPSULATION))) { 0191 const QString encapsulation = setting.value(QLatin1String(NM_SETTING_ADSL_ENCAPSULATION)).toString(); 0192 0193 if (encapsulation == QLatin1String(NM_SETTING_ADSL_ENCAPSULATION_VCMUX)) { 0194 setEncapsulation(Vcmux); 0195 } else if (encapsulation == QLatin1String(NM_SETTING_ADSL_ENCAPSULATION_LLC)) { 0196 setEncapsulation(Llc); 0197 } 0198 } 0199 0200 if (setting.contains(QLatin1String(NM_SETTING_ADSL_VPI))) { 0201 setVpi(setting.value(QLatin1String(NM_SETTING_ADSL_VPI)).toUInt()); 0202 } 0203 0204 if (setting.contains(QLatin1String(NM_SETTING_ADSL_VCI))) { 0205 setVci(setting.value(QLatin1String(NM_SETTING_ADSL_VCI)).toUInt()); 0206 } 0207 } 0208 0209 QVariantMap NetworkManager::AdslSetting::toMap() const 0210 { 0211 QVariantMap setting; 0212 0213 if (!username().isEmpty()) { 0214 setting.insert(QLatin1String(NM_SETTING_ADSL_USERNAME), username()); 0215 } 0216 0217 if (!password().isEmpty()) { 0218 setting.insert(QLatin1String(NM_SETTING_ADSL_PASSWORD), password()); 0219 } 0220 0221 if (passwordFlags() != None) { 0222 setting.insert(QLatin1String(NM_SETTING_ADSL_PASSWORD_FLAGS), (int)passwordFlags()); 0223 } 0224 0225 switch (protocol()) { 0226 case Pppoa: 0227 setting.insert(QLatin1String(NM_SETTING_ADSL_PROTOCOL), QLatin1String(NM_SETTING_ADSL_PROTOCOL_PPPOA)); 0228 break; 0229 case Pppoe: 0230 setting.insert(QLatin1String(NM_SETTING_ADSL_PROTOCOL), QLatin1String(NM_SETTING_ADSL_PROTOCOL_PPPOE)); 0231 break; 0232 case Ipoatm: 0233 setting.insert(QLatin1String(NM_SETTING_ADSL_PROTOCOL), QLatin1String(NM_SETTING_ADSL_PROTOCOL_IPOATM)); 0234 break; 0235 case UnknownProtocol: 0236 break; 0237 } 0238 0239 switch (encapsulation()) { 0240 case Vcmux: 0241 setting.insert(QLatin1String(NM_SETTING_ADSL_ENCAPSULATION), QLatin1String(NM_SETTING_ADSL_ENCAPSULATION_VCMUX)); 0242 break; 0243 case Llc: 0244 setting.insert(QLatin1String(NM_SETTING_ADSL_ENCAPSULATION), QLatin1String(NM_SETTING_ADSL_ENCAPSULATION_LLC)); 0245 break; 0246 case UnknownEncapsulation: 0247 break; 0248 } 0249 0250 if (vpi()) { 0251 setting.insert(QLatin1String(NM_SETTING_ADSL_VPI), vpi()); 0252 } 0253 0254 if (vci()) { 0255 setting.insert(QLatin1String(NM_SETTING_ADSL_VCI), vci()); 0256 } 0257 0258 return setting; 0259 } 0260 0261 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::AdslSetting &setting) 0262 { 0263 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0264 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0265 0266 dbg.nospace() << NM_SETTING_ADSL_USERNAME << ": " << setting.username() << '\n'; 0267 dbg.nospace() << NM_SETTING_ADSL_PASSWORD << ": " << setting.password() << '\n'; 0268 dbg.nospace() << NM_SETTING_ADSL_PASSWORD_FLAGS << ": " << setting.passwordFlags() << '\n'; 0269 dbg.nospace() << NM_SETTING_ADSL_PROTOCOL << ": " << setting.protocol() << '\n'; 0270 dbg.nospace() << NM_SETTING_ADSL_ENCAPSULATION << ": " << setting.encapsulation() << '\n'; 0271 dbg.nospace() << NM_SETTING_ADSL_VPI << ": " << setting.vpi() << '\n'; 0272 dbg.nospace() << NM_SETTING_ADSL_VCI << ": " << setting.vci() << '\n'; 0273 0274 return dbg.maybeSpace(); 0275 }