Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.2
NetworkManager-kde4
r1049067-vpn-secrets-prompt.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File r1049067-vpn-secrets-prompt.diff of Package NetworkManager-kde4
Index: libs/internals/connectionpersistence.cpp =================================================================== --- libs/internals/connectionpersistence.cpp (revision 1049066) +++ libs/internals/connectionpersistence.cpp (revision 1049067) @@ -252,6 +252,7 @@ kDebug() << "Reading all entries for connection"; QMap<QString,QMap<QString,QString> > entries; QString key = m_connection->uuid() + QLatin1String("*"); + bool missingEntry = false; if (wallet->readMapList(key, entries) == 0) { foreach (Setting * setting, m_connection->settings()) { @@ -259,14 +260,23 @@ if (entries.contains(settingKey)) { QMap<QString,QString> settingSecrets = entries.value(settingKey); + if (settingSecrets.isEmpty()) { + kDebug() << "no secrets found for" << settingKey; + missingEntry = true; + break; + } kDebug() << settingSecrets; persistenceFor(setting)->restoreSecrets(settingSecrets); + } else if (setting->hasSecrets()) { + missingEntry = true; } } kDebug() << "Check connection:"; kDebug() << "secretsAvailable:" << m_connection->secretsAvailable(); - - emit loadSecretsResult(EnumError::NoError); + if (missingEntry) + emit loadSecretsResult(EnumError::MissingContents); + else + emit loadSecretsResult(EnumError::NoError); } else { kDebug() << "Wallet::readEntryList for :" << key << " failed"; emit loadSecretsResult(EnumError::MissingContents); Index: libs/ui/connectionsecretsjob.cpp =================================================================== --- libs/ui/connectionsecretsjob.cpp (revision 1049066) +++ libs/ui/connectionsecretsjob.cpp (revision 1049067) @@ -39,6 +39,7 @@ #include <KDialog> #include <KLocale> +#include <KServiceTypeTrader> #include <KStandardDirs> #include "802_11_wirelesswidget.h" @@ -53,8 +54,11 @@ #include "security/securitywidget.h" #include "security/securitywired8021x.h" +#include "settings/vpn.h" + #include "knmserviceprefs.h" #include "connection.h" +#include "vpnuiplugin.h" ConnectionSecretsJob::ConnectionSecretsJob(Knm::Connection* connection, const QString &settingName, const QStringList& secrets, bool requestNew, const QDBusMessage& request) @@ -131,7 +135,20 @@ } else if ( mSettingName == QLatin1String(NM_SETTING_SERIAL_SETTING_NAME)) { m_settingWidget = new PppWidget(m_connection, 0); } else if ( mSettingName == QLatin1String(NM_SETTING_VPN_SETTING_NAME)) { - // not supported yet, figure out the type of the vpn plugin, load it and its m_settingWidgetget + // get the type of vpn service + QString configFile = KStandardDirs::locate("data", + Knm::ConnectionPersistence::CONNECTION_PERSISTENCE_PATH + m_connection->uuid()); + m_connectionPersistence = new Knm::ConnectionPersistence(m_connection, + KSharedConfig::openConfig(configFile, KConfig::NoGlobals), + (Knm::ConnectionPersistence::SecretStorageMode)KNetworkManagerServicePrefs::self()->secretStorageMode()); + m_connectionPersistence->load(); + Knm::VpnSetting * vpnSetting = static_cast<Knm::VpnSetting*>(m_connection->setting(Knm::Setting::Vpn)); + // load the plugin and get its setting widget + QString error; + VpnUiPlugin * uiPlugin = KServiceTypeTrader::createInstanceFromQuery<VpnUiPlugin>( QString::fromLatin1( "NetworkManagement/VpnUiPlugin" ), QString::fromLatin1( "[X-KDE-PluginInfo-Name]=='%1'" ).arg(vpnSetting->pluginName() ), this, QVariantList(), &error ); + if (uiPlugin && error.isEmpty()) { + m_settingWidget= uiPlugin->widget(m_connection, 0); + } } else if ( mSettingName == QLatin1String(NM_SETTING_WIRED_SETTING_NAME)) { m_settingWidget = new WiredWidget(m_connection, 0); } else if ( mSettingName == QLatin1String(NM_SETTING_WIRELESS_SECURITY_SETTING_NAME)) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor