From e4e0038fec489a96b0788a22fab8bdbf9e8e49a6 Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Wed, 13 Nov 2024 10:09:22 +0000 Subject: [PATCH 1/4] Try to fix some WiFi authentication issues --- web/src/components/network/WifiConnectionForm.tsx | 10 +++++++++- web/src/components/network/WifiNetworksListPage.tsx | 6 ++++-- web/src/queries/network.ts | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/web/src/components/network/WifiConnectionForm.tsx b/web/src/components/network/WifiConnectionForm.tsx index a439be9500..d25b65bd3a 100644 --- a/web/src/components/network/WifiConnectionForm.tsx +++ b/web/src/components/network/WifiConnectionForm.tsx @@ -55,6 +55,12 @@ const selectorOptions = security_options.map((security) => ( )); +const securityFrom = (supported) => { + if (supported.includes("WPA2")) return "wpa-psk"; + if (supported.includes("WPA1")) return "wpa-psk"; + return ""; +}; + // FIXME: improve error handling. The errors props should have a key/value error // and the component should show all of them, if any export default function WifiConnectionForm({ @@ -71,7 +77,9 @@ export default function WifiConnectionForm({ const { mutate: updateConnection } = useConnectionMutation(); const { mutate: updateSelectedNetwork } = useSelectedWifiChange(); const [ssid, setSsid] = useState(network.ssid); - const [security, setSecurity] = useState(settings.security); + const [security, setSecurity] = useState( + settings?.security || securityFrom(network?.security || []), + ); const [password, setPassword] = useState(settings.password); const [showErrors, setShowErrors] = useState(Object.keys(errors).length > 0); const [isConnecting, setIsConnecting] = useState(false); diff --git a/web/src/components/network/WifiNetworksListPage.tsx b/web/src/components/network/WifiNetworksListPage.tsx index 3f68e3621d..36c230355c 100644 --- a/web/src/components/network/WifiNetworksListPage.tsx +++ b/web/src/components/network/WifiNetworksListPage.tsx @@ -56,6 +56,7 @@ import { useRemoveConnectionMutation, useSelectedWifi, useSelectedWifiChange, + useNetworkConfigChanges, useWifiNetworks, } from "~/queries/network"; import { slugify } from "~/utils"; @@ -222,11 +223,12 @@ const NetworkListItem = ({ network }) => { * Component for displaying a list of available Wi-Fi networks */ function WifiNetworksListPage() { + useNetworkConfigChanges(); const networks: WifiNetwork[] = useWifiNetworks(); const { ssid: selectedSsid, hidden } = useSelectedWifi(); + // FIXME: improve below type casting, if possible const selected = hidden - ? // FIXME: improve below type casting, if possible - (HIDDEN_NETWORK as unknown as WifiNetwork) + ? (HIDDEN_NETWORK as unknown as WifiNetwork) : networks.find((n) => n.ssid === selectedSsid); const { mutate: changeSelection } = useSelectedWifiChange(); diff --git a/web/src/queries/network.ts b/web/src/queries/network.ts index b3da56afcd..f059d5cd12 100644 --- a/web/src/queries/network.ts +++ b/web/src/queries/network.ts @@ -245,6 +245,7 @@ const useNetworkConfigChanges = () => { ) { if (current_device.state !== data.state) { queryClient.invalidateQueries({ queryKey: ["network"] }); + return changeSelected.mutate({ needsAuth: false }); } } if ([DeviceState.NEEDAUTH, DeviceState.FAILED].includes(data.state)) { From 39434170d1e65be8429ce5ca73dcbbe4778e10d0 Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Thu, 14 Nov 2024 14:54:31 +0000 Subject: [PATCH 2/4] Make optional some DBus wireless settings --- rust/agama-server/src/network/nm/dbus.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/rust/agama-server/src/network/nm/dbus.rs b/rust/agama-server/src/network/nm/dbus.rs index c8622092e4..e2f9093044 100644 --- a/rust/agama-server/src/network/nm/dbus.rs +++ b/rust/agama-server/src/network/nm/dbus.rs @@ -870,18 +870,18 @@ fn wireless_config_from_dbus(conn: &OwnedNestedHash) -> Result()) .collect::, _>>()?; + let mut wireless_config = WirelessConfig { mode: NmWirelessMode(mode).try_into()?, ssid: SSID(ssid), ..Default::default() }; - if let Ok(band) = get_property::(wireless, "band") { + if let Some(band) = get_optional_property::(wireless, "band")? { wireless_config.band = WirelessBand::try_from(band.as_str()).ok(); } - wireless_config.channel = get_property(wireless, "channel")?; - if let Ok(bssid) = get_property::(wireless, "bssid") { + if let Some(bssid) = get_optional_property::(wireless, "bssid")? { let bssid: Vec = bssid .iter() .map(|u| u.downcast_ref::()) @@ -897,7 +897,13 @@ fn wireless_config_from_dbus(conn: &OwnedNestedHash) -> Result Result, InvalidWPAProtocolVersion>>()?; wireless_config.wpa_protocol_versions = wpa_protocol_versions } - wireless_config.pmf = get_property(security, "pmf")?; + + if let Some(pmf) = get_optional_property(security, "pmf")? { + wireless_config.pmf = pmf; + } } Ok(Some(wireless_config)) From 2196163cd5ee67886689aeb46c1dc8638c056f36 Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Thu, 14 Nov 2024 14:54:39 +0000 Subject: [PATCH 3/4] Added changelog --- rust/package/agama.changes | 6 ++++++ web/package/agama-web-ui.changes | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/rust/package/agama.changes b/rust/package/agama.changes index df33050e4d..f1fa12f22a 100644 --- a/rust/package/agama.changes +++ b/rust/package/agama.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Nov 14 14:45:47 UTC 2024 - Knut Alejandro Anderssen González + +- Get some wireless settings as optional in order to not break the + connections reader (gh#agama-project/agama#1753). + ------------------------------------------------------------------- Wed Nov 13 12:03:02 UTC 2024 - Imobach Gonzalez Sosa diff --git a/web/package/agama-web-ui.changes b/web/package/agama-web-ui.changes index 69f7354082..8319885fc8 100644 --- a/web/package/agama-web-ui.changes +++ b/web/package/agama-web-ui.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Nov 14 14:42:46 UTC 2024 - Knut Anderssen + +- Fix wireless authentication initialization as well as the + invalidate the cached query in case of connected + (gh#agama-project/agama#1753). + ------------------------------------------------------------------- Wed Nov 13 12:06:41 UTC 2024 - Imobach Gonzalez Sosa @@ -20,7 +27,7 @@ Tue Nov 5 11:33:12 UTC 2024 - Imobach Gonzalez Sosa - Fix a crash when editing a network connection containing an additional IP address (gh#agama-project/agama#1728). - + ------------------------------------------------------------------- Mon Nov 4 20:32:29 UTC 2024 - David Diaz From a375470329700cb54b7e3aa8d60aa2a2dd91e8a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Alejandro=20Anderssen=20Gonz=C3=A1lez?= Date: Thu, 14 Nov 2024 15:57:33 +0000 Subject: [PATCH 4/4] Update web/package/agama-web-ui.changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Imobach González Sosa --- web/package/agama-web-ui.changes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/package/agama-web-ui.changes b/web/package/agama-web-ui.changes index 8319885fc8..305c00a6d3 100644 --- a/web/package/agama-web-ui.changes +++ b/web/package/agama-web-ui.changes @@ -1,7 +1,7 @@ ------------------------------------------------------------------- Thu Nov 14 14:42:46 UTC 2024 - Knut Anderssen -- Fix wireless authentication initialization as well as the +- Fix wireless authentication initialization and invalidate the cached query in case of connected (gh#agama-project/agama#1753).