|
|
|
@ -32,6 +32,7 @@ QString device_iface = "org.freedesktop.NetworkManager.Device"; |
|
|
|
|
QString wireless_device_iface = "org.freedesktop.NetworkManager.Device.Wireless"; |
|
|
|
|
QString ap_iface = "org.freedesktop.NetworkManager.AccessPoint"; |
|
|
|
|
QString connection_iface = "org.freedesktop.NetworkManager.Connection.Active"; |
|
|
|
|
QString ipv4config_iface = "org.freedesktop.NetworkManager.IP4Config"; |
|
|
|
|
|
|
|
|
|
QString nm_service = "org.freedesktop.NetworkManager"; |
|
|
|
|
|
|
|
|
@ -87,7 +88,7 @@ void WifiManager::refreshNetworks() { |
|
|
|
|
bus = QDBusConnection::systemBus(); |
|
|
|
|
seen_networks.clear(); |
|
|
|
|
seen_ssids.clear(); |
|
|
|
|
|
|
|
|
|
ipv4_address = get_ipv4_address(); |
|
|
|
|
for (Network &network : get_networks()) { |
|
|
|
|
if (seen_ssids.count(network.ssid)) { |
|
|
|
|
continue; |
|
|
|
@ -97,6 +98,32 @@ void WifiManager::refreshNetworks() { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QString WifiManager::get_ipv4_address(){ |
|
|
|
|
if (raw_adapter_state != state_connected){ |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
QVector<QDBusObjectPath> conns = get_active_connections(); |
|
|
|
|
for (auto p : conns){ |
|
|
|
|
QString active_connection = p.path(); |
|
|
|
|
QDBusInterface nm(nm_service, active_connection, props_iface, bus); |
|
|
|
|
QDBusObjectPath pth = get_response<QDBusObjectPath>(nm.call("Get", connection_iface, "Ip4Config")); |
|
|
|
|
QString ip4config = pth.path(); |
|
|
|
|
|
|
|
|
|
QDBusInterface nm2(nm_service, ip4config, props_iface, bus); |
|
|
|
|
const QDBusArgument &arr = get_response<QDBusArgument>(nm2.call("Get", ipv4config_iface, "AddressData")); |
|
|
|
|
QMap<QString, QVariant> pth2; |
|
|
|
|
arr.beginArray(); |
|
|
|
|
while (!arr.atEnd()){ |
|
|
|
|
arr >> pth2; |
|
|
|
|
QString ipv4 = pth2.value("address").value<QString>(); |
|
|
|
|
arr.endArray(); |
|
|
|
|
return ipv4; |
|
|
|
|
} |
|
|
|
|
arr.endArray(); |
|
|
|
|
} |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QList<Network> WifiManager::get_networks() { |
|
|
|
|
QList<Network> r; |
|
|
|
|
QDBusInterface nm(nm_service, adapter, wireless_device_iface, bus); |
|
|
|
@ -207,7 +234,7 @@ void WifiManager::deactivate_connections(QString ssid) { |
|
|
|
|
QVector<QDBusObjectPath> WifiManager::get_active_connections() { |
|
|
|
|
QDBusInterface nm(nm_service, nm_path, props_iface, bus); |
|
|
|
|
QDBusMessage response = nm.call("Get", nm_iface, "ActiveConnections"); |
|
|
|
|
QDBusArgument arr = get_response<QDBusArgument>(response); |
|
|
|
|
const QDBusArgument &arr = get_response<QDBusArgument>(response); |
|
|
|
|
QVector<QDBusObjectPath> conns; |
|
|
|
|
|
|
|
|
|
QDBusObjectPath path; |
|
|
|
@ -216,6 +243,7 @@ QVector<QDBusObjectPath> WifiManager::get_active_connections() { |
|
|
|
|
arr >> path; |
|
|
|
|
conns.push_back(path); |
|
|
|
|
} |
|
|
|
|
arr.endArray(); |
|
|
|
|
return conns; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -346,10 +374,10 @@ void WifiManager::enableTethering() { |
|
|
|
|
connection["802-11-wireless-security"]["psk"] = "swagswagcomma"; |
|
|
|
|
|
|
|
|
|
connection["ipv4"]["method"] = "shared"; |
|
|
|
|
QMap<QString,QVariant> adress1; |
|
|
|
|
adress1["address"] = "192.168.43.1"; |
|
|
|
|
adress1["prefix"] = 24u; |
|
|
|
|
connection["ipv4"]["address-data"] = QVariant::fromValue(IpConfig() << adress1); |
|
|
|
|
QMap<QString,QVariant> address; |
|
|
|
|
address["address"] = "192.168.43.1"; |
|
|
|
|
address["prefix"] = 24u; |
|
|
|
|
connection["ipv4"]["address-data"] = QVariant::fromValue(IpConfig() << address); |
|
|
|
|
connection["ipv4"]["gateway"] = "192.168.43.1"; |
|
|
|
|
connection["ipv6"]["method"] = "ignore"; |
|
|
|
|
|
|
|
|
|