need a netlink function to trigger on changes

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2023-02-10 01:12:26 -06:00
parent 9179af8289
commit 32f47de62a
3 changed files with 52 additions and 1 deletions

3
gui.go
View File

@ -49,7 +49,10 @@ func addDNSTab(window *gui.Node, title string) {
dd.OnChanged = func(*gui.Node) {
s := dd.GetText()
tb.SetText("hello world " + args.User + "\n" + s)
log.Println("text =", s)
}
g.NewLabel("UID =")
g2 = newNode.NewGroup("group 2")
tb = g2.NewTextbox("tb")

48
netlink.go Normal file
View File

@ -0,0 +1,48 @@
package main
/*
import (
// "os"
// "os/exec"
// "log"
// "net"
// "unix"
"github.com/vishvananda/netlink"
"github.com/jsimonetti/rtnetlink"
// "git.wit.org/wit/gui"
// "github.com/davecgh/go-spew/spew"
)
// In golang, write a function to register with netlink to detect changes to any network interface Use tab indentation. Do not include example usage.
func registerNetlink() error {
// Create netlink socket
sock, err := netlink.Socket(rtnetlink.NETLINK_ROUTE, 0)
if err != nil {
return err
}
// Register for interface change events
err = netlink.AddMembership(sock, netlink.RTNLGRP_LINK)
if err != nil {
return err
}
// Close the socket
defer sock.Close()
// Handle incoming notifications
for {
msgs, _, err := sock.Receive()
if err != nil {
return err
}
for _, msg := range msgs {
switch msg.Header.Type {
case unix.RTM_NEWLINK:
// Do something with new link
case unix.RTM_DELLINK:
// Do something with deleted link
}
}
}
return nil
}
*/

View File

@ -19,7 +19,7 @@ func CheckSuperuser() bool {
func Escalate() {
if os.Getuid() != 0 {
cmd := exec.Command("sudo", "./control-panel-dns")
cmd := exec.Command("sudo", "./control-panel-dns") // TODO: get the actual path
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr