From 077ec7bd7a839ff4612ded60e82162ccd6888443 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Mon, 29 Oct 2018 11:19:40 +0100 Subject: [PATCH] Adding GetWifiIfaceBySSID and cleaning tests --- testdata/uci_show_wireless_2_cards.txt | 7 +++++++ uci.go | 17 +++++++++++++++++ uci_test.go | 16 ++++++++++++++++ uci_wireless_conf.go | 2 ++ 4 files changed, 42 insertions(+) diff --git a/testdata/uci_show_wireless_2_cards.txt b/testdata/uci_show_wireless_2_cards.txt index 961b866..d1c86db 100644 --- a/testdata/uci_show_wireless_2_cards.txt +++ b/testdata/uci_show_wireless_2_cards.txt @@ -22,6 +22,13 @@ wireless.radio1.path='soc/soc:pcie/pci0000:00/0000:00:02.0/0000:02:00.0' wireless.radio1.channel='1' wireless.radio1.legacy_rates='1' wireless.radio1.disabled='0' +wireless.@wifi-iface[0]=wifi-iface +wireless.@wifi-iface[0].ssid='Quid' +wireless.@wifi-iface[0].encryption='psk2' +wireless.@wifi-iface[0].device='radio1' +wireless.@wifi-iface[0].mode='ap' +wireless.@wifi-iface[0].disabled='0' +wireless.@wifi-iface[0].network='efs' wireless.@wifi-iface[1]=wifi-iface wireless.@wifi-iface[1].device='radio1' wireless.@wifi-iface[1].mode='ap' diff --git a/uci.go b/uci.go index 7fc88df..b2ff144 100644 --- a/uci.go +++ b/uci.go @@ -122,6 +122,23 @@ func (u *UCI) GetWifiIfaceByName(name string) *UCIWirelessInterface { return nil } +// GetWifiIfaceBySSID returns the wifi Interface by Index +func (u *UCI) GetWifiIfaceBySSID(ssid string) *UCIWirelessInterface { + u.LoadWirelessConf() + ifaces := u.Wireless.Interfaces + if len(ifaces) <= 0 { + fmt.Println("ifaces are empty !!! fuck") + return nil + } + for _, ifa := range ifaces { + if ifa.Ssid == ssid { + return ifa + } + } + fmt.Println("iface not found !") + return nil +} + // GetWifiIfaces wifi interfaces in configuration func (u *UCI) GetWifiIfaces() []*UCIWirelessInterface { return u.Wireless.Interfaces diff --git a/uci_test.go b/uci_test.go index 733d9e2..1ed89eb 100644 --- a/uci_test.go +++ b/uci_test.go @@ -2,6 +2,7 @@ package owrt import ( "fmt" + "io/ioutil" "testing" ) @@ -98,3 +99,18 @@ func TestUCIReload(t *testing.T) { t.Error("Stderr is not empty ...") } } + +func TestGetWifiIfaceBySSID(t *testing.T) { + config, err := ioutil.ReadFile("./testdata/uci_show_wireless_2_cards.txt") + if err != nil { + t.Fatal(err) + } + exec := createMockExecutor(string(config), "", 0) + uci := NewUCIWithExecutor(exec) + uci.LoadWirelessConf() + wifi := uci.GetWifiIfaceBySSID("Pyxis2") + fmt.Printf("%s\n", wifi.Ssid) + if g, e := wifi.Ssid, "Pyxis2"; g != e { + t.Fatalf("Wifi SSID have to be [%s] and we have [%s]", e, g) + } +} diff --git a/uci_wireless_conf.go b/uci_wireless_conf.go index bd22188..8dd043c 100644 --- a/uci_wireless_conf.go +++ b/uci_wireless_conf.go @@ -79,6 +79,7 @@ func (wc *UCIWirelessConf) parseInterfaces(lines []string) int { for key, expr := range matches { if expr.MatchString(li) { value := strings.Split(li, "=")[1] + value = strings.Trim(value, "'") if key == "Name" { wc.Interfaces[idx].Name = value } @@ -93,6 +94,7 @@ func (wc *UCIWirelessConf) parseInterfaces(lines []string) int { wc.Interfaces[idx].Mode = value } if key == "Ssid" { + fmt.Printf("Fixing SSID FOR %s\n", value) wc.Interfaces[idx].Ssid = value } if key == "Encryption" {