Fix Network Manager handling
This commit is contained in:
@@ -49,7 +49,7 @@
|
|||||||
{
|
{
|
||||||
packages.default = pkgs.buildGoModule {
|
packages.default = pkgs.buildGoModule {
|
||||||
pname = "rhemawave";
|
pname = "rhemawave";
|
||||||
version = "v1.0.2";
|
version = "v1.0.3";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
vendorHash = null;
|
vendorHash = null;
|
||||||
|
|||||||
+23
-16
@@ -331,34 +331,41 @@ func (m *Manager) Connect(wifiDevice Device, ap AccessPoint, passphrase string)
|
|||||||
"uuid": dbus.MakeVariant(uuid.NewString()),
|
"uuid": dbus.MakeVariant(uuid.NewString()),
|
||||||
"id": dbus.MakeVariant(ap.SSID),
|
"id": dbus.MakeVariant(ap.SSID),
|
||||||
"interface-name": dbus.MakeVariant(wifiDevice.InterfaceName),
|
"interface-name": dbus.MakeVariant(wifiDevice.InterfaceName),
|
||||||
|
"permissions": dbus.MakeVariant([]string{}), // Shared connection
|
||||||
|
"autoconnect": dbus.MakeVariant(true),
|
||||||
},
|
},
|
||||||
"802-11-wireless": {
|
"802-11-wireless": {
|
||||||
"ssid": dbus.MakeVariant([]byte(ap.SSID)),
|
"ssid": dbus.MakeVariant([]byte(ap.SSID)),
|
||||||
"mode": dbus.MakeVariant("infrastructure"),
|
"mode": dbus.MakeVariant("infrastructure"),
|
||||||
},
|
},
|
||||||
|
"ipv4": {"method": dbus.MakeVariant("auto")},
|
||||||
|
"ipv6": {"method": dbus.MakeVariant("auto")},
|
||||||
}
|
}
|
||||||
|
|
||||||
if ap.IsProtected {
|
if ap.IsProtected {
|
||||||
settings["802-11-wireless"]["security"] = dbus.MakeVariant("802-11-wireless-security")
|
settings["802-11-wireless-security"] = map[string]dbus.Variant{
|
||||||
secSettings := make(map[string]dbus.Variant)
|
"key-mgmt": dbus.MakeVariant("wpa-psk"),
|
||||||
|
"auth-alg": dbus.MakeVariant("open"),
|
||||||
// Default to WPA-PSK, but override with more specific types if found.
|
"psk": dbus.MakeVariant(passphrase),
|
||||||
secSettings["key-mgmt"] = dbus.MakeVariant("wpa-psk")
|
}
|
||||||
if (ap.RsnFlags & APSecKeyMgmtSAE) != 0 {
|
// 0 means "The secret is not saved or is managed by an external agent"
|
||||||
secSettings["key-mgmt"] = dbus.MakeVariant("sae") // WPA3
|
// In a kiosk, we want NM to just handle it.
|
||||||
} else if (ap.RsnFlags&APSecKeyMgmtEAP) != 0 || (ap.WpaFlags&APSecKeyMgmtEAP) != 0 {
|
settings["802-11-wireless-security"]["psk-flags"] = dbus.MakeVariant(uint32(0))
|
||||||
log.Println("network: Enterprise AP (EAP) detected. Full configuration may be required.")
|
|
||||||
secSettings["key-mgmt"] = dbus.MakeVariant("wpa-eap")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
secSettings["psk"] = dbus.MakeVariant(passphrase)
|
var connectionPath dbus.ObjectPath
|
||||||
settings["802-11-wireless-security"] = secSettings
|
var activeConnectionPath dbus.ObjectPath
|
||||||
|
|
||||||
|
// Capture the two return values from AddAndActivateConnection
|
||||||
|
err := m.nmObject.Call(nmInterface+".AddAndActivateConnection", 0, settings, wifiDevice.Path, ap.ObjectPath).Store(&connectionPath, &activeConnectionPath)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
// THIS IS THE LOG YOU NEED TO SEE IN SSH
|
||||||
|
log.Printf("NETWORK MANAGER FAIL: %v", err)
|
||||||
|
return fmt.Errorf("AddAndActivateConnection failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
call := m.nmObject.Call(nmInterface+".AddAndActivateConnection", 0, settings, wifiDevice.Path, ap.ObjectPath)
|
log.Printf("Connection created: %s, Active path: %s", connectionPath, activeConnectionPath)
|
||||||
if call.Err != nil {
|
|
||||||
return fmt.Errorf("AddAndActivateConnection D-Bus call error: %w", call.Err)
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user