tdehw: Check /usr/lib/NetworkManager for VPN service definitions.

It's not exactly clear when this change occurred, but the VPN service
definitions (plugins) can now be stored in /usr/lib/NetworkManager.
The old path is still searched to keep compatibility.

This fixes TDE/tdenetworkmanager#5 which details how TDENetworkManager
is unable to find any VPN plugins despite them being installed and
accessible from other NM applets.

Signed-off-by: mio <stigma@disroot.org>
pull/338/head
mio 5 months ago
parent 0781a919df
commit 33455e4812

@ -1922,7 +1922,7 @@ void TDENetworkConnectionManager_BackendNM::loadConnectionInformation() {
}
#ifdef DEBUG_NETWORK_MANAGER_COMMUNICATIONS
printf("[network-manager comm debug] %s\n", (*it).data()); fflush(stdout);
printf("[network-manager comm debug] %s\n", (*it).local8Bit().data()); fflush(stdout);
#endif // DEBUG_NETWORK_MANAGER_COMMUNICATIONS
// Obtain connection settings from the path specified
@ -4941,34 +4941,39 @@ TDENetworkVPNTypeList TDENetworkConnectionManager_BackendNM::availableVPNTypes()
TDENetworkVPNTypeList ret;
// Query NetworkManager to verify plugin availability before claiming support for a VPN type
TQDir serviceDir(NM_PLUGIN_SERVICE_DIR, TQString(), TQDir::Name|TQDir::IgnoreCase, TQDir::Files);
TQStringList services = serviceDir.entryList ().grep (".name", true);
if (services.count () > 0) {
// read in all available Services
for (TQStringList::Iterator i = services.begin (); i != services.end (); ++i) {
TQString service = NM_PLUGIN_SERVICE_DIR + TQString ("/") + *i;
TDEConfig* tdeconfig = new TDEConfig (service, true, true, "config");
tdeconfig->setGroup ("VPN Connection");
// Look in the LIB directory first, since that seems to be where plugins are stored nowadays.
TQDir libServiceDir(NM_PLUGIN_SERVICE_DIR_LIB, "*.name", TQDir::Name | TQDir::IgnoreCase, TQDir::Files);
TQDir etcServiceDir(NM_PLUGIN_SERVICE_DIR_ETC, "*.name", TQDir::Name | TQDir::IgnoreCase, TQDir::Files);
TQStringList services = libServiceDir.entryList() + etcServiceDir.entryList();
size_t libEntryCount = libServiceDir.count();
// Read in all services.
for (size_t i = 0; i < services.count(); ++i)
{
TQString fileName = TQString("%1/").arg(i < libEntryCount ? NM_PLUGIN_SERVICE_DIR_LIB : NM_PLUGIN_SERVICE_DIR_ETC) + services[i];
TDEConfig *config = new TDEConfig(fileName, true, true, "config");
config->setGroup("VPN Connection");
TQString serviceName = tdeconfig->readEntry("name", TQString());
TQString serviceName = config->readEntry("name", TQString(""));
serviceName = serviceName.lower();
if (serviceName == "openvpn") {
if (serviceName == "openvpn")
{
ret.append(TDENetworkVPNType::OpenVPN);
}
if (serviceName == "pptp") {
if (serviceName == "pptp")
{
ret.append(TDENetworkVPNType::PPTP);
}
if (serviceName == "strongswan") {
if (serviceName == "strongswan")
{
ret.append(TDENetworkVPNType::StrongSwan);
}
if (serviceName == "vpnc") {
if (serviceName == "vpnc")
{
ret.append(TDENetworkVPNType::VPNC);
}
delete tdeconfig;
}
delete config;
}
return ret;

@ -142,7 +142,8 @@
#define NM_802_11_DEVICE_CAP_WPA 0x10
#define NM_802_11_DEVICE_CAP_RSN 0x20
//====================================================================================================
#define NM_PLUGIN_SERVICE_DIR "/etc/NetworkManager/VPN"
#define NM_PLUGIN_SERVICE_DIR_ETC "/etc/NetworkManager/VPN" // old plugin location
#define NM_PLUGIN_SERVICE_DIR_LIB "/usr/lib/NetworkManager/VPN" // new plugin location
//====================================================================================================
//====================================================================================================

Loading…
Cancel
Save