Compare commits
7 Commits
c1a00fcc1a
...
fc6c72740b
Author | SHA1 | Date |
---|---|---|
|
fc6c72740b | |
|
0592636049 | |
|
ee6c4e2a72 | |
|
fdcd51d211 | |
|
ff21dba712 | |
|
3baa63dadf | |
|
d52dc52734 |
2
Makefile
2
Makefile
|
@ -2,7 +2,7 @@
|
|||
|
||||
run: build
|
||||
# ./control-panel-dns >/tmp/witgui.log.stderr 2>&1
|
||||
./control-panel-dns --debugger
|
||||
./control-panel-dns
|
||||
|
||||
install:
|
||||
go install -v go.wit.com/control-panel-dns@latest
|
||||
|
|
|
@ -35,10 +35,9 @@ type digStatus struct {
|
|||
statusIPv6 string
|
||||
|
||||
parent *gui.Node
|
||||
window *gui.Node
|
||||
window *gadgets.BasicWindow
|
||||
group *gui.Node
|
||||
grid *gui.Node
|
||||
box *gui.Node
|
||||
|
||||
summary *gui.Node
|
||||
status *gadgets.OneLiner
|
||||
|
@ -93,15 +92,11 @@ func NewDigStatusWindow(p *gui.Node) *digStatus {
|
|||
ds.ready = false
|
||||
ds.hidden = true
|
||||
|
||||
ds.window = p.NewWindow("DNS Resolver Status")
|
||||
ds.window.Custom = func () {
|
||||
ds.hidden = true
|
||||
ds.window = gadgets.NewBasicWindow(p, "DNS Resolver Status")
|
||||
ds.window.Hide()
|
||||
}
|
||||
ds.box = ds.window.NewBox("hBox", true)
|
||||
|
||||
// summary of the current state of things
|
||||
ds.summary = ds.box.NewGroup("Summary")
|
||||
ds.summary = ds.window.Box().NewGroup("Summary")
|
||||
g := ds.summary.NewGrid("LookupStatus", 2, 2)
|
||||
g.Pad()
|
||||
|
||||
|
@ -112,7 +107,7 @@ func NewDigStatusWindow(p *gui.Node) *digStatus {
|
|||
ds.speedActual = gadgets.NewOneLiner(g, "actual").Set("unknown")
|
||||
|
||||
// make the area to store the raw details
|
||||
ds.details = ds.box.NewGroup("Details")
|
||||
ds.details = ds.window.Box().NewGroup("Details")
|
||||
ds.dsLocalhost = NewDnsStatus(ds.details, "(localhost)", "127.0.0.1:53", "go.wit.com")
|
||||
ds.dsLocalNetwork = NewDnsStatus(ds.details, "(Local Network)", "172.22.0.1:53", "go.wit.com")
|
||||
ds.dsCloudflare = NewDnsStatus(ds.details, "(cloudflare)", "1.1.1.1:53", "go.wit.com")
|
||||
|
|
41
go.mod
41
go.mod
|
@ -1,42 +1,3 @@
|
|||
module go.wit.com/control-panel-dns
|
||||
module go.wit.com/control-panels/dns
|
||||
|
||||
go 1.21.4
|
||||
|
||||
require (
|
||||
github.com/Showmax/go-fqdn v1.0.0
|
||||
github.com/alexflint/go-arg v1.4.3
|
||||
github.com/creack/pty v1.1.21
|
||||
github.com/davecgh/go-spew v1.1.1
|
||||
github.com/fsnotify/fsnotify v1.7.0
|
||||
github.com/golang/protobuf v1.5.3
|
||||
github.com/jsimonetti/rtnetlink v1.4.0
|
||||
github.com/miekg/dns v1.1.57
|
||||
github.com/rs/dnstrace v1.4.1
|
||||
go.wit.com/gui v0.9.2
|
||||
go.wit.com/shell v0.0.0-20231220210920-25715e30ee82
|
||||
golang.org/x/term v0.15.0
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/alexflint/go-scalar v1.1.0 // indirect
|
||||
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf // indirect
|
||||
github.com/google/go-cmp v0.6.0 // indirect
|
||||
github.com/josharian/native v1.1.0 // indirect
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
||||
github.com/mdlayher/netlink v1.7.2 // indirect
|
||||
github.com/mdlayher/socket v0.4.1 // indirect
|
||||
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||
github.com/svent/go-nbreader v0.0.0-20150201200112-7cef48da76dc // indirect
|
||||
github.com/tmc/scp v0.0.0-20170824174625-f7b48647feef // indirect
|
||||
github.com/wercker/journalhook v0.0.0-20230927020745-64542ffa4117 // indirect
|
||||
go.uber.org/atomic v1.7.0 // indirect
|
||||
go.uber.org/multierr v1.9.0 // indirect
|
||||
golang.org/x/crypto v0.17.0 // indirect
|
||||
golang.org/x/mod v0.12.0 // indirect
|
||||
golang.org/x/net v0.17.0 // indirect
|
||||
golang.org/x/sync v0.4.0 // indirect
|
||||
golang.org/x/sys v0.15.0 // indirect
|
||||
golang.org/x/tools v0.13.0 // indirect
|
||||
google.golang.org/protobuf v1.26.0 // indirect
|
||||
)
|
||||
|
|
88
go.sum
88
go.sum
|
@ -1,88 +0,0 @@
|
|||
github.com/Showmax/go-fqdn v1.0.0 h1:0rG5IbmVliNT5O19Mfuvna9LL7zlHyRfsSvBPZmF9tM=
|
||||
github.com/Showmax/go-fqdn v1.0.0/go.mod h1:SfrFBzmDCtCGrnHhoDjuvFnKsWjEQX/Q9ARZvOrJAko=
|
||||
github.com/alexflint/go-arg v1.4.3 h1:9rwwEBpMXfKQKceuZfYcwuc/7YY7tWJbFsgG5cAU/uo=
|
||||
github.com/alexflint/go-arg v1.4.3/go.mod h1:3PZ/wp/8HuqRZMUUgu7I+e1qcpUbvmS258mRXkFH4IA=
|
||||
github.com/alexflint/go-scalar v1.1.0 h1:aaAouLLzI9TChcPXotr6gUhq+Scr8rl0P9P4PnltbhM=
|
||||
github.com/alexflint/go-scalar v1.1.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o=
|
||||
github.com/cilium/ebpf v0.12.3 h1:8ht6F9MquybnY97at+VDZb3eQQr8ev79RueWeVaEcG4=
|
||||
github.com/cilium/ebpf v0.12.3/go.mod h1:TctK1ivibvI3znr66ljgi4hqOT8EYQjz1KWBfb1UVgM=
|
||||
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU=
|
||||
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||
github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
|
||||
github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
|
||||
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA=
|
||||
github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
|
||||
github.com/jsimonetti/rtnetlink v1.4.0 h1:Z1BF0fRgcETPEa0Kt0MRk3yV5+kF1FWTni6KUFKrq2I=
|
||||
github.com/jsimonetti/rtnetlink v1.4.0/go.mod h1:5W1jDvWdnthFJ7fxYX1GMK07BUpI4oskfOqvPteYS6E=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||
github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g=
|
||||
github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw=
|
||||
github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U=
|
||||
github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA=
|
||||
github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
|
||||
github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rs/dnstrace v1.4.1 h1:o6W+8hO9kGcdq9FZAVudpCyw6WXeD9XXamXyYiei/Hs=
|
||||
github.com/rs/dnstrace v1.4.1/go.mod h1:pFQiHK1kt94r2csi+qAxUsJ58r74QbN2q4JCDuFYTeY=
|
||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
||||
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/svent/go-nbreader v0.0.0-20150201200112-7cef48da76dc h1:usYkrH2/es/TT7ETdC/qLAagcJPW3EEYFKqvibSnFbA=
|
||||
github.com/svent/go-nbreader v0.0.0-20150201200112-7cef48da76dc/go.mod h1:pPzZl0vMkUhyoxUF8PAGG5bDRGo7PY80oO/PMmpLkkc=
|
||||
github.com/tmc/scp v0.0.0-20170824174625-f7b48647feef h1:7D6Nm4D6f0ci9yttWaKjM1TMAXrH5Su72dojqYGntFY=
|
||||
github.com/tmc/scp v0.0.0-20170824174625-f7b48647feef/go.mod h1:WLFStEdnJXpjK8kd4qKLwQKX/1vrDzp5BcDyiZJBHJM=
|
||||
github.com/wercker/journalhook v0.0.0-20230927020745-64542ffa4117 h1:67A5tweHp3C7osHjrYsy6pQZ00bYkTTttZ7kiOwwHeA=
|
||||
github.com/wercker/journalhook v0.0.0-20230927020745-64542ffa4117/go.mod h1:XCsSkdKK4gwBMNrOCZWww0pX6AOt+2gYc5Z6jBRrNVg=
|
||||
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=
|
||||
go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=
|
||||
go.wit.com/gui v0.9.2 h1:QHMYdwpV6MzKwmFUMGevKUDn2a6GAqHN2Ltx8V3HufI=
|
||||
go.wit.com/gui v0.9.2/go.mod h1:asRXEYKmdjhtg1yiBi5A8YEY2YG4lWPS0gvNz4NXGDE=
|
||||
go.wit.com/shell v0.0.0-20231220210920-25715e30ee82 h1:5YVB3Y2PHtH+oE8Y1SzWHIKnJ1SPQa09xNHEw9yxmAI=
|
||||
go.wit.com/shell v0.0.0-20231220210920-25715e30ee82/go.mod h1:57dOTStlN5aao4EOCZFC+D47rF7In6qDZCjQoobJWcA=
|
||||
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
||||
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 h1:Jvc7gsqn21cJHCmAWx0LiimpP18LZmUxkT5Mp7EZ1mI=
|
||||
golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
|
||||
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
|
||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
|
||||
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
||||
golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
|
||||
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
|
||||
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
|
||||
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
|
||||
golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
|
||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
182
gui.go
182
gui.go
|
@ -6,7 +6,7 @@ import (
|
|||
"os"
|
||||
"os/user"
|
||||
"strconv"
|
||||
"net"
|
||||
// "net"
|
||||
"strings"
|
||||
|
||||
"go.wit.com/log"
|
||||
|
@ -15,19 +15,17 @@ import (
|
|||
"go.wit.com/gui/gui"
|
||||
"go.wit.com/gui/gadgets"
|
||||
"go.wit.com/gui/cloudflare"
|
||||
"go.wit.com/gui/debugger"
|
||||
)
|
||||
|
||||
// This setups up the dns control panel window
|
||||
func setupControlPanelWindow() {
|
||||
me.window = myGui.NewWindow("DNS and IPv6 Control Panel")
|
||||
// me.window.Dump() // will dump out some info
|
||||
|
||||
log.Info("artificial sleep of:", me.artificialSleep)
|
||||
log.Sleep(me.artificialSleep)
|
||||
|
||||
// setup the main tab
|
||||
dnsTab("DNS")
|
||||
detailsTab("Details")
|
||||
mainWindow("DNS and IPv6 Control Panel")
|
||||
detailsTab("OS Details")
|
||||
debugTab("Debug")
|
||||
|
||||
// me.digStatus = NewDigStatusWindow(me.window)
|
||||
|
@ -36,9 +34,8 @@ func setupControlPanelWindow() {
|
|||
func detailsTab(title string) {
|
||||
var g2 *gui.Node
|
||||
|
||||
tab := me.window.NewTab(title)
|
||||
|
||||
g2 = tab.NewGroup("Real Stuff")
|
||||
me.details = gadgets.NewBasicWindow(me.myGui, title)
|
||||
g2 = me.details.Box().NewGroup("Real Stuff")
|
||||
|
||||
grid := g2.NewGrid("gridnuts", 2, 2)
|
||||
|
||||
|
@ -71,97 +68,38 @@ func detailsTab(title string) {
|
|||
grid.NewLabel("refresh speed")
|
||||
me.LocalSpeedActual = grid.NewLabel("unknown")
|
||||
|
||||
tab.Margin()
|
||||
tab.Pad()
|
||||
|
||||
grid.Margin()
|
||||
grid.Pad()
|
||||
|
||||
me.details.Hide()
|
||||
}
|
||||
|
||||
func debugTab(title string) {
|
||||
var g2 *gui.Node
|
||||
|
||||
tab := me.window.NewTab(title)
|
||||
me.debug = gadgets.NewBasicWindow(me.myGui, title)
|
||||
|
||||
g2 = tab.NewGroup("Real Stuff")
|
||||
g2 = me.debug.Box().NewGroup("Real Stuff")
|
||||
|
||||
g2.NewButton("Network Interfaces", func () {
|
||||
for i, t := range me.ifmap {
|
||||
log.Println("name =", t.iface.Name)
|
||||
log.Println("int =", i, "name =", t.name, t.iface)
|
||||
log.Println("iface = " + t.iface.Name)
|
||||
}
|
||||
g2.NewButton("GO GUI Debug Window", func () {
|
||||
debugger.DebugWindow(me.myGui)
|
||||
})
|
||||
|
||||
g2.NewButton("Hostname", func () {
|
||||
g2.NewButton("getHostname() looks at the OS settings", func () {
|
||||
getHostname()
|
||||
})
|
||||
|
||||
g2.NewButton("Actual AAAA & A", func () {
|
||||
displayDNS() // doesn't re-query anything
|
||||
})
|
||||
|
||||
g2.NewButton("dig A & AAAA DNS records", func () {
|
||||
log.Println("updateDNS()")
|
||||
updateDNS()
|
||||
})
|
||||
|
||||
g2.NewButton("checkDNS:", func () {
|
||||
ipv6s, ipv4s := checkDNS()
|
||||
for s, _ := range ipv6s {
|
||||
log.Log(NOW, "check if", s, "is in DNS")
|
||||
}
|
||||
for s, _ := range ipv4s {
|
||||
log.Log(NOW, "check if", s, "is in DNS")
|
||||
}
|
||||
})
|
||||
|
||||
g2.NewButton("os.User()", func () {
|
||||
user, _ := user.Current()
|
||||
log.Println("os.Getuid =", user.Username, os.Getuid())
|
||||
if (me.uid != nil) {
|
||||
me.uid.SetText(user.Username + " (" + strconv.Itoa(os.Getuid()) + ")")
|
||||
}
|
||||
})
|
||||
|
||||
g2.NewButton("dig +trace", func () {
|
||||
o := shell.Run("dig +trace +noadditional DS " + me.hostname + " @8.8.8.8")
|
||||
log.Println(o)
|
||||
})
|
||||
|
||||
g2.NewButton("Example_listLink()", func () {
|
||||
Example_listLink()
|
||||
})
|
||||
|
||||
g2.NewButton("Escalate()", func () {
|
||||
Escalate()
|
||||
})
|
||||
|
||||
g2.NewButton("LookupAddr(<raw ipv6>) == fire from /etc/hosts", func () {
|
||||
host, err := net.LookupAddr("2600:1700:afd5:6000:b26e:bfff:fe80:3c52")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
log.Println("host =", host)
|
||||
})
|
||||
|
||||
g2.NewButton("DumpPublicDNSZone(apple.com)", func () {
|
||||
DumpPublicDNSZone("apple.com")
|
||||
dumpIPs("www.apple.com")
|
||||
})
|
||||
|
||||
g2 = tab.NewGroup("debugging options")
|
||||
|
||||
// DEBUG flags
|
||||
me.dbNet = g2.NewCheckbox("turn on network debugging)")
|
||||
me.dbNet.Custom = func() {
|
||||
log.Warn("TODO: re-implement")
|
||||
}
|
||||
|
||||
me.dbProc = g2.NewCheckbox("turn on /proc debugging)")
|
||||
me.dbProc.Custom = func() {
|
||||
log.Warn("TODO: re-implement")
|
||||
}
|
||||
g2 = me.debug.Box().NewGroup("debugging options")
|
||||
|
||||
// makes a slider widget
|
||||
me.ttl = gadgets.NewDurationSlider(g2, "Loop Timeout", 10 * time.Millisecond, 5 * time.Second)
|
||||
|
@ -173,6 +111,8 @@ func debugTab(title string) {
|
|||
|
||||
g2.Margin()
|
||||
g2.Pad()
|
||||
|
||||
me.debug.Hide()
|
||||
}
|
||||
|
||||
// will return a AAAA value that needs to be deleted
|
||||
|
@ -244,11 +184,10 @@ func myDefaultExit(n *gui.Node) {
|
|||
os.Exit(0)
|
||||
}
|
||||
|
||||
func dnsTab(title string) {
|
||||
tab := me.window.NewTab(title)
|
||||
|
||||
me.mainStatus = tab.NewGroup("dns update")
|
||||
func mainWindow(title string) {
|
||||
me.window = gadgets.NewBasicWindow(me.myGui, title)
|
||||
|
||||
me.mainStatus = me.window.Box().NewGroup("dns update")
|
||||
grid := me.mainStatus.NewGrid("gridnuts", 2, 2)
|
||||
|
||||
grid.SetNext(1,1)
|
||||
|
@ -263,77 +202,32 @@ func dnsTab(title string) {
|
|||
grid.NewLabel("DNS A =")
|
||||
me.DnsA = grid.NewLabel("?")
|
||||
|
||||
me.fix = me.mainStatus.NewButton("Fix", func () {
|
||||
if (goodHostname(me.hostname)) {
|
||||
log.Info("hostname is good:", me.hostname)
|
||||
} else {
|
||||
log.Warn("FIX: you need to fix your hostname here", me.hostname)
|
||||
return
|
||||
}
|
||||
// check to see if the cloudflare window exists
|
||||
/*
|
||||
if (me.cloudflareW != nil) {
|
||||
newRR.NameNode.SetText(me.hostname)
|
||||
newRR.TypeNode.SetText("AAAA")
|
||||
for s, t := range me.ipmap {
|
||||
if (t.IsReal()) {
|
||||
if (t.ipv6) {
|
||||
newRR.ValueNode.SetText(s)
|
||||
cloudflare.CreateCurlRR()
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
cloudflare.CreateCurlRR()
|
||||
return
|
||||
} else {
|
||||
// nsupdate()
|
||||
// me.fixProc.Disable()
|
||||
}
|
||||
*/
|
||||
})
|
||||
me.fix.Disable()
|
||||
me.digStatus = NewDigStatusWindow(me.myGui)
|
||||
me.hostnameStatus = NewHostnameStatusWindow(me.myGui)
|
||||
|
||||
me.digStatusButton = me.mainStatus.NewButton("Resolver Status", func () {
|
||||
if (me.digStatus == nil) {
|
||||
log.Info("drawing the digStatus window START")
|
||||
me.digStatus = NewDigStatusWindow(myGui)
|
||||
log.Info("drawing the digStatus window END")
|
||||
me.digStatusButton.SetText("Hide DNS Lookup Status")
|
||||
me.digStatus.Update()
|
||||
return
|
||||
}
|
||||
if me.digStatus.hidden {
|
||||
me.digStatusButton.SetText("Hide Resolver Status")
|
||||
me.digStatus.Show()
|
||||
me.digStatus.Update()
|
||||
} else {
|
||||
me.digStatusButton.SetText("Resolver Status")
|
||||
me.digStatus.Hide()
|
||||
}
|
||||
})
|
||||
me.hostnameStatusButton = me.mainStatus.NewButton("Show hostname DNS Status", func () {
|
||||
if (me.hostnameStatus == nil) {
|
||||
me.hostnameStatus = NewHostnameStatusWindow(myGui)
|
||||
me.hostnameStatusButton.SetText("Hide " + me.hostname + " DNS Status")
|
||||
me.hostnameStatus.Update()
|
||||
return
|
||||
}
|
||||
if me.hostnameStatus.hidden {
|
||||
me.hostnameStatusButton.SetText("Hide " + me.hostname + " DNS Status")
|
||||
me.hostnameStatus.Show()
|
||||
me.hostnameStatus.Update()
|
||||
} else {
|
||||
me.hostnameStatusButton.SetText("Show " + me.hostname + " DNS Status")
|
||||
me.hostnameStatus.Hide()
|
||||
}
|
||||
me.hostnameStatusButton = me.mainStatus.NewButton("Fix hostname DNS", func () {
|
||||
me.hostnameStatus.window.Toggle()
|
||||
})
|
||||
|
||||
grid.Margin()
|
||||
grid.Pad()
|
||||
|
||||
statusGrid(tab)
|
||||
statusGrid(me.window.Box())
|
||||
|
||||
gr := me.window.Box().NewGroup("debugging")
|
||||
gr.NewButton("GO GUI Debugger", func () {
|
||||
debugger.DebugWindow(me.myGui)
|
||||
})
|
||||
gr.NewButton("OS Details", func () {
|
||||
me.details.Toggle()
|
||||
})
|
||||
gr.NewButton("DNS Debug", func () {
|
||||
me.debug.Toggle()
|
||||
})
|
||||
gr.NewButton("Resolver Status", func () {
|
||||
if ! me.digStatus.Ready() {return}
|
||||
me.digStatus.window.Toggle()
|
||||
})
|
||||
}
|
||||
|
||||
func statusGrid(n *gui.Node) {
|
||||
|
|
|
@ -65,7 +65,7 @@ func getHostname() {
|
|||
log.Log(CHANGE, "me.cloudflare == nil; me.DnsAPI.S =", me.DnsAPI.S)
|
||||
if (me.DnsAPI.S == "cloudflare") {
|
||||
me.cloudflareB = me.mainStatus.NewButton("cloudflare wit.com", func () {
|
||||
cloudflare.CreateRR(myGui, "wit.com", "3777302ac4a78cd7fa4f6d3f72086d06")
|
||||
cloudflare.CreateRR(me.myGui, "wit.com", "3777302ac4a78cd7fa4f6d3f72086d06")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ type hostnameStatus struct {
|
|||
|
||||
hostname string // my hostname. Example: "test.wit.com"
|
||||
|
||||
window *gui.Node
|
||||
window *gadgets.BasicWindow
|
||||
|
||||
// Primary Directives
|
||||
status *gadgets.OneLiner
|
||||
|
@ -62,13 +62,10 @@ func NewHostnameStatusWindow(p *gui.Node) *hostnameStatus {
|
|||
hs.hidden = true
|
||||
hs.hostname = me.hostname
|
||||
|
||||
hs.window = p.NewWindow( hs.hostname + " Status")
|
||||
hs.window.Custom = func () {
|
||||
hs.hidden = true
|
||||
hs.window = gadgets.NewBasicWindow(p, hs.hostname + " Status")
|
||||
hs.window.Hide()
|
||||
}
|
||||
box := hs.window.NewBox("hBox", true)
|
||||
group := box.NewGroup("Summary")
|
||||
|
||||
group := hs.window.Box().NewGroup("Summary")
|
||||
grid := group.NewGrid("LookupStatus", 2, 2)
|
||||
|
||||
hs.status = gadgets.NewOneLiner(grid, "status").Set("unknown")
|
||||
|
@ -78,7 +75,7 @@ func NewHostnameStatusWindow(p *gui.Node) *hostnameStatus {
|
|||
group.Pad()
|
||||
grid.Pad()
|
||||
|
||||
group = box.NewGroup("Details")
|
||||
group = hs.window.Box().NewGroup("Details")
|
||||
grid = group.NewGrid("LookupDetails", 2, 2)
|
||||
|
||||
hs.hostShort = gadgets.NewOneLiner(grid, "hostname -s")
|
||||
|
@ -96,12 +93,12 @@ func NewHostnameStatusWindow(p *gui.Node) *hostnameStatus {
|
|||
group.Pad()
|
||||
grid.Pad()
|
||||
|
||||
group = box.NewGroup("Actions")
|
||||
group = hs.window.Box().NewGroup("Actions")
|
||||
grid = group.NewGrid("LookupDetails", 2, 2)
|
||||
|
||||
hs.dnsValue = grid.NewLabel("3.4.5.6")
|
||||
hs.dnsAction = grid.NewButton("CHECK", func () {
|
||||
log.Info("should", hs.dnsAction.S, "here for", hs.dnsValue.S)
|
||||
log.Warn("should", hs.dnsAction.S, "here for", hs.dnsValue.S)
|
||||
if (hs.dnsAction.S == "DELETE") {
|
||||
hs.deleteDNSrecord(hs.dnsValue.S)
|
||||
}
|
||||
|
@ -148,7 +145,7 @@ func (hs *hostnameStatus) createDNSrecord(value string) bool {
|
|||
log.Info("createDNSrecord() DNS API Provider =", hs.API())
|
||||
|
||||
if (hs.API() == "cloudflare") {
|
||||
log.Info("createDNSrecord() Try to delete via cloudflare")
|
||||
log.Warn("createDNSrecord() Try to delete via cloudflare:", me.hostname, value)
|
||||
return cloudflare.Create(hs.Domain(), me.hostname, value)
|
||||
}
|
||||
return false
|
||||
|
|
6
main.go
6
main.go
|
@ -20,8 +20,6 @@ import (
|
|||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
var myGui *gui.Node
|
||||
|
||||
//go:embed plugins/*.so
|
||||
var resToolkit embed.FS
|
||||
|
||||
|
@ -41,14 +39,14 @@ func main() {
|
|||
// send all log() output to a file in /tmp
|
||||
log.SetTmp()
|
||||
|
||||
myGui = gui.New().Default()
|
||||
me.myGui = gui.New().Default()
|
||||
|
||||
log.Sleep(me.artificialSleep)
|
||||
setupControlPanelWindow()
|
||||
|
||||
if debugger.ArgDebug() {
|
||||
log.Sleep(2)
|
||||
debugger.DebugWindow(myGui)
|
||||
debugger.DebugWindow(me.myGui)
|
||||
}
|
||||
|
||||
// forever monitor for network and dns changes
|
||||
|
|
|
@ -41,7 +41,10 @@ type Host struct {
|
|||
ipv4s map[string]dns.RR
|
||||
ipv6s map[string]dns.RR
|
||||
|
||||
window *gui.Node // the main window
|
||||
window *gadgets.BasicWindow // the main window
|
||||
details *gadgets.BasicWindow // more details of the DNS state
|
||||
debug *gadgets.BasicWindow // more attempts to debug the DNS state
|
||||
|
||||
tab *gui.Node // the main dns tab
|
||||
notes *gui.Node // using this to put notes here
|
||||
|
||||
|
@ -80,6 +83,9 @@ type Host struct {
|
|||
|
||||
hostnameStatus *hostnameStatus
|
||||
hostnameStatusButton *gui.Node
|
||||
|
||||
myDebug *gui.Node
|
||||
myGui *gui.Node
|
||||
}
|
||||
|
||||
type IPtype struct {
|
||||
|
|
Loading…
Reference in New Issue