68 lines
1.3 KiB
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()
|
|
}
|