1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
// This file is generated by kconfig_compiler from vpn.kcfg.
// All changes you do to this file will be lost.
#include "vpnpersistence.h"
#include <KUser>
#include "vpn.h"
using namespace Knm;
VpnPersistence::VpnPersistence(VpnSetting * setting, KSharedConfig::Ptr config, ConnectionPersistence::SecretStorageMode mode) : SettingPersistence(setting, config, mode)
{
}
VpnPersistence::~VpnPersistence()
{
}
void VpnPersistence::load()
{
VpnSetting * setting = static_cast<VpnSetting *>(m_setting);
setting->setServiceType(m_config->readEntry("ServiceType", ""));
setting->setData(stringMapFromStringList(m_config->readEntry("Data", QStringList())));
setting->setUserName(KUser().loginName());
// SECRET
if (m_storageMode != ConnectionPersistence::Secure) {
// the map is flattened to a list of key,value,key,value
setting->setVpnSecrets(variantMapFromStringList(m_config->readEntry("VpnSecrets", QStringList())));
}
setting->setPluginName(m_config->readEntry("PluginName", ""));
setting->setInitialized();
}
void VpnPersistence::save()
{
VpnSetting * setting = static_cast<VpnSetting *>(m_setting);
m_config->writeEntry("ServiceType", setting->serviceType());
m_config->writeEntry("Data", stringMapToStringList(setting->data()));
// SECRET
if (m_storageMode != ConnectionPersistence::Secure) {
m_config->writeEntry("VpnSecrets", variantMapToStringList(setting->vpnSecrets()));
}
m_config->writeEntry("PluginName", setting->pluginName());
}
QVariantMap VpnPersistence::variantMapFromStringList(const QStringList & list)
{
QVariantMap secretsMap;
if (list.count() % 2 == 0) {
for ( int i = 0; i < list.count(); i += 2 ) {
secretsMap.insert( list[i], list[i+1] );
}
}
return secretsMap;
}
QStringList VpnPersistence::variantMapToStringList(const QVariantMap & map)
{
QStringList rawSecrets;
QMapIterator<QString,QVariant> i(map);
while (i.hasNext()) {
i.next();
rawSecrets << i.key() << i.value().toString();
}
return rawSecrets;
}
QStringMap VpnPersistence::stringMapFromStringList(const QStringList & list)
{
QStringMap map;
if (list.count() % 2 == 0) {
for ( int i = 0; i < list.count(); i += 2 ) {
map.insert( list[i], list[i+1] );
}
}
return map;
}
QStringList VpnPersistence::stringMapToStringList(const QStringMap & map)
{
QStringList rawSecrets;
QStringMapIterator i(map);
while (i.hasNext()) {
i.next();
rawSecrets << i.key() << i.value();
}
return rawSecrets;
}
QMap<QString,QString> VpnPersistence::secrets() const
{
VpnSetting * setting = static_cast<VpnSetting *>(m_setting);
QMap<QString,QString> map;
map.insert(QLatin1String("VpnSecrets"), variantMapToStringList(setting->vpnSecrets()).join(QLatin1String("%SEP%")));
return map;
}
void VpnPersistence::restoreSecrets(QMap<QString,QString> secrets) const
{
if (m_storageMode == ConnectionPersistence::Secure) {
VpnSetting * setting = static_cast<VpnSetting *>(m_setting);
setting->setVpnSecrets(variantMapFromStringList(secrets.value("VpnSecrets").split("%SEP%")));
setting->setSecretsAvailable(true);
}
}
|