works against gocui

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2023-04-11 15:24:43 -05:00
parent c16bb5b088
commit 9975aefe1e
5 changed files with 21 additions and 84 deletions

10
gui.go
View File

@ -15,16 +15,13 @@ import (
// This setups up the dns control panel window // This setups up the dns control panel window
func setupControlPanelWindow() { func setupControlPanelWindow() {
me.window = myGui.New2().Window("DNS and IPv6 Control Panel").Standard() // me.window = myGui.New2().Window("DNS and IPv6 Control Panel").Standard()
me.window = myGui.NewWindow("DNS and IPv6 Control Panel").Standard()
me.window.Dump(true) me.window.Dump(true)
sleep(1) sleep(1)
addDNSTab("DNS") addDNSTab("DNS")
if (args.GuiDebug) {
gui.DebugWindow()
}
gui.ShowDebugValues()
} }
func addDNSTab(title string) { func addDNSTab(title string) {
@ -41,8 +38,7 @@ func addDNSTab(title string) {
g2.NewButton("Load 'gocui'", func () { g2.NewButton("Load 'gocui'", func () {
// this set the xterm and mate-terminal window title. maybe works generally? // this set the xterm and mate-terminal window title. maybe works generally?
fmt.Println("\033]0;" + title + "blah \007") fmt.Println("\033]0;" + title + "blah \007")
gui.StartS("gocui") gui.LoadPlugin("gocui")
gui.Redraw("gocui")
}) })
g2.NewButton("Network Interfaces", func () { g2.NewButton("Network Interfaces", func () {

26
main.go
View File

@ -37,16 +37,25 @@ func main() {
// Example_listLink() // Example_listLink()
log("Toolkit = ", args.Toolkit) log("Toolkit = ", args.Toolkit)
// gui.InitPlugins([]string{"andlabs"}) for i, t := range args.Toolkit {
// gui.SetDebug(true) log("trying to load plugin", i, t)
// myGui = gui.Main(initGUI) gui.LoadPlugin(t)
myGui = gui.Start() }
// will set all debugging flags
gui.SetDebug(true)
myGui = gui.New()
sleep(1) sleep(1)
setupControlPanelWindow() setupControlPanelWindow()
sleep(1) sleep(1)
myGui.LoadPlugin("gocui") // sleep(1)
// gui.Redraw("gocui") if (args.GuiDebug) {
sleep(1) gui.DebugWindow()
}
gui.ShowDebugValues()
// forever monitor for network and dns changes
checkNetworkChanges() checkNetworkChanges()
} }
@ -70,7 +79,8 @@ func checkNetworkChanges() {
} }
} }
// Run this every once and a while // This checks for changes to the network settings
// and verifies that DNS is working or not working
func dnsTTL() { func dnsTTL() {
me.changed = false me.changed = false
log("FQDN =", me.fqdn.GetText()) log("FQDN =", me.fqdn.GetText())

1
net.go
View File

@ -4,7 +4,6 @@ package main
import ( import (
"net" "net"
"strings" "strings"
// "git.wit.org/wit/gui"
) )
var DEBUGNET bool = false var DEBUGNET bool = false

View File

@ -1,66 +0,0 @@
package main
// examples of what ifconfig does
// example of AF_NETLINK change:
// https://stackoverflow.com/questions/579783/how-to-detect-ip-address-change-programmatically-in-linux/2353441#2353441
// from that page, a link to watch for any ip event:
// https://github.com/angt/ipevent/blob/master/ipevent.c
// https://github.com/mdlayher/talks : Linux, Netlink, and Go in 7 minutes or less! (GopherCon 2018, lightning talk)
/*
c example from ipevent.c :
int fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
struct sockaddr_nl snl = {
.nl_family = AF_NETLINK,
.nl_groups = RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR,
};
*/
/*
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

@ -8,8 +8,6 @@ import (
"os" "os"
"os/exec" "os/exec"
"net" "net"
// "git.wit.org/wit/gui"
// "github.com/davecgh/go-spew/spew"
) )
func CheckSuperuser() bool { func CheckSuperuser() bool {