From 48d757a6b6eef8b859a367cf5fb760a832c58f2e Mon Sep 17 00:00:00 2001 From: KemoNine Date: Tue, 1 Sep 2020 19:05:09 -0400 Subject: [PATCH] Tease apart wifi config into dedicated module and use module in existing wifi config tool --- cmd/wifi/wifi.go | 31 +++++++----------------------- wifi/README.md | 3 +++ wifi/wifi.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 wifi/README.md create mode 100644 wifi/wifi.go diff --git a/cmd/wifi/wifi.go b/cmd/wifi/wifi.go index 2aa576d..4d6ac5a 100644 --- a/cmd/wifi/wifi.go +++ b/cmd/wifi/wifi.go @@ -6,6 +6,8 @@ import ( "os" "os/exec" "strings" + + "git.kemonine.info/PiFrame/wifi" ) // Various commands that we need for this process @@ -13,7 +15,6 @@ const ( CMD_BLKID = "/usr/sbin/blkid" CMD_FINDMNT = "/usr/bin/findmnt" CMD_MOUNT = "/usr/bin/mount" - CMD_NMCLI = "/usr/bin/nmcli" CMD_UMOUNT = "/usr/bin/umount" ) @@ -90,29 +91,11 @@ func main() { essid := config[0] password := config[1] log.Printf("Using config: %s / %s for WiFi\n", essid, password) - // Cleanup existing WiFi connections - nmcliOut, err := exec.Command(CMD_NMCLI, "-t", "connection", "show").Output() - if err != nil { - log.Fatalf("Error running %s : %s", CMD_NMCLI, err) - } - connections := strings.Split(strings.Trim(string(nmcliOut), "\n"), "\n") - for _, connection := range connections { - details := strings.Split(connection, ":") - if details[2] != "802-11-wireless" { - continue - } - log.Printf("Cleaning up WiFi connection %s", details[0]) - err := exec.Command(CMD_NMCLI, "connection", "del", details[1]).Run() - if err != nil { - log.Fatalf("Error running %s : %s", CMD_NMCLI, err) - } - } - // Create new WiFi connection with network manager - log.Printf("Connecting to %s with password %s\n", essid, password) - err = exec.Command(CMD_NMCLI, "d", "wifi", "connect", essid, "password", password).Run() - if err != nil { - log.Fatalf("Error running %s : %s", CMD_NMCLI, err) - } + + // Cleanup old wifi configs and apply new one + nmWifi := wifi.New(essid, password) + nmWifi.ApplyConfig() + // Unmount the filesystem and continue err = exec.Command(CMD_UMOUNT, MOUNTPOINT).Run() if err != nil { diff --git a/wifi/README.md b/wifi/README.md new file mode 100644 index 0000000..5fa264b --- /dev/null +++ b/wifi/README.md @@ -0,0 +1,3 @@ +# wifi + +A very simple construct for calling ```nmcli``` in a way that'll clear existing WiFi configs and add a new one. diff --git a/wifi/wifi.go b/wifi/wifi.go new file mode 100644 index 0000000..99d5014 --- /dev/null +++ b/wifi/wifi.go @@ -0,0 +1,50 @@ +package wifi + +import ( + "log" + "os/exec" + "strings" +) + +const ( + CMD_NMCLI = "/usr/bin/nmcli" +) + +type wifi struct { + essid string + password string +} + +func New(essid string, password string) *wifi { + w := wifi{ + essid: essid, + password: password, + } + return &w +} + +func (w *wifi) ApplyConfig() { + // Cleanup existing WiFi connections + nmcliOut, err := exec.Command(CMD_NMCLI, "-t", "connection", "show").Output() + if err != nil { + log.Fatalf("Error running %s : %s", CMD_NMCLI, err) + } + connections := strings.Split(strings.Trim(string(nmcliOut), "\n"), "\n") + for _, connection := range connections { + details := strings.Split(connection, ":") + if details[2] != "802-11-wireless" { + continue + } + log.Printf("Cleaning up WiFi connection %s", details[0]) + err := exec.Command(CMD_NMCLI, "connection", "del", details[1]).Run() + if err != nil { + log.Fatalf("Error running %s : %s", CMD_NMCLI, err) + } + } + // Create new WiFi connection with network manager + log.Printf("Connecting to %s with password %s\n", w.essid, w.password) + err = exec.Command(CMD_NMCLI, "d", "wifi", "connect", w.essid, "password", w.password).Run() + if err != nil { + log.Fatalf("Error running %s : %s", CMD_NMCLI, err) + } +}