File indexing completed on 2024-04-14 03:57:38
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 "vpnsetting.h" 0008 #include "nmdebug.h" 0009 #include "vpnsetting_p.h" 0010 0011 NetworkManager::VpnSettingPrivate::VpnSettingPrivate() 0012 : name(NM_SETTING_VPN_SETTING_NAME) 0013 , persistent(false) 0014 , timeout(0) 0015 { 0016 } 0017 0018 NetworkManager::VpnSetting::VpnSetting() 0019 : Setting(Setting::Vpn) 0020 , d_ptr(new VpnSettingPrivate()) 0021 { 0022 } 0023 0024 NetworkManager::VpnSetting::VpnSetting(const Ptr &other) 0025 : Setting(other) 0026 , d_ptr(new VpnSettingPrivate()) 0027 { 0028 setServiceType(other->serviceType()); 0029 setUsername(other->username()); 0030 setData(other->data()); 0031 setSecrets(other->secrets()); 0032 setPersistent(other->persistent()); 0033 setTimeout(other->timeout()); 0034 } 0035 0036 NetworkManager::VpnSetting::~VpnSetting() 0037 { 0038 delete d_ptr; 0039 } 0040 0041 QString NetworkManager::VpnSetting::name() const 0042 { 0043 Q_D(const VpnSetting); 0044 0045 return d->name; 0046 } 0047 0048 bool NetworkManager::VpnSetting::persistent() const 0049 { 0050 Q_D(const VpnSetting); 0051 0052 return d->persistent; 0053 } 0054 0055 void NetworkManager::VpnSetting::setPersistent(bool persistent) 0056 { 0057 Q_D(VpnSetting); 0058 0059 d->persistent = persistent; 0060 } 0061 0062 uint NetworkManager::VpnSetting::timeout() const 0063 { 0064 Q_D(const VpnSetting); 0065 0066 return d->timeout; 0067 } 0068 0069 void NetworkManager::VpnSetting::setTimeout(uint timeout) 0070 { 0071 Q_D(VpnSetting); 0072 0073 d->timeout = timeout; 0074 } 0075 0076 void NetworkManager::VpnSetting::setServiceType(const QString &type) 0077 { 0078 Q_D(VpnSetting); 0079 0080 d->serviceType = type; 0081 } 0082 0083 QString NetworkManager::VpnSetting::serviceType() const 0084 { 0085 Q_D(const VpnSetting); 0086 0087 return d->serviceType; 0088 } 0089 0090 void NetworkManager::VpnSetting::setUsername(const QString &username) 0091 { 0092 Q_D(VpnSetting); 0093 0094 d->username = username; 0095 } 0096 0097 QString NetworkManager::VpnSetting::username() const 0098 { 0099 Q_D(const VpnSetting); 0100 0101 return d->username; 0102 } 0103 0104 void NetworkManager::VpnSetting::setData(const NMStringMap &data) 0105 { 0106 Q_D(VpnSetting); 0107 0108 d->data = data; 0109 } 0110 0111 NMStringMap NetworkManager::VpnSetting::data() const 0112 { 0113 Q_D(const VpnSetting); 0114 0115 return d->data; 0116 } 0117 0118 void NetworkManager::VpnSetting::setSecrets(const NMStringMap &secrets) 0119 { 0120 Q_D(VpnSetting); 0121 0122 d->secrets = secrets; 0123 } 0124 0125 NMStringMap NetworkManager::VpnSetting::secrets() const 0126 { 0127 Q_D(const VpnSetting); 0128 0129 return d->secrets; 0130 } 0131 0132 void NetworkManager::VpnSetting::secretsFromMap(const QVariantMap &secrets) 0133 { 0134 if (secrets.contains(QLatin1String(NM_SETTING_VPN_SECRETS))) { 0135 setSecrets(qdbus_cast<NMStringMap>(secrets.value(QLatin1String(NM_SETTING_VPN_SECRETS)))); 0136 } 0137 } 0138 0139 QVariantMap NetworkManager::VpnSetting::secretsToMap() const 0140 { 0141 QVariantMap secretsMap; 0142 if (!secrets().isEmpty()) { 0143 secretsMap.insert(QLatin1String(NM_SETTING_VPN_SECRETS), QVariant::fromValue<NMStringMap>(secrets())); 0144 } 0145 0146 // qCDebug(NMQT) << secretsMap; 0147 return secretsMap; 0148 } 0149 0150 void NetworkManager::VpnSetting::fromMap(const QVariantMap &setting) 0151 { 0152 if (setting.contains(QLatin1String(NM_SETTING_VPN_SERVICE_TYPE))) { 0153 setServiceType(setting.value(QLatin1String(NM_SETTING_VPN_SERVICE_TYPE)).toString()); 0154 } 0155 0156 if (setting.contains(QLatin1String(NM_SETTING_VPN_USER_NAME))) { 0157 setUsername(setting.value(QLatin1String(NM_SETTING_VPN_USER_NAME)).toString()); 0158 } 0159 0160 if (setting.contains(QLatin1String(NM_SETTING_VPN_DATA))) { 0161 setData(qdbus_cast<NMStringMap>(setting.value(QLatin1String(NM_SETTING_VPN_DATA)))); 0162 } 0163 0164 if (setting.contains(QLatin1String(NM_SETTING_VPN_SECRETS))) { 0165 setSecrets(qdbus_cast<NMStringMap>(setting.value(QLatin1String(NM_SETTING_VPN_SECRETS)))); 0166 } 0167 0168 if (setting.contains(QLatin1String(NM_SETTING_VPN_PERSISTENT))) { 0169 setPersistent(setting.value(QLatin1String(NM_SETTING_VPN_PERSISTENT)).toBool()); 0170 } 0171 0172 if (setting.contains(QLatin1String(NM_SETTING_VPN_TIMEOUT))) { 0173 setTimeout(setting.value(QLatin1String(NM_SETTING_VPN_TIMEOUT)).toUInt()); 0174 } 0175 } 0176 0177 QVariantMap NetworkManager::VpnSetting::toMap() const 0178 { 0179 QVariantMap setting; 0180 0181 if (!serviceType().isEmpty()) { 0182 setting.insert(QLatin1String(NM_SETTING_VPN_SERVICE_TYPE), serviceType()); 0183 } 0184 0185 if (!username().isEmpty()) { 0186 setting.insert(QLatin1String(NM_SETTING_VPN_USER_NAME), username()); 0187 } 0188 0189 if (!data().isEmpty()) { 0190 setting.insert(QLatin1String(NM_SETTING_VPN_DATA), QVariant::fromValue<NMStringMap>(data())); 0191 } 0192 0193 if (!secrets().isEmpty()) { 0194 setting.insert(QLatin1String(NM_SETTING_VPN_SECRETS), QVariant::fromValue<NMStringMap>(secrets())); 0195 } 0196 0197 setting.insert(QLatin1String(NM_SETTING_VPN_PERSISTENT), persistent()); 0198 setting.insert(QLatin1String(NM_SETTING_VPN_TIMEOUT), timeout()); 0199 0200 return setting; 0201 } 0202 0203 void NetworkManager::VpnSetting::secretsFromStringMap(const NMStringMap &map) 0204 { 0205 Q_D(VpnSetting); 0206 0207 if (map.contains(QLatin1String("VpnSecrets"))) { 0208 const QStringList list = map.value(QLatin1String("VpnSecrets")).split("%SEP%"); 0209 if (list.count() % 2 == 0) { 0210 for (int i = 0; i < list.count(); i += 2) { 0211 if (d->secrets.contains(list[i])) { 0212 d->secrets.remove(list[i]); 0213 } 0214 d->secrets.insert(list[i], list[i + 1]); 0215 } 0216 } 0217 } 0218 } 0219 0220 NMStringMap NetworkManager::VpnSetting::secretsToStringMap() const 0221 { 0222 NMStringMap ret; 0223 QStringList list; 0224 QMap<QString, QString>::ConstIterator i = secrets().constBegin(); 0225 while (i != secrets().constEnd()) { 0226 list << i.key() << i.value(); 0227 ++i; 0228 } 0229 0230 ret.insert(QLatin1String("VpnSecrets"), list.join("%SEP%")); 0231 return ret; 0232 } 0233 0234 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::VpnSetting &setting) 0235 { 0236 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0237 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0238 0239 dbg.nospace() << NM_SETTING_VPN_SERVICE_TYPE << ": " << setting.serviceType() << '\n'; 0240 dbg.nospace() << NM_SETTING_VPN_USER_NAME << ": " << setting.username() << '\n'; 0241 dbg.nospace() << NM_SETTING_VPN_DATA << ": " << setting.data() << '\n'; 0242 dbg.nospace() << NM_SETTING_VPN_PERSISTENT << ": " << setting.persistent() << '\n'; 0243 dbg.nospace() << NM_SETTING_VPN_TIMEOUT << ": " << setting.timeout() << '\n'; 0244 0245 return dbg.maybeSpace(); 0246 }