From b99db6aa82bcdba086ec51c292415b1a2bdb8cf7 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Mon, 10 Sep 2012 17:44:39 -0500 Subject: [PATCH] Reactivate strongswan VPN plugin --- tdenetworkmanager/vpn-plugins/CMakeLists.txt | 2 +- .../strongswan/{authors => AUTHORS} | 1 + .../vpn-plugins/strongswan/CMakeLists.txt | 14 +++ ...trongswan.cpp => tdenetman-strongswan.cpp} | 91 +++++++++++++------ ...er-strongswan.h => tdenetman-strongswan.h} | 38 ++++---- ...n.desktop => tdenetman_strongswan.desktop} | 8 +- 6 files changed, 103 insertions(+), 51 deletions(-) rename tdenetworkmanager/vpn-plugins/strongswan/{authors => AUTHORS} (58%) create mode 100644 tdenetworkmanager/vpn-plugins/strongswan/CMakeLists.txt rename tdenetworkmanager/vpn-plugins/strongswan/src/{knetworkmanager-strongswan.cpp => tdenetman-strongswan.cpp} (67%) rename tdenetworkmanager/vpn-plugins/strongswan/src/{knetworkmanager-strongswan.h => tdenetman-strongswan.h} (76%) rename tdenetworkmanager/vpn-plugins/strongswan/{knetworkmanager_strongswan.desktop => tdenetman_strongswan.desktop} (70%) diff --git a/tdenetworkmanager/vpn-plugins/CMakeLists.txt b/tdenetworkmanager/vpn-plugins/CMakeLists.txt index 2643aad..d5f6e8e 100644 --- a/tdenetworkmanager/vpn-plugins/CMakeLists.txt +++ b/tdenetworkmanager/vpn-plugins/CMakeLists.txt @@ -11,5 +11,5 @@ add_subdirectory( openvpn ) add_subdirectory( pptp ) -# add_subdirectory( strongswan ) +add_subdirectory( strongswan ) add_subdirectory( vpnc ) diff --git a/tdenetworkmanager/vpn-plugins/strongswan/authors b/tdenetworkmanager/vpn-plugins/strongswan/AUTHORS similarity index 58% rename from tdenetworkmanager/vpn-plugins/strongswan/authors rename to tdenetworkmanager/vpn-plugins/strongswan/AUTHORS index 06c50d3..242ed99 100644 --- a/tdenetworkmanager/vpn-plugins/strongswan/authors +++ b/tdenetworkmanager/vpn-plugins/strongswan/AUTHORS @@ -1 +1,2 @@ +Timothy Pearson Thomas Kallenberg , diff --git a/tdenetworkmanager/vpn-plugins/strongswan/CMakeLists.txt b/tdenetworkmanager/vpn-plugins/strongswan/CMakeLists.txt new file mode 100644 index 0000000..05b45b3 --- /dev/null +++ b/tdenetworkmanager/vpn-plugins/strongswan/CMakeLists.txt @@ -0,0 +1,14 @@ +################################################# +# +# (C) 2012 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +add_subdirectory( src ) + +install( FILES tdenetman_strongswan.desktop DESTINATION ${SERVICES_INSTALL_DIR} ) diff --git a/tdenetworkmanager/vpn-plugins/strongswan/src/knetworkmanager-strongswan.cpp b/tdenetworkmanager/vpn-plugins/strongswan/src/tdenetman-strongswan.cpp similarity index 67% rename from tdenetworkmanager/vpn-plugins/strongswan/src/knetworkmanager-strongswan.cpp rename to tdenetworkmanager/vpn-plugins/strongswan/src/tdenetman-strongswan.cpp index 7abe62d..a0826bd 100644 --- a/tdenetworkmanager/vpn-plugins/strongswan/src/knetworkmanager-strongswan.cpp +++ b/tdenetworkmanager/vpn-plugins/strongswan/src/tdenetman-strongswan.cpp @@ -35,10 +35,10 @@ #include #include -#include "knetworkmanager-strongswan.h" +#include "tdenetman-strongswan.h" typedef KGenericFactory StrongswanPluginFactory; -K_EXPORT_COMPONENT_FACTORY( knetworkmanager_strongswan, StrongswanPluginFactory("knetworkmanager_strongswan")); +K_EXPORT_COMPONENT_FACTORY( tdenetman_strongswan, StrongswanPluginFactory("tdenetman_strongswan")); StrongswanPlugin::StrongswanPlugin(TQObject* parent, const char* name, const TQStringList& args) @@ -85,7 +85,7 @@ void StrongswanConfig::languageChange() } - // usercert agent password userkey +// usercert agent password userkey StrongswanConnectionType::CONNECTIONTYPE StrongswanConnectionType::mapString2ConnectionType(int prop) { if (prop == 0) @@ -113,8 +113,11 @@ int StrongswanConnectionType::mapConnectionType2String(CONNECTIONTYPE connType) return -1; } -void StrongswanConfig::setVPNData(const TQStringList& routes, const TQMap& properties) +void StrongswanConfig::setVPNData(TDENetworkSingleRouteConfigurationList& routes, TDENetworkSettingsMap& properties, TDENetworkSettingsMap& secrets) { + m_vpnProperties = properties; + m_vpnSecrets = secrets; + // fill up our inputfields (only textfields atm) for(TQMap::ConstIterator it = properties.begin(); it != properties.end(); ++it) { @@ -154,38 +157,66 @@ void StrongswanConfig::setVPNData(const TQStringList& routes, const TQMap StrongswanConfig::getVPNProperties() +TDENetworkSettingsMap StrongswanConfig::getVPNProperties() { - // build a StingList of properties - TQMap strlist; + // Build a list of properties + m_vpnProperties.insert("gateway", TQString(_strongswanWidget->gateway->text())); + m_vpnProperties.insert("certificate", TQString(_strongswanWidget->certificate->url())); + m_vpnProperties.insert("username", TQString(_strongswanWidget->username->text())); + m_vpnProperties.insert("method", TQString::number(StrongswanConnectionType::mapConnectionType2String((StrongswanConnectionType::CONNECTIONTYPE)_strongswanWidget->authtype->currentItem()))); + + if (_strongswanWidget->chkUDPenc->isChecked()) { + m_vpnProperties.insert("encap", TQString("yes")); + } + else { + m_vpnProperties.remove("encap"); + } - strlist.insert("gateway", TQString(_strongswanWidget->gateway->text())); - strlist.insert("certificate", TQString(_strongswanWidget->certificate->url())); - strlist.insert("username", TQString(_strongswanWidget->username->text())); - strlist.insert("method", - TQString::number(StrongswanConnectionType::mapConnectionType2String((StrongswanConnectionType::CONNECTIONTYPE)_strongswanWidget->authtype->currentItem()))); + if (_strongswanWidget->chkIPcomp->isChecked()) { + m_vpnProperties.insert("ipcomp", TQString("yes")); + } + else { + m_vpnProperties.remove("ipcomp"); + } - if (_strongswanWidget->chkUDPenc->isChecked()) - strlist.insert("encap", TQString("yes")); + if (_strongswanWidget->chkIPinner->isChecked()) { + m_vpnProperties.insert("virtual", TQString("yes")); + } + else { + m_vpnProperties.remove("virtual"); + } - if (_strongswanWidget->chkIPcomp->isChecked()) - strlist.insert("ipcomp", TQString("yes")); + return m_vpnProperties; +} - if (_strongswanWidget->chkIPinner->isChecked()) - strlist.insert("virtual", TQString("yes")); +TDENetworkSettingsMap StrongswanConfig::getVPNSecrets() { + // Build a list of secrets + // FIXME - return strlist; + return m_vpnSecrets; } -TQStringList StrongswanConfig::getVPNRoutes() +TDENetworkSingleRouteConfigurationList StrongswanConfig::getVPNRoutes() { + TDENetworkSingleRouteConfigurationList ret; +#if 0 TQStringList strlist; - /*if(_strongswanWidget->chkIPAdresses->isChecked()) - { + if(_strongswanWidget->chkIPAdresses->isChecked()) { strlist = TQStringList::split(" ", _strongswanWidget->routes->text()); } - */ - return strlist; + + for (TQStringList::Iterator it = strlist.begin(); it != strlist.end(); ++it) { + TQStringList pieces = TQStringList::split("/", (*it)); + TDENetworkSingleRouteConfiguration routeconfig; + routeconfig.ipAddress.setAddress(pieces[0]); + if (pieces.count() > 1) { + routeconfig.networkMask.fromCIDRMask(pieces[1].toUInt()); + } + ret.append(routeconfig); + } +#endif + + return ret; } @@ -218,7 +249,7 @@ StrongswanAuthentication::~StrongswanAuthentication() } -TQMap StrongswanAuthentication::getPasswords() +TDENetworkSettingsMap StrongswanAuthentication::getPasswords() { TQMap pwds; pwds.insert("user", TQString(_strongswanAuth->username->text())); @@ -226,9 +257,11 @@ TQMap StrongswanAuthentication::getPasswords() return pwds; } -void StrongswanAuthentication::setPasswords(TQString name, TQString value) { - if (name == TQString("password")) { +void StrongswanAuthentication::setPasswords(TDENetworkSettingsMap secrets) { + if (secrets.contains("password")) { _strongswanAuth->password->erase(); - _strongswanAuth->password->insert(value); + _strongswanAuth->password->insert(secrets["password"]); } -} \ No newline at end of file +} + +#include "tdenetman-strongswan.moc" \ No newline at end of file diff --git a/tdenetworkmanager/vpn-plugins/strongswan/src/knetworkmanager-strongswan.h b/tdenetworkmanager/vpn-plugins/strongswan/src/tdenetman-strongswan.h similarity index 76% rename from tdenetworkmanager/vpn-plugins/strongswan/src/knetworkmanager-strongswan.h rename to tdenetworkmanager/vpn-plugins/strongswan/src/tdenetman-strongswan.h index 341d25d..c1229ab 100644 --- a/tdenetworkmanager/vpn-plugins/strongswan/src/knetworkmanager-strongswan.h +++ b/tdenetworkmanager/vpn-plugins/strongswan/src/tdenetman-strongswan.h @@ -30,7 +30,7 @@ #include #include -#include "knetworkmanager-vpnplugin.h" +#include "tdenetman-vpnplugin.h" #include "strongswanprop.h" #include "strongswanauth.h" @@ -48,17 +48,17 @@ class StrongswanPlugin : public VPNPlugin class StrongswanConnectionType { - public: - enum CONNECTIONTYPE - { - UNKNOWN = -1 - , psk = 0 - , key - , agent - }; - - static CONNECTIONTYPE mapString2ConnectionType(int string); - static int mapConnectionType2String(CONNECTIONTYPE connectionType); + public: + enum CONNECTIONTYPE + { + UNKNOWN = -1 + , psk = 0 + , key + , agent + }; + + static CONNECTIONTYPE mapString2ConnectionType(int string); + static int mapConnectionType2String(CONNECTIONTYPE connectionType); }; class StrongswanConfig : public VPNConfigWidget @@ -66,9 +66,10 @@ class StrongswanConfig : public VPNConfigWidget Q_OBJECT public: - void setVPNData(const TQStringList& routes, const TQMap& properties); - TQMap getVPNProperties(); - TQStringList getVPNRoutes(); + void setVPNData(TDENetworkSingleRouteConfigurationList& routes, TDENetworkSettingsMap& properties, TDENetworkSettingsMap& secrets); + TDENetworkSettingsMap getVPNProperties(); + TDENetworkSettingsMap getVPNSecrets(); + TDENetworkSingleRouteConfigurationList getVPNRoutes(); bool hasChanged(); bool isValid(TQStringList& ); @@ -78,6 +79,9 @@ class StrongswanConfig : public VPNConfigWidget private: StrongswanConfigWidget* _strongswanWidget; + TDENetworkSettingsMap m_vpnProperties; + TDENetworkSettingsMap m_vpnSecrets; + protected slots: void languageChange(); }; @@ -89,8 +93,8 @@ class StrongswanAuthentication : public VPNAuthenticationWidget public: StrongswanAuthentication(TQWidget* parent = NULL, char* name = NULL); ~StrongswanAuthentication(); - TQMap getPasswords(); - void setPasswords(TQString name, TQString value); + TDENetworkSettingsMap getPasswords(); + void setPasswords(TDENetworkSettingsMap secrets); private: StrongswanAuthenticationWidget* _strongswanAuth; diff --git a/tdenetworkmanager/vpn-plugins/strongswan/knetworkmanager_strongswan.desktop b/tdenetworkmanager/vpn-plugins/strongswan/tdenetman_strongswan.desktop similarity index 70% rename from tdenetworkmanager/vpn-plugins/strongswan/knetworkmanager_strongswan.desktop rename to tdenetworkmanager/vpn-plugins/strongswan/tdenetman_strongswan.desktop index 2ea51d3..7026d04 100644 --- a/tdenetworkmanager/vpn-plugins/strongswan/knetworkmanager_strongswan.desktop +++ b/tdenetworkmanager/vpn-plugins/strongswan/tdenetman_strongswan.desktop @@ -3,11 +3,11 @@ Encoding=UTF-8 Type=Service Icon= ServiceTypes=TDENetworkManager/VPNPlugin -X-TDE-Library=knetworkmanager_strongswan +X-TDE-Library=tdenetman_strongswan X-NetworkManager-Services=strongswan -X-TDE-PluginInfo-Author=Thomas Kallenberg -X-TDE-PluginInfo-Email=tkallenb@hsr.ch -X-TDE-PluginInfo-Name=knetworkmanager_strongswan +X-TDE-PluginInfo-Author=Timothy Pearson +X-TDE-PluginInfo-Email=kb9vqf@pearsoncomputing.net +X-TDE-PluginInfo-Name=tdenetman_strongswan X-TDE-PluginInfo-Version=0.1 X-TDE-PluginInfo-Website= X-TDE-PluginInfo-Category=VPNService