From b3da6774acb691a6df2dc67436e9fa4abd870973 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Thu, 17 Jul 2025 16:05:04 +0200 Subject: [PATCH] Do stations scan/retrieval --- main.go | 26 ++++++-------------------- static/app.js | 12 ++---------- 2 files changed, 8 insertions(+), 30 deletions(-) diff --git a/main.go b/main.go index 40ad683..c8b9fe7 100644 --- a/main.go +++ b/main.go @@ -324,7 +324,7 @@ func scanWiFiNetworks() ([]WiFiNetwork, error) { // Déclencher un scan wifiInterface := dbusConn.Object(WPA_SUPPLICANT_SERVICE, interfacePath) - call := wifiInterface.Call(WPA_INTERFACE_IFACE+".Scan", 0, map[string]dbus.Variant{}) + call := wifiInterface.Call(WPA_INTERFACE_IFACE+".Scan", 0, map[string]dbus.Variant{"Type": dbus.MakeVariant("active")}) if call.Err != nil { return nil, fmt.Errorf("erreur lors du scan: %v", call.Err) } @@ -333,8 +333,7 @@ func scanWiFiNetworks() ([]WiFiNetwork, error) { time.Sleep(2 * time.Second) // Récupérer la liste des BSS - var bssePaths []dbus.ObjectPath - err = wifiInterface.Call(WPA_INTERFACE_IFACE+".Get", 0, WPA_INTERFACE_IFACE, "BSSs").Store(&bssePaths) + bssePaths, err := wifiInterface.GetProperty(WPA_INTERFACE_IFACE + ".BSSs") if err != nil { return nil, fmt.Errorf("erreur lors de la récupération des BSS: %v", err) } @@ -342,7 +341,7 @@ func scanWiFiNetworks() ([]WiFiNetwork, error) { var networks []WiFiNetwork seenSSIDs := make(map[string]bool) - for _, bssPath := range bssePaths { + for _, bssPath := range bssePaths.Value().([]dbus.ObjectPath) { bss := dbusConn.Object(WPA_SUPPLICANT_SERVICE, bssPath) // Récupérer les propriétés du BSS @@ -472,26 +471,13 @@ func disconnectWiFiDBus() error { } func getWiFiInterfacePath() (dbus.ObjectPath, error) { - var interfaces []dbus.ObjectPath - err := wpaSupplicant.Call(WPA_SUPPLICANT_IFACE+".Get", 0, WPA_SUPPLICANT_IFACE, "Interfaces").Store(&interfaces) + var interfacePath dbus.ObjectPath + err := wpaSupplicant.Call(WPA_SUPPLICANT_IFACE+".GetInterface", 0, WLAN_INTERFACE).Store(&interfacePath) if err != nil { return "", fmt.Errorf("erreur lors de la récupération des interfaces: %v", err) } - for _, interfacePath := range interfaces { - wifiInterface := dbusConn.Object(WPA_SUPPLICANT_SERVICE, interfacePath) - var ifname string - err = wifiInterface.Call(WPA_INTERFACE_IFACE+".Get", 0, WPA_INTERFACE_IFACE, "Ifname").Store(&ifname) - if err != nil { - continue - } - - if ifname == WLAN_INTERFACE { - return interfacePath, nil - } - } - - return "", fmt.Errorf("interface %s non trouvée", WLAN_INTERFACE) + return interfacePath, nil } func isConnectedDBus() bool { diff --git a/static/app.js b/static/app.js index ebd91e6..6fce809 100644 --- a/static/app.js +++ b/static/app.js @@ -9,14 +9,6 @@ let appState = { }; // Simulation de données -const mockWifiNetworks = [ - { ssid: "Hotel_WiFi", signal: 4, security: "WPA2", channel: 6 }, - { ssid: "Starbucks_Free", signal: 3, security: "Open", channel: 11 }, - { ssid: "AndroidAP", signal: 2, security: "WPA2", channel: 1 }, - { ssid: "iPhone_Hotspot", signal: 5, security: "WPA2", channel: 6 }, - { ssid: "Guest_Network", signal: 1, security: "WPA", channel: 11 } -]; - const mockDevices = [ { name: "iPhone 13", type: "mobile", mac: "AA:BB:CC:DD:EE:FF", ip: "192.168.1.101" }, { name: "MacBook Pro", type: "laptop", mac: "11:22:33:44:55:66", ip: "192.168.1.102" }, @@ -36,11 +28,11 @@ function initializeApp() { addLog("Système", "Interface web initialisée"); } -function updateWifiList() { +async function updateWifiList() { const wifiList = document.getElementById('wifiList'); wifiList.innerHTML = ''; - mockWifiNetworks.forEach((network, index) => { + (await (await fetch('/api/wifi/scan')).json()).forEach((network, index) => { const wifiItem = document.createElement('div'); wifiItem.className = 'wifi-item'; wifiItem.onclick = () => selectWifi(network, wifiItem);