Tease apart wifi config into dedicated module and use module in existing wifi config tool
This commit is contained in:
parent
83743a9f90
commit
48d757a6b6
|
@ -6,6 +6,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"git.kemonine.info/PiFrame/wifi"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Various commands that we need for this process
|
// Various commands that we need for this process
|
||||||
|
@ -13,7 +15,6 @@ const (
|
||||||
CMD_BLKID = "/usr/sbin/blkid"
|
CMD_BLKID = "/usr/sbin/blkid"
|
||||||
CMD_FINDMNT = "/usr/bin/findmnt"
|
CMD_FINDMNT = "/usr/bin/findmnt"
|
||||||
CMD_MOUNT = "/usr/bin/mount"
|
CMD_MOUNT = "/usr/bin/mount"
|
||||||
CMD_NMCLI = "/usr/bin/nmcli"
|
|
||||||
CMD_UMOUNT = "/usr/bin/umount"
|
CMD_UMOUNT = "/usr/bin/umount"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -90,29 +91,11 @@ func main() {
|
||||||
essid := config[0]
|
essid := config[0]
|
||||||
password := config[1]
|
password := config[1]
|
||||||
log.Printf("Using config: %s / %s for WiFi\n", essid, password)
|
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()
|
// Cleanup old wifi configs and apply new one
|
||||||
if err != nil {
|
nmWifi := wifi.New(essid, password)
|
||||||
log.Fatalf("Error running %s : %s", CMD_NMCLI, err)
|
nmWifi.ApplyConfig()
|
||||||
}
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
// Unmount the filesystem and continue
|
// Unmount the filesystem and continue
|
||||||
err = exec.Command(CMD_UMOUNT, MOUNTPOINT).Run()
|
err = exec.Command(CMD_UMOUNT, MOUNTPOINT).Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
3
wifi/README.md
Normal file
3
wifi/README.md
Normal file
|
@ -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.
|
50
wifi/wifi.go
Normal file
50
wifi/wifi.go
Normal file
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue