diff --git a/autotests/settings/wireguardsettingtest.cpp b/autotests/settings/wireguardsettingtest.cpp index 4861842..2a4a833 100644 --- a/autotests/settings/wireguardsettingtest.cpp +++ b/autotests/settings/wireguardsettingtest.cpp @@ -1,132 +1,132 @@ /* Copyright 2019 Jan Grulich This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include "wireguardsettingtest.h" #include "settings/wireguardsetting.h" #include #include #if !NM_CHECK_VERSION(1, 16, 0) #define NM_SETTING_WIREGUARD_FWMARK "fwmark" #define NM_SETTING_WIREGUARD_LISTEN_PORT "listen-port" #define NM_SETTING_WIREGUARD_PRIVATE_KEY "private-key" #define NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS "private-key-flags" #define NM_SETTING_WIREGUARD_PEERS "peers" #define NM_SETTING_WIREGUARD_MTU "mtu" #define NM_SETTING_WIREGUARD_PEER_ROUTES "peer-routes" #endif -void WireguardSettingTest::testSetting_data() +void WireGuardSettingTest::testSetting_data() { QTest::addColumn("fwmark"); QTest::addColumn("listenPort"); QTest::addColumn("mtu"); QTest::addColumn("peerRoutes"); QTest::addColumn("peers"); QTest::addColumn("privateKey"); QTest::addColumn("privateKeyFlags"); NMVariantMapList peers; QVariantMap map; map.insert("foo", "bar"); peers << map; QVariantMap map1; map1.insert("foobar", "barfoo"); peers << map1; QTest::newRow("setting1") << (qint32) 100 // fwmark << (qint32) 101 // listenPort << (qint32) 102 // mtu << false // peerRoutes << peers // peers << QString("private-key") // privateKey << (quint32) 2; // privateKeyFlags } -void WireguardSettingTest::testSetting() +void WireGuardSettingTest::testSetting() { QFETCH(qint32, fwmark); QFETCH(qint32, listenPort); QFETCH(qint32, mtu); QFETCH(bool, peerRoutes); QFETCH(NMVariantMapList, peers); QFETCH(QString, privateKey); QFETCH(quint32, privateKeyFlags); QVariantMap map; map.insert(QLatin1String(NM_SETTING_WIREGUARD_FWMARK), fwmark); map.insert(QLatin1String(NM_SETTING_WIREGUARD_LISTEN_PORT), listenPort); map.insert(QLatin1String(NM_SETTING_WIREGUARD_MTU), mtu); map.insert(QLatin1String(NM_SETTING_WIREGUARD_PEER_ROUTES), peerRoutes); map.insert(QLatin1String(NM_SETTING_WIREGUARD_PEERS), QVariant::fromValue(peers)); map.insert(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY), privateKey); map.insert(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS), privateKeyFlags); - NetworkManager::WireguardSetting setting; + NetworkManager::WireGuardSetting setting; setting.fromMap(map); QVariantMap map1 = setting.toMap(); // Will fail if set some default values, because they are skipped in toMap() method QVariantMap::const_iterator it = map.constBegin(); while (it != map.constEnd()) { if (it.key() != QLatin1String(NM_SETTING_WIREGUARD_PEERS)) { QCOMPARE(it.value(), map1.value(it.key())); } ++it; } NMVariantMapList list = map.value(QLatin1String(NM_SETTING_WIREGUARD_PEERS)).value(); NMVariantMapList list1 = map1.value(QLatin1String(NM_SETTING_WIREGUARD_PEERS)).value(); QCOMPARE(list.count(), list1.count()); int comparedMaps = 0; for (int i = 0; i < list.size(); ++i) { QVariantMap varMap = list.at(i); for (int j = 0; j < list1.size(); ++j) { QVariantMap varMap1 = list1.at(j); QVariantMap::const_iterator ite = varMap.constBegin(); int comparedvals = 0; while (ite != varMap.constEnd()) { QVariantMap::const_iterator val1 = varMap1.constFind(ite.key()); if (val1 != varMap1.constEnd()) { if (varMap.value(ite.key()) == val1.value()) { ++comparedvals; } } ++ite; } if (comparedvals == varMap.size()) { comparedMaps++; } } } QCOMPARE(comparedMaps, list.count()); } -QTEST_MAIN(WireguardSettingTest) +QTEST_MAIN(WireGuardSettingTest) diff --git a/autotests/settings/wireguardsettingtest.h b/autotests/settings/wireguardsettingtest.h index 5adef89..3586942 100644 --- a/autotests/settings/wireguardsettingtest.h +++ b/autotests/settings/wireguardsettingtest.h @@ -1,37 +1,37 @@ /* Copyright 2019 Jan Grulich This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #ifndef NETWORKMANAGERQT_WIREGUARDSETTING_TEST_H #define NETWORKMANAGERQT_WIREGUARDSETTING_TEST_H #include -class WireguardSettingTest : public QObject +class WireGuardSettingTest : public QObject { Q_OBJECT private Q_SLOTS: void testSetting_data(); void testSetting(); }; #endif // NETWORKMANAGERQT_WIREGUARDSETTING_TEST_H diff --git a/src/settings/connectionsettings.cpp b/src/settings/connectionsettings.cpp index 8c332f6..ab3424a 100644 --- a/src/settings/connectionsettings.cpp +++ b/src/settings/connectionsettings.cpp @@ -1,1117 +1,1117 @@ /* Copyright 2012-2013 Jan Grulich Copyright 2013 Daniel Nicoletti This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include "connectionsettings.h" #include "connectionsettings_p.h" #include "wiredsetting.h" #include "olpcmeshsetting.h" #include "wirelesssetting.h" #include "wirelesssecuritysetting.h" #include "security8021xsetting.h" #include "adslsetting.h" #include "bluetoothsetting.h" #include "bondsetting.h" #include "bridgesetting.h" #include "bridgeportsetting.h" #include "gsmsetting.h" #include "cdmasetting.h" #include "infinibandsetting.h" #include "iptunnelsetting.h" #include "ipv4setting.h" #include "ipv6setting.h" #include "pppsetting.h" #include "pppoesetting.h" #include "serialsetting.h" #include "tunsetting.h" #include "vlansetting.h" #include "vpnsetting.h" #include "wimaxsetting.h" #include "wireguardsetting.h" #undef signals #include #if !NM_CHECK_VERSION(1, 6, 0) #define NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES "autoconnect-retries" #endif #if !NM_CHECK_VERSION(1, 16, 0) #define NM_SETTING_WIREGUARD_SETTING_NAME "wireguard" #endif #include "teamsetting.h" #include "genericsetting.h" #include namespace NetworkManager { extern int checkVersion(const int x, const int y, const int z); } NetworkManager::ConnectionSettingsPrivate::ConnectionSettingsPrivate(ConnectionSettings *q) : name(NM_SETTING_CONNECTION_SETTING_NAME) , uuid(QUuid().toString()) , type(ConnectionSettings::Wired) , autoconnect(true) , readOnly(false) , gatewayPingTimeout(0) , autoconnectPriority(0) , autoconnectRetries(-1) , autoconnectSlaves(ConnectionSettings::SlavesDefault) , lldp(ConnectionSettings::LldpDefault) , metered(ConnectionSettings::MeteredUnknown) , q_ptr(q) { } void NetworkManager::ConnectionSettingsPrivate::addSetting(const NetworkManager::Setting::Ptr &setting) { settings.push_back(setting); } void NetworkManager::ConnectionSettingsPrivate::clearSettings() { settings.clear(); } void NetworkManager::ConnectionSettingsPrivate::initSettings(NMBluetoothCapabilities bt_cap) { clearSettings(); switch (type) { case ConnectionSettings::Adsl: addSetting(Setting::Ptr(new AdslSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; case ConnectionSettings::Bond: addSetting(Setting::Ptr(new BondSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; case ConnectionSettings::Bluetooth: addSetting(Setting::Ptr(new BluetoothSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); //addSetting(Setting::Ptr(new Ipv6Setting())); if (bt_cap == NM_BT_CAPABILITY_DUN) { addSetting(Setting::Ptr(new GsmSetting())); addSetting(Setting::Ptr(new PppSetting())); addSetting(Setting::Ptr(new SerialSetting())); } break; case ConnectionSettings::Bridge: addSetting(Setting::Ptr(new BridgeSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; case ConnectionSettings::Cdma: addSetting(Setting::Ptr(new CdmaSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); if (NetworkManager::checkVersion(1, 0, 0)) { addSetting(Setting::Ptr(new Ipv6Setting())); } addSetting(Setting::Ptr(new PppSetting())); break; case ConnectionSettings::Gsm: addSetting(Setting::Ptr(new GsmSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); if (NetworkManager::checkVersion(1, 0, 0)) { addSetting(Setting::Ptr(new Ipv6Setting())); } addSetting(Setting::Ptr(new PppSetting())); break; case ConnectionSettings::Infiniband: addSetting(Setting::Ptr(new InfinibandSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; case ConnectionSettings::OLPCMesh: addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); addSetting(Setting::Ptr(new OlpcMeshSetting())); break; case ConnectionSettings::Pppoe: addSetting(Setting::Ptr(new Ipv4Setting())); //addSetting(new Ipv6Setting())); addSetting(Setting::Ptr(new PppSetting())); addSetting(Setting::Ptr(new PppoeSetting())); addSetting(Setting::Ptr(new WiredSetting())); break; case ConnectionSettings::Vlan: addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); addSetting(Setting::Ptr(new VlanSetting())); break; case ConnectionSettings::Vpn: addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); addSetting(Setting::Ptr(new VpnSetting())); break; case ConnectionSettings::Wimax: addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); addSetting(Setting::Ptr(new WimaxSetting())); break; case ConnectionSettings::Wired: addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); addSetting(Setting::Ptr(new Security8021xSetting())); addSetting(Setting::Ptr(new WiredSetting())); break; case ConnectionSettings::Wireless: addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); addSetting(Setting::Ptr(new Security8021xSetting())); addSetting(Setting::Ptr(new WirelessSetting())); addSetting(Setting::Ptr(new WirelessSecuritySetting())); break; case ConnectionSettings::Team: addSetting(Setting::Ptr(new TeamSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; case ConnectionSettings::Generic: addSetting(Setting::Ptr(new GenericSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; case ConnectionSettings::Tun: addSetting(Setting::Ptr(new TunSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; case ConnectionSettings::IpTunnel: addSetting(Setting::Ptr(new IpTunnelSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; - case ConnectionSettings::Wireguard: - addSetting(Setting::Ptr(new WireguardSetting())); + case ConnectionSettings::WireGuard: + addSetting(Setting::Ptr(new WireGuardSetting())); addSetting(Setting::Ptr(new Ipv4Setting())); addSetting(Setting::Ptr(new Ipv6Setting())); break; case ConnectionSettings::Unknown: default: break; } } void NetworkManager::ConnectionSettingsPrivate::initSettings(const NetworkManager::ConnectionSettings::Ptr &connectionSettings) { Q_Q(ConnectionSettings); clearSettings(); switch (type) { case ConnectionSettings::Adsl: addSetting(connectionSettings->setting(Setting::Adsl)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Bond: addSetting(connectionSettings->setting(Setting::Bond)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Bluetooth: addSetting(connectionSettings->setting(Setting::Bluetooth)); addSetting(connectionSettings->setting(Setting::Ipv4)); if (NetworkManager::checkVersion(1, 0, 0)) { addSetting(connectionSettings->setting(Setting::Ipv6)); } if (q->setting(Setting::Gsm) && q->setting(Setting::Ppp) && q->setting(Setting::Serial)) { addSetting(connectionSettings->setting(Setting::Gsm)); addSetting(connectionSettings->setting(Setting::Ppp)); addSetting(connectionSettings->setting(Setting::Serial)); } break; case ConnectionSettings::Bridge: addSetting(connectionSettings->setting(Setting::Bridge)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Cdma: addSetting(connectionSettings->setting(Setting::Cdma)); addSetting(connectionSettings->setting(Setting::Ipv4)); if (NetworkManager::checkVersion(1, 0, 0)) { addSetting(connectionSettings->setting(Setting::Ipv6)); } addSetting(connectionSettings->setting(Setting::Ppp)); break; case ConnectionSettings::Gsm: addSetting(connectionSettings->setting(Setting::Gsm)); addSetting(connectionSettings->setting(Setting::Ipv4)); if (NetworkManager::checkVersion(1, 0, 0)) { addSetting(connectionSettings->setting(Setting::Ipv6)); } addSetting(connectionSettings->setting(Setting::Ppp)); break; case ConnectionSettings::Infiniband: addSetting(connectionSettings->setting(Setting::Infiniband)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::OLPCMesh: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::OlpcMesh)); break; case ConnectionSettings::Pppoe: addSetting(connectionSettings->setting(Setting::Ipv4)); //addSetting(Ipv6Setting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Ppp)); addSetting(connectionSettings->setting(Setting::Pppoe)); addSetting(connectionSettings->setting(Setting::Wired)); break; case ConnectionSettings::Vlan: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Vlan)); break; case ConnectionSettings::Vpn: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Vpn)); break; case ConnectionSettings::Wimax: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Wimax)); break; case ConnectionSettings::Wired: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Security8021x)); addSetting(connectionSettings->setting(Setting::Wired)); break; case ConnectionSettings::Wireless: addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); addSetting(connectionSettings->setting(Setting::Security8021x)); addSetting(connectionSettings->setting(Setting::Wireless)); addSetting(connectionSettings->setting(Setting::WirelessSecurity)); break; case ConnectionSettings::Team: addSetting(connectionSettings->setting(Setting::Team)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Generic: addSetting(connectionSettings->setting(Setting::Generic)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Tun: addSetting(connectionSettings->setting(Setting::Tun)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::IpTunnel: addSetting(connectionSettings->setting(Setting::IpTunnel)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; - case ConnectionSettings::Wireguard: - addSetting(connectionSettings->setting(Setting::Wireguard)); + case ConnectionSettings::WireGuard: + addSetting(connectionSettings->setting(Setting::WireGuard)); addSetting(connectionSettings->setting(Setting::Ipv4)); addSetting(connectionSettings->setting(Setting::Ipv6)); break; case ConnectionSettings::Unknown: default: break; } } NetworkManager::ConnectionSettings::ConnectionType NetworkManager::ConnectionSettings::typeFromString(const QString &typeString) { ConnectionSettings::ConnectionType type = Wired; if (typeString == QLatin1String(NM_SETTING_ADSL_SETTING_NAME)) { type = Adsl; } else if (typeString == QLatin1String(NM_SETTING_BLUETOOTH_SETTING_NAME)) { type = Bluetooth; } else if (typeString == QLatin1String(NM_SETTING_BOND_SETTING_NAME)) { type = Bond; } else if (typeString == QLatin1String(NM_SETTING_BRIDGE_SETTING_NAME)) { type = Bridge; } else if (typeString == QLatin1String(NM_SETTING_CDMA_SETTING_NAME)) { type = Cdma; } else if (typeString == QLatin1String(NM_SETTING_GSM_SETTING_NAME)) { type = Gsm; } else if (typeString == QLatin1String(NM_SETTING_INFINIBAND_SETTING_NAME)) { type = Infiniband; } else if (typeString == QLatin1String(NM_SETTING_OLPC_MESH_SETTING_NAME)) { type = OLPCMesh; } else if (typeString == QLatin1String(NM_SETTING_PPPOE_SETTING_NAME)) { type = Pppoe; } else if (typeString == QLatin1String(NM_SETTING_VLAN_SETTING_NAME)) { type = Vlan; } else if (typeString == QLatin1String(NM_SETTING_VPN_SETTING_NAME)) { type = Vpn; } else if (typeString == QLatin1String(NM_SETTING_WIMAX_SETTING_NAME)) { type = Wimax; } else if (typeString == QLatin1String(NM_SETTING_WIRED_SETTING_NAME)) { type = Wired; } else if (typeString == QLatin1String(NM_SETTING_WIRELESS_SETTING_NAME)) { type = Wireless; } else if (typeString == QLatin1String(NM_SETTING_TEAM_SETTING_NAME)) { type = Team; } else if (typeString == QLatin1String(NM_SETTING_GENERIC_SETTING_NAME)) { type = Generic; } else if (typeString == QLatin1String(NM_SETTING_TUN_SETTING_NAME)) { type = Tun; } else if (typeString == QLatin1String(NM_SETTING_IP_TUNNEL_SETTING_NAME)) { type = IpTunnel; } else if (typeString == QLatin1String(NM_SETTING_WIREGUARD_SETTING_NAME)) { - type = Wireguard; + type = WireGuard; } return type; } QString NetworkManager::ConnectionSettings::typeAsString(NetworkManager::ConnectionSettings::ConnectionType type) { QString typeString; switch (type) { case Adsl: typeString = QLatin1String(NM_SETTING_ADSL_SETTING_NAME); break; case Bond: typeString = QLatin1String(NM_SETTING_BOND_SETTING_NAME); break; case Bluetooth: typeString = QLatin1String(NM_SETTING_BLUETOOTH_SETTING_NAME); break; case Bridge: typeString = QLatin1String(NM_SETTING_BRIDGE_SETTING_NAME); break; case Cdma: typeString = QLatin1String(NM_SETTING_CDMA_SETTING_NAME); break; case Gsm: typeString = QLatin1String(NM_SETTING_GSM_SETTING_NAME); break; case Infiniband: typeString = QLatin1String(NM_SETTING_INFINIBAND_SETTING_NAME); break; case OLPCMesh: typeString = QLatin1String(NM_SETTING_OLPC_MESH_SETTING_NAME); break; case Pppoe: typeString = QLatin1String(NM_SETTING_PPPOE_SETTING_NAME); break; case Vlan: typeString = QLatin1String(NM_SETTING_VLAN_SETTING_NAME); break; case Vpn: typeString = QLatin1String(NM_SETTING_VPN_SETTING_NAME); break; case Wimax: typeString = QLatin1String(NM_SETTING_WIMAX_SETTING_NAME); break; case Wired: typeString = QLatin1String(NM_SETTING_WIRED_SETTING_NAME); break; case Wireless: typeString = QLatin1String(NM_SETTING_WIRELESS_SETTING_NAME); break; case Team: typeString = QLatin1String(NM_SETTING_TEAM_SETTING_NAME); break; case Generic: typeString = QLatin1String(NM_SETTING_GENERIC_SETTING_NAME); break; case Tun: typeString = QLatin1String(NM_SETTING_TUN_SETTING_NAME); break; case IpTunnel: typeString = QLatin1String(NM_SETTING_IP_TUNNEL_SETTING_NAME); break; - case Wireguard: + case WireGuard: typeString = QLatin1String(NM_SETTING_WIREGUARD_SETTING_NAME); break; default: break; }; return typeString; } QString NetworkManager::ConnectionSettings::createNewUuid() { return QUuid::createUuid().toString().mid(1, QUuid::createUuid().toString().length() - 2); } NetworkManager::ConnectionSettings::ConnectionSettings() : d_ptr(new ConnectionSettingsPrivate(this)) { } NetworkManager::ConnectionSettings::ConnectionSettings(NetworkManager::ConnectionSettings::ConnectionType type, NMBluetoothCapabilities bt_cap) : d_ptr(new ConnectionSettingsPrivate(this)) { setConnectionType(type, bt_cap); } NetworkManager::ConnectionSettings::ConnectionSettings(const NetworkManager::ConnectionSettings::Ptr &other) : d_ptr(new ConnectionSettingsPrivate(this)) { Q_D(ConnectionSettings); setId(other->id()); setUuid(other->uuid()); setInterfaceName(other->interfaceName()); setConnectionType(other->connectionType()); setPermissions(other->permissions()); setAutoconnect(other->autoconnect()); setAutoconnectPriority(other->autoconnectPriority()); setTimestamp(other->timestamp()); setReadOnly(other->readOnly()); setZone(other->zone()); setMaster(other->master()); setSlaveType(other->slaveType()); setGatewayPingTimeout(other->gatewayPingTimeout()); setAutoconnectRetries(other->autoconnectRetries()); setAutoconnectSlaves(other->autoconnectSlaves()); setLldp(other->lldp()); setMetered(other->metered()); setStableId(other->stableId()); d->initSettings(other); } NetworkManager::ConnectionSettings::ConnectionSettings(const NMVariantMapMap &map) : d_ptr(new ConnectionSettingsPrivate(this)) { fromMap(map); } NetworkManager::ConnectionSettings::~ConnectionSettings() { d_ptr->clearSettings(); delete d_ptr; } void NetworkManager::ConnectionSettings::fromMap(const NMVariantMapMap &map) { QVariantMap connectionSettings = map.value(QLatin1String(NM_SETTING_CONNECTION_SETTING_NAME)); setId(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_ID)).toString()); setUuid(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_UUID)).toString()); setConnectionType(typeFromString(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_TYPE)).toString())); if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME))) { setInterfaceName(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME)).toString()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_PERMISSIONS))) { QStringList permissions = connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_PERMISSIONS)).toStringList(); Q_FOREACH (const QString & permission, permissions) { const QStringList split = permission.split(QLatin1String(":"), QString::KeepEmptyParts); addToPermissions(split.at(1), split.at(2)); } } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT))) { setAutoconnect(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT)).toBool()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY))) { setAutoconnectPriority(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY)).toInt()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP))) { const int timestamp = connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP)).toInt(); QDateTime dateTime; dateTime.setTime_t(timestamp); setTimestamp(dateTime); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_READ_ONLY))) { setReadOnly(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_READ_ONLY)).toBool()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_ZONE))) { setZone(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_ZONE)).toString()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_MASTER))) { setMaster(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_MASTER)).toString()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_SLAVE_TYPE))) { setSlaveType(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_SLAVE_TYPE)).toString()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_SECONDARIES))) { setSecondaries(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_SECONDARIES)).toStringList()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT))) { setGatewayPingTimeout(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT)).toUInt()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES))) { setAutoconnectRetries(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES)).toInt()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES))) { setAutoconnectSlaves((NetworkManager::ConnectionSettings::AutoconnectSlaves)connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES)).toInt()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_LLDP))) { setLldp((NetworkManager::ConnectionSettings::Lldp)connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_LLDP)).toInt()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_METERED))) { setMetered((NetworkManager::ConnectionSettings::Metered)connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_METERED)).toInt()); } if (connectionSettings.contains(QLatin1String(NM_SETTING_CONNECTION_STABLE_ID))) { setStableId(connectionSettings.value(QLatin1String(NM_SETTING_CONNECTION_STABLE_ID)).toString()); } Q_FOREACH (const Setting::Ptr & setting, settings()) { if (map.contains(setting->name())) { setting->fromMap(map.value(setting->name())); setting->setInitialized(true); } else { setting->setInitialized(false); } } } NMVariantMapMap NetworkManager::ConnectionSettings::toMap() const { NMVariantMapMap result; QVariantMap connectionSetting; if (!id().isEmpty()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_ID), id()); } if (!uuid().isEmpty()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_UUID), uuid()); } if (connectionType()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_TYPE), typeAsString(connectionType())); } if (!interfaceName().isEmpty()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_INTERFACE_NAME), interfaceName()); } if (!permissions().isEmpty()) { QStringList perm; QHash perms = permissions(); QHash::const_iterator it = perms.constBegin(); while (it != perms.constEnd()) { const QString tmp = "user:" + it.key() + ':' + it.value(); perm << tmp; ++it; } connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_PERMISSIONS), perm); } if (!autoconnect()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT), autoconnect()); } if (autoconnectPriority()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY), autoconnectPriority()); } if (timestamp().isValid()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_TIMESTAMP), timestamp().toTime_t()); } if (readOnly()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_READ_ONLY), readOnly()); } if (!zone().isEmpty()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_ZONE), zone()); } if (!master().isEmpty()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_MASTER), master()); } if (!slaveType().isEmpty()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_SLAVE_TYPE), slaveType()); } if (!secondaries().isEmpty()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_SECONDARIES), secondaries()); } if (gatewayPingTimeout()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT), gatewayPingTimeout()); } if (autoconnectRetries() >= 0) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES), autoconnectRetries()); } connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES), autoconnectSlaves()); connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_LLDP), lldp()); connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_METERED), metered()); if (!stableId().isEmpty()) { connectionSetting.insert(QLatin1String(NM_SETTING_CONNECTION_STABLE_ID), stableId()); } result.insert(QLatin1String(NM_SETTING_CONNECTION_SETTING_NAME), connectionSetting); Q_FOREACH (const Setting::Ptr & setting, settings()) { QVariantMap map = setting->toMap(); if (!setting->isNull()) { result.insert(setting->name(), map); } } return result; } QString NetworkManager::ConnectionSettings::name() const { Q_D(const ConnectionSettings); return d->name; } void NetworkManager::ConnectionSettings::setId(const QString &id) { Q_D(ConnectionSettings); d->id = id; } QString NetworkManager::ConnectionSettings::id() const { Q_D(const ConnectionSettings); return d->id; } void NetworkManager::ConnectionSettings::setUuid(const QString &uuid) { Q_D(ConnectionSettings); d->uuid = uuid; } QString NetworkManager::ConnectionSettings::uuid() const { Q_D(const ConnectionSettings); return d->uuid; } void NetworkManager::ConnectionSettings::setInterfaceName(const QString &interfaceName) { Q_D(ConnectionSettings); d->interfaceName = interfaceName; } QString NetworkManager::ConnectionSettings::interfaceName() const { Q_D(const ConnectionSettings); return d->interfaceName; } void NetworkManager::ConnectionSettings::setConnectionType(NetworkManager::ConnectionSettings::ConnectionType type, NMBluetoothCapabilities bt_cap) { Q_D(ConnectionSettings); d->type = type; d->initSettings(bt_cap); } NetworkManager::ConnectionSettings::ConnectionType NetworkManager::ConnectionSettings::connectionType() const { Q_D(const ConnectionSettings); return d->type; } void NetworkManager::ConnectionSettings::addToPermissions(const QString &user, const QString &type) { Q_D(ConnectionSettings); d->permissions.insert(user, type); } void NetworkManager::ConnectionSettings::setPermissions(const QHash< QString, QString > &perm) { Q_D(ConnectionSettings); d->permissions = perm; } QHash< QString, QString > NetworkManager::ConnectionSettings::permissions() const { Q_D(const ConnectionSettings); return d->permissions; } void NetworkManager::ConnectionSettings::setAutoconnect(bool autoconnect) { Q_D(ConnectionSettings); d->autoconnect = autoconnect; } bool NetworkManager::ConnectionSettings::autoconnect() const { Q_D(const ConnectionSettings); return d->autoconnect; } void NetworkManager::ConnectionSettings::setAutoconnectPriority(int priority) { Q_D(ConnectionSettings); d->autoconnectPriority = priority; } int NetworkManager::ConnectionSettings::autoconnectPriority() const { Q_D(const ConnectionSettings); return d->autoconnectPriority; } void NetworkManager::ConnectionSettings::setTimestamp(const QDateTime ×tamp) { Q_D(ConnectionSettings); d->timestamp = timestamp; } QDateTime NetworkManager::ConnectionSettings::timestamp() const { Q_D(const ConnectionSettings); return d->timestamp; } void NetworkManager::ConnectionSettings::setReadOnly(bool readonly) { Q_D(ConnectionSettings); d->readOnly = readonly; } bool NetworkManager::ConnectionSettings::readOnly() const { Q_D(const ConnectionSettings); return d->readOnly; } void NetworkManager::ConnectionSettings::setZone(const QString &zone) { Q_D(ConnectionSettings); d->zone = zone; } QString NetworkManager::ConnectionSettings::zone() const { Q_D(const ConnectionSettings); return d->zone; } bool NetworkManager::ConnectionSettings::isSlave() const { Q_D(const ConnectionSettings); return !d->master.isEmpty() && !d->slaveType.isEmpty(); } void NetworkManager::ConnectionSettings::setMaster(const QString &master) { Q_D(ConnectionSettings); d->master = master; } QString NetworkManager::ConnectionSettings::master() const { Q_D(const ConnectionSettings); return d->master; } void NetworkManager::ConnectionSettings::setSlaveType(const QString &type) { Q_D(ConnectionSettings); d->slaveType = type; } QString NetworkManager::ConnectionSettings::slaveType() const { Q_D(const ConnectionSettings); return d->slaveType; } void NetworkManager::ConnectionSettings::setSecondaries(const QStringList &secondaries) { Q_D(ConnectionSettings); d->secondaries = secondaries; } QStringList NetworkManager::ConnectionSettings::secondaries() const { Q_D(const ConnectionSettings); return d->secondaries; } void NetworkManager::ConnectionSettings::setGatewayPingTimeout(quint32 timeout) { Q_D(ConnectionSettings); d->gatewayPingTimeout = timeout; } quint32 NetworkManager::ConnectionSettings::gatewayPingTimeout() const { Q_D(const ConnectionSettings); return d->gatewayPingTimeout; } int NetworkManager::ConnectionSettings::autoconnectRetries() const { Q_D(const ConnectionSettings); return d->autoconnectRetries; } void NetworkManager::ConnectionSettings::setAutoconnectRetries(int retries) { Q_D(ConnectionSettings); d->autoconnectRetries = retries; } NetworkManager::ConnectionSettings::AutoconnectSlaves NetworkManager::ConnectionSettings::autoconnectSlaves() const { Q_D(const ConnectionSettings); return d->autoconnectSlaves; } void NetworkManager::ConnectionSettings::setAutoconnectSlaves(NetworkManager::ConnectionSettings::AutoconnectSlaves autoconnectSlaves) { Q_D(ConnectionSettings); d->autoconnectSlaves = autoconnectSlaves; } NetworkManager::ConnectionSettings::Lldp NetworkManager::ConnectionSettings::lldp() const { Q_D(const ConnectionSettings); return d->lldp; } void NetworkManager::ConnectionSettings::setLldp(NetworkManager::ConnectionSettings::Lldp lldp) { Q_D(ConnectionSettings); d->lldp = lldp; } NetworkManager::ConnectionSettings::Metered NetworkManager::ConnectionSettings::metered() const { Q_D(const ConnectionSettings); return d->metered; } void NetworkManager::ConnectionSettings::setMetered(NetworkManager::ConnectionSettings::Metered metered) { Q_D(ConnectionSettings); d->metered = metered; } QString NetworkManager::ConnectionSettings::stableId() const { Q_D(const ConnectionSettings); return d->stableId; } void NetworkManager::ConnectionSettings::setStableId(const QString &stableId) { Q_D(ConnectionSettings); d->stableId = stableId; } NetworkManager::Setting::Ptr NetworkManager::ConnectionSettings::setting(Setting::SettingType type) const { Q_FOREACH (const Setting::Ptr & setting, settings()) { if (setting->type() == type) { return setting; } } return Setting::Ptr(); } NetworkManager::Setting::Ptr NetworkManager::ConnectionSettings::setting(const QString &type) const { return setting(Setting::typeFromString(type)); } NetworkManager::Setting::List NetworkManager::ConnectionSettings::settings() const { Q_D(const ConnectionSettings); return d->settings; } QDebug NetworkManager::operator <<(QDebug dbg, const NetworkManager::ConnectionSettings &setting) { dbg.nospace() << "CONNECTION SETTINGS\n"; dbg.nospace() << "===================\n"; dbg.nospace() << NM_SETTING_CONNECTION_ID << ": " << setting.id() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_UUID << ": " << setting.uuid() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_INTERFACE_NAME << ": " << setting.interfaceName() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_TYPE << ": " << setting.typeAsString(setting.connectionType()) << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_PERMISSIONS << ": " << setting.permissions() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_AUTOCONNECT << ": " << setting.autoconnect() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY << ": " << setting.autoconnectPriority() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_TIMESTAMP << ": " << setting.timestamp().toTime_t() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_READ_ONLY << ": " << setting.readOnly() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_ZONE << ": " << setting.zone() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_MASTER << ": " << setting.master() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_SLAVE_TYPE << ": " << setting.slaveType() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_SECONDARIES << ": " << setting.secondaries() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT << ": " << setting.gatewayPingTimeout() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES << ": " << setting.autoconnectRetries() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES << ": " << setting.autoconnectSlaves() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_LLDP << ": " << setting.lldp() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_METERED << ": " << setting.metered() << '\n'; dbg.nospace() << NM_SETTING_CONNECTION_STABLE_ID << ": " << setting.stableId() << '\n'; dbg.nospace() << "===================\n"; Q_FOREACH (const Setting::Ptr & settingPtr, setting.settings()) { dbg.nospace() << settingPtr->typeAsString(settingPtr->type()).toUpper() << " SETTINGS\n"; dbg.nospace() << "---------------------------\n"; switch (settingPtr->type()) { case Setting::Adsl: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Bond: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Bluetooth: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Bridge: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::BridgePort: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Cdma: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Gsm: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Infiniband: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Ipv4: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Ipv6: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::OlpcMesh: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Ppp: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Pppoe: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Security8021x: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Serial: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Vlan: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Vpn: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Wimax: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Wired: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Wireless: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::WirelessSecurity: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Team: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::Tun: dbg.nospace() << *(settingPtr.staticCast().data()); break; case Setting::IpTunnel: dbg.nospace() << *(settingPtr.staticCast().data()); break; - case Setting::Wireguard: - dbg.nospace() << *(settingPtr.staticCast().data()); + case Setting::WireGuard: + dbg.nospace() << *(settingPtr.staticCast().data()); break; default: dbg.nospace() << *settingPtr.data(); } dbg.nospace() << '\n'; } return dbg.maybeSpace(); } diff --git a/src/settings/connectionsettings.h b/src/settings/connectionsettings.h index b3569d6..0057d45 100644 --- a/src/settings/connectionsettings.h +++ b/src/settings/connectionsettings.h @@ -1,188 +1,188 @@ /* Copyright 2012-2013 Jan Grulich Copyright 2013 Daniel Nicoletti This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #ifndef NETWORKMANAGERQT_CONNECTION_SETTINGS_H #define NETWORKMANAGERQT_CONNECTION_SETTINGS_H #include #include "setting.h" #undef signals #include #define signals Q_SIGNALS #include #include #include namespace NetworkManager { class ConnectionSettingsPrivate; /** * Represents collection of all connection settings */ class NETWORKMANAGERQT_EXPORT ConnectionSettings { Q_ENUMS(ConnectionType) public: typedef QSharedPointer Ptr; typedef QList List; enum ConnectionType { Unknown = 0, Adsl, Bluetooth, Bond, Bridge, Cdma, Gsm, Infiniband, OLPCMesh, Pppoe, Vlan, Vpn, Wimax, Wired, Wireless, Team, Generic, Tun, IpTunnel, - Wireguard + WireGuard }; enum AutoconnectSlaves { SlavesDefault = -1, DoNotConnectSlaves = 0, ConnectAllSlaves = 1 }; enum Lldp { LldpDefault = -1, LldpDisable = 0, LldpEnableRx = 1, }; // FIXME same enum as in device.h, unfortunately it's not possible to use that one // maybe in future move all enums into one header so they can be used across all classes enum Metered { MeteredUnknown = 0, MeteredYes = 1, MeteredNo = 2, MeteredGuessYes = 3, MeteredGuessNo = 4 }; static ConnectionType typeFromString(const QString &typeString); static QString typeAsString(const ConnectionType type); static QString createNewUuid(); ConnectionSettings(); explicit ConnectionSettings(ConnectionType type, NMBluetoothCapabilities bt_cap = NM_BT_CAPABILITY_DUN); explicit ConnectionSettings(const ConnectionSettings::Ptr &other); explicit ConnectionSettings(const NMVariantMapMap &map); virtual ~ConnectionSettings(); QString name() const; void fromMap(const NMVariantMapMap &map); NMVariantMapMap toMap() const; void setId(const QString &id); QString id() const; void setUuid(const QString &uuid); QString uuid() const; void setInterfaceName(const QString &interfaceName); QString interfaceName() const; void setConnectionType(ConnectionType type, NMBluetoothCapabilities bt_cap = NM_BT_CAPABILITY_DUN); ConnectionType connectionType() const; void addToPermissions(const QString &user, const QString &type); void setPermissions(const QHash &perm); QHash permissions() const; void setAutoconnect(bool autoconnect); bool autoconnect() const; void setAutoconnectPriority(int priority); int autoconnectPriority() const; void setTimestamp(const QDateTime ×tamp); QDateTime timestamp() const; void setReadOnly(bool readonly); bool readOnly() const; void setZone(const QString &zone); QString zone() const; bool isSlave() const; void setMaster(const QString &master); QString master() const; void setSlaveType(const QString &type); QString slaveType() const; void setSecondaries(const QStringList &secondaries); QStringList secondaries() const; void setGatewayPingTimeout(quint32 timeout); quint32 gatewayPingTimeout() const; void setAutoconnectRetries(int retries); int autoconnectRetries() const; void setAutoconnectSlaves(AutoconnectSlaves autoconnectSlaves); AutoconnectSlaves autoconnectSlaves() const; void setLldp(Lldp lldp); Lldp lldp() const; void setMetered(Metered metered); Metered metered() const; void setStableId(const QString &stableId); QString stableId() const; Setting::Ptr setting(Setting::SettingType type) const; Setting::Ptr setting(const QString &type) const; Setting::List settings() const; protected: ConnectionSettingsPrivate *d_ptr; private: Q_DECLARE_PRIVATE(ConnectionSettings) }; NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const ConnectionSettings &setting); } #endif // NETWORKMANAGERQT_CONNECTION_SETTINGS_H diff --git a/src/settings/setting.h b/src/settings/setting.h index 2d2ac92..7521791 100644 --- a/src/settings/setting.h +++ b/src/settings/setting.h @@ -1,166 +1,166 @@ /* Copyright 2012-2019 Jan Grulich This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #ifndef NETWORKMANAGERQT_SETTING_H #define NETWORKMANAGERQT_SETTING_H #include #include "generictypes.h" #undef signals #include #define signals Q_SIGNALS #include #include #include #include namespace NetworkManager { class SettingPrivate; /** * Base class for all kinds of setting */ class NETWORKMANAGERQT_EXPORT Setting { public: typedef QSharedPointer Ptr; typedef QList List; enum SettingType { Adsl, Cdma, Gsm, Infiniband, Ipv4, Ipv6, Ppp, Pppoe, Security8021x, Serial, Vpn, Wired, Wireless, WirelessSecurity, Bluetooth, OlpcMesh, Vlan, Wimax, Bond, Bridge, BridgePort, Team, Generic, Tun, Vxlan, IpTunnel, Proxy, User, OvsBridge, OvsInterface, OvsPatch, OvsPort, Match, Tc, TeamPort, Macsec, Dcb, - Wireguard + WireGuard }; enum SecretFlagType { None = 0, AgentOwned = 0x01, NotSaved = 0x02, NotRequired = 0x04 }; Q_DECLARE_FLAGS(SecretFlags, SecretFlagType) enum MacAddressRandomization { MacAddressRandomizationDefault = 0, MacAddressRandomizationNever, MacAddressRandomizationAlways }; static QString typeAsString(SettingType type); static SettingType typeFromString(const QString &type); explicit Setting(SettingType type); explicit Setting(const Ptr &setting); virtual ~Setting(); /** * @brief Must be reimplemented, default implementation does nothing */ virtual void fromMap(const QVariantMap &map); /** * @brief Must be reimplemented, default implementationd does nothing */ virtual QVariantMap toMap() const; virtual void secretsFromMap(const QVariantMap &map); /** * @brief secretsFromStringMap is a convenience function * to set the secrets from a map of strings. * @param map to extract secrets from */ virtual void secretsFromStringMap(const NMStringMap &map); virtual QVariantMap secretsToMap() const; /** * @brief secretsToStringMap is a convenience function * to get the secrets to map of strings. * @return string map with current secrets */ virtual NMStringMap secretsToStringMap() const; virtual QStringList needSecrets(bool requestNew = false) const; /** * @brief Must be reimplemented, default implementationd does nothing */ virtual QString name() const; void setInitialized(bool initialized); bool isNull() const; void setType(SettingType type); SettingType type() const; protected: SettingPrivate *d_ptr; private: Q_DECLARE_PRIVATE(Setting) }; Q_DECLARE_OPERATORS_FOR_FLAGS(Setting::SecretFlags) NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const Setting &setting); } #endif // NETWORKMANAGERQT_SETTING_H diff --git a/src/settings/wireguardsetting.cpp b/src/settings/wireguardsetting.cpp index a536aa2..2d143d6 100644 --- a/src/settings/wireguardsetting.cpp +++ b/src/settings/wireguardsetting.cpp @@ -1,273 +1,273 @@ /* Copyright 2019 Jan Grulich This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include "wireguardsetting.h" #include "wireguardsetting_p.h" #include #if !NM_CHECK_VERSION(1, 16, 0) #define NM_SETTING_WIREGUARD_SETTING_NAME "wireguard" #define NM_SETTING_WIREGUARD_FWMARK "fwmark" #define NM_SETTING_WIREGUARD_LISTEN_PORT "listen-port" #define NM_SETTING_WIREGUARD_PRIVATE_KEY "private-key" #define NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS "private-key-flags" #define NM_SETTING_WIREGUARD_PEERS "peers" #define NM_SETTING_WIREGUARD_MTU "mtu" #define NM_SETTING_WIREGUARD_PEER_ROUTES "peer-routes" #endif -NetworkManager::WireguardSettingPrivate::WireguardSettingPrivate() +NetworkManager::WireGuardSettingPrivate::WireGuardSettingPrivate() : name(NM_SETTING_WIREGUARD_SETTING_NAME) , fwmark(0) , listenPort(0) , mtu(0) , peerRoutes(true) , privateKeyFlags(NetworkManager::Setting::None) { } -NetworkManager::WireguardSetting::WireguardSetting(): - Setting(Setting::Wireguard), - d_ptr(new WireguardSettingPrivate()) +NetworkManager::WireGuardSetting::WireGuardSetting(): + Setting(Setting::WireGuard), + d_ptr(new WireGuardSettingPrivate()) { } -NetworkManager::WireguardSetting::WireguardSetting(const Ptr &other) +NetworkManager::WireGuardSetting::WireGuardSetting(const Ptr &other) : Setting(other) - , d_ptr(new WireguardSettingPrivate()) + , d_ptr(new WireGuardSettingPrivate()) { setFwmark(other->fwmark()); setListenPort(other->listenPort()); setMtu(other->mtu()); setPeerRoutes(other->peerRoutes()); setPeers(other->peers()); setPrivateKey(other->privateKey()); setPrivateKeyFlags(other->privateKeyFlags()); } -NetworkManager::WireguardSetting::~WireguardSetting() +NetworkManager::WireGuardSetting::~WireGuardSetting() { delete d_ptr; } -QString NetworkManager::WireguardSetting::name() const +QString NetworkManager::WireGuardSetting::name() const { - Q_D(const WireguardSetting); + Q_D(const WireGuardSetting); return d->name; } -quint32 NetworkManager::WireguardSetting::fwmark() const +quint32 NetworkManager::WireGuardSetting::fwmark() const { - Q_D(const WireguardSetting); + Q_D(const WireGuardSetting); return d->fwmark; } -void NetworkManager::WireguardSetting::setFwmark(quint32 fwmark) +void NetworkManager::WireGuardSetting::setFwmark(quint32 fwmark) { - Q_D(WireguardSetting); + Q_D(WireGuardSetting); d->fwmark = fwmark; } -quint32 NetworkManager::WireguardSetting::listenPort() const +quint32 NetworkManager::WireGuardSetting::listenPort() const { - Q_D(const WireguardSetting); + Q_D(const WireGuardSetting); return d->listenPort; } -void NetworkManager::WireguardSetting::setListenPort(quint32 port) +void NetworkManager::WireGuardSetting::setListenPort(quint32 port) { - Q_D(WireguardSetting); + Q_D(WireGuardSetting); d->listenPort = port; } -quint32 NetworkManager::WireguardSetting::mtu() const +quint32 NetworkManager::WireGuardSetting::mtu() const { - Q_D(const WireguardSetting); + Q_D(const WireGuardSetting); return d->mtu; } -void NetworkManager::WireguardSetting::setMtu(quint32 mtu) +void NetworkManager::WireGuardSetting::setMtu(quint32 mtu) { - Q_D(WireguardSetting); + Q_D(WireGuardSetting); d->mtu = mtu; } -bool NetworkManager::WireguardSetting::peerRoutes() const +bool NetworkManager::WireGuardSetting::peerRoutes() const { - Q_D(const WireguardSetting); + Q_D(const WireGuardSetting); return d->peerRoutes; } -void NetworkManager::WireguardSetting::setPeerRoutes(bool peerRoutes) +void NetworkManager::WireGuardSetting::setPeerRoutes(bool peerRoutes) { - Q_D(WireguardSetting); + Q_D(WireGuardSetting); d->peerRoutes = peerRoutes; } -NMVariantMapList NetworkManager::WireguardSetting::peers() const +NMVariantMapList NetworkManager::WireGuardSetting::peers() const { - Q_D(const WireguardSetting); + Q_D(const WireGuardSetting); return d->peers; } -void NetworkManager::WireguardSetting::setPeers(const NMVariantMapList &peers) +void NetworkManager::WireGuardSetting::setPeers(const NMVariantMapList &peers) { - Q_D(WireguardSetting); + Q_D(WireGuardSetting); d->peers = peers; } -QString NetworkManager::WireguardSetting::privateKey() const +QString NetworkManager::WireGuardSetting::privateKey() const { - Q_D(const WireguardSetting); + Q_D(const WireGuardSetting); return d->privateKey; } -void NetworkManager::WireguardSetting::setPrivateKey(const QString &key) +void NetworkManager::WireGuardSetting::setPrivateKey(const QString &key) { - Q_D(WireguardSetting); + Q_D(WireGuardSetting); d->privateKey = key; } -NetworkManager::Setting::SecretFlags NetworkManager::WireguardSetting::privateKeyFlags() const +NetworkManager::Setting::SecretFlags NetworkManager::WireGuardSetting::privateKeyFlags() const { - Q_D(const WireguardSetting); + Q_D(const WireGuardSetting); return d->privateKeyFlags; } -void NetworkManager::WireguardSetting::setPrivateKeyFlags(NetworkManager::Setting::SecretFlags flags) +void NetworkManager::WireGuardSetting::setPrivateKeyFlags(NetworkManager::Setting::SecretFlags flags) { - Q_D(WireguardSetting); + Q_D(WireGuardSetting); d->privateKeyFlags = flags; } -void NetworkManager::WireguardSetting::secretsFromMap(const QVariantMap &secrets) +void NetworkManager::WireGuardSetting::secretsFromMap(const QVariantMap &secrets) { if (secrets.contains(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY))) { setPrivateKey(secrets.value(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY)).toString()); } } -QVariantMap NetworkManager::WireguardSetting::secretsToMap() const +QVariantMap NetworkManager::WireGuardSetting::secretsToMap() const { QVariantMap secrets; if (!privateKey().isEmpty()) { secrets.insert(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY), privateKey()); } return secrets; } -QStringList NetworkManager::WireguardSetting::needSecrets(bool requestNew) const +QStringList NetworkManager::WireGuardSetting::needSecrets(bool requestNew) const { QStringList secrets; if (!privateKeyFlags().testFlag(Setting::NotRequired)) { if (privateKey().isEmpty() || requestNew) { secrets << QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY); } } return secrets; } -void NetworkManager::WireguardSetting::fromMap(const QVariantMap &setting) +void NetworkManager::WireGuardSetting::fromMap(const QVariantMap &setting) { if (setting.contains(QLatin1String(NM_SETTING_WIREGUARD_FWMARK))) { setFwmark(setting.value(QLatin1String(NM_SETTING_WIREGUARD_FWMARK)).toInt()); } if (setting.contains(QLatin1String(NM_SETTING_WIREGUARD_LISTEN_PORT))) { setListenPort(setting.value(QLatin1String(NM_SETTING_WIREGUARD_LISTEN_PORT)).toInt()); } if (setting.contains(QLatin1String(NM_SETTING_WIREGUARD_MTU))) { setMtu(setting.value(QLatin1String(NM_SETTING_WIREGUARD_MTU)).toInt()); } if (setting.contains(QLatin1String(NM_SETTING_WIREGUARD_PEER_ROUTES))) { setPeerRoutes(setting.value(QLatin1String(NM_SETTING_WIREGUARD_PEER_ROUTES)).toBool()); } if (setting.contains(QLatin1String(NM_SETTING_WIREGUARD_PEERS))) { setPeers(qdbus_cast(setting.value(QLatin1String(NM_SETTING_WIREGUARD_PEERS)))); } if (setting.contains(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY))) { setPrivateKey(setting.value(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY)).toString()); } if (setting.contains(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS))) { setPrivateKeyFlags((SecretFlags)setting.value(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS)).toInt()); } } -QVariantMap NetworkManager::WireguardSetting::toMap() const +QVariantMap NetworkManager::WireGuardSetting::toMap() const { QVariantMap setting; setting.insert(QLatin1String(NM_SETTING_WIREGUARD_FWMARK), fwmark()); setting.insert(QLatin1String(NM_SETTING_WIREGUARD_LISTEN_PORT), listenPort()); setting.insert(QLatin1String(NM_SETTING_WIREGUARD_MTU), mtu()); setting.insert(QLatin1String(NM_SETTING_WIREGUARD_PEER_ROUTES), peerRoutes()); if (!peers().isEmpty()) { setting.insert(QLatin1String(NM_SETTING_WIREGUARD_PEERS), QVariant::fromValue(peers())); } if (!privateKey().isEmpty()) { setting.insert(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY), privateKey()); setting.insert(QLatin1String(NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS), (int)privateKeyFlags()); } return setting; } -QDebug NetworkManager::operator <<(QDebug dbg, const NetworkManager::WireguardSetting &setting) +QDebug NetworkManager::operator <<(QDebug dbg, const NetworkManager::WireGuardSetting &setting) { dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; dbg.nospace() << NM_SETTING_WIREGUARD_FWMARK << ": " << setting.fwmark() << '\n'; dbg.nospace() << NM_SETTING_WIREGUARD_LISTEN_PORT << ": " << setting.listenPort() << '\n'; dbg.nospace() << NM_SETTING_WIREGUARD_MTU << ": " << setting.mtu() << '\n'; dbg.nospace() << NM_SETTING_WIREGUARD_PEER_ROUTES << ": " << setting.peerRoutes() << '\n'; dbg.nospace() << NM_SETTING_WIREGUARD_PEERS << ": " << setting.peers() << '\n'; dbg.nospace() << NM_SETTING_WIREGUARD_PRIVATE_KEY << ": " << setting.privateKey() << '\n'; dbg.nospace() << NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS << ": " << setting.privateKeyFlags() << '\n'; return dbg.maybeSpace(); } diff --git a/src/settings/wireguardsetting.h b/src/settings/wireguardsetting.h index 90bc23d..0bf3aad 100644 --- a/src/settings/wireguardsetting.h +++ b/src/settings/wireguardsetting.h @@ -1,91 +1,91 @@ /* Copyright 2019 Jan Grulich This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #ifndef NETWORKMANAGERQT_WIREGUARD_SETTING_H #define NETWORKMANAGERQT_WIREGUARD_SETTING_H #include #include "setting.h" #include namespace NetworkManager { -class WireguardSettingPrivate; +class WireGuardSettingPrivate; /** * Represents generic setting */ -class NETWORKMANAGERQT_EXPORT WireguardSetting : public Setting +class NETWORKMANAGERQT_EXPORT WireGuardSetting : public Setting { public: - typedef QSharedPointer Ptr; + typedef QSharedPointer Ptr; typedef QList List; - WireguardSetting(); - explicit WireguardSetting(const Ptr &other); - ~WireguardSetting() override; + WireGuardSetting(); + explicit WireGuardSetting(const Ptr &other); + ~WireGuardSetting() override; QString name() const override; quint32 fwmark() const; void setFwmark(quint32 fwmark); quint32 listenPort() const; void setListenPort(quint32 port); quint32 mtu() const; void setMtu(quint32 mtu); bool peerRoutes() const; void setPeerRoutes(bool peerRoutes); NMVariantMapList peers() const; void setPeers(const NMVariantMapList &peers); QString privateKey() const; void setPrivateKey(const QString &key); SecretFlags privateKeyFlags() const; void setPrivateKeyFlags(SecretFlags flags); void secretsFromMap(const QVariantMap &secrets) override; QVariantMap secretsToMap() const override; QStringList needSecrets(bool requestNew = false) const override; void fromMap(const QVariantMap &setting) override; QVariantMap toMap() const override; protected: - WireguardSettingPrivate *d_ptr; + WireGuardSettingPrivate *d_ptr; private: - Q_DECLARE_PRIVATE(WireguardSetting) + Q_DECLARE_PRIVATE(WireGuardSetting) }; -NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const WireguardSetting &setting); +NETWORKMANAGERQT_EXPORT QDebug operator<<(QDebug dbg, const WireGuardSetting &setting); } #endif // NETWORKMANAGERQT_WIREGUARD_SETTING_H diff --git a/src/settings/wireguardsetting_p.h b/src/settings/wireguardsetting_p.h index a1574cc..58061aa 100644 --- a/src/settings/wireguardsetting_p.h +++ b/src/settings/wireguardsetting_p.h @@ -1,48 +1,48 @@ /* Copyright 2019 Jan Grulich This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #ifndef NETWORKMANAGERQT_WIREGUARD_SETTING_P_H #define NETWORKMANAGERQT_WIREGUARD_SETTING_P_H #include namespace NetworkManager { -class WireguardSettingPrivate +class WireGuardSettingPrivate { public: - WireguardSettingPrivate(); + WireGuardSettingPrivate(); QString name; quint32 fwmark; quint32 listenPort; quint32 mtu; bool peerRoutes; NMVariantMapList peers; QString privateKey; NetworkManager::Setting::SecretFlags privateKeyFlags; }; } #endif // NETWORKMANAGERQT_WIREGUARD_SETTING_P_H