wifimanager/wifinetworks/wifinetworks.go

68 lines
1.3 KiB
Go

package wifinetworks
import (
"encoding/json"
"errors"
"io/ioutil"
"log"
)
type Wifinetwork struct {
SSID string `json:"SSID"`
PSK string `json:"PSK"`
Priority bool `json:"Priority"`
}
type Wifinetworks struct {
Networks []Wifinetwork
}
func (w *Wifinetworks) Load() {
s, err := ioutil.ReadFile("networks.json")
if err != nil {
log.Println("No saved networks")
return
}
err = json.Unmarshal(s, &w.Networks)
if err != nil {
log.Println("Error decofing known networks: ", err)
return
}
log.Printf("Loaded %d networks from config\n", len(w.Networks))
}
func (w *Wifinetworks) Save() {
j, err := json.Marshal(w.Networks)
if err != nil {
log.Fatal("JSON Marshal: ", err)
}
err = ioutil.WriteFile("networks.json", j, 0700)
}
func (w *Wifinetworks) RemoveSSID(s string) {
var n Wifinetworks
for i := range w.Networks {
if w.Networks[i].SSID != s {
n.Networks = append(n.Networks, w.Networks[i])
}
}
w.Networks = n.Networks
w.Save()
}
func (w *Wifinetworks) Find(ssid string) (Wifinetwork, error) {
for n := range w.Networks {
if w.Networks[n].SSID == ssid {
return w.Networks[n], nil
}
}
var bleh Wifinetwork
return bleh, errors.New("Not found")
}
func (w *Wifinetworks) Add(n Wifinetwork) {
w.RemoveSSID(n.SSID)
w.Networks = append(w.Networks, n)
w.Save()
}