Compare commits

...

8 Commits

Author SHA1 Message Date
Jeff Carr d04767a0ff go.wit.com/log change
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-08 23:54:02 -06:00
Jeff Carr ba020cdb37 go.wit.com/log NewFlag()
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-08 22:34:08 -06:00
Jeff Carr 9b4bf224dc more testing
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-08 13:02:43 -06:00
Jeff Carr b992949060 more debugging & smartwindow test
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-08 12:55:23 -06:00
Jeff Carr 16fe0dacdd not sure
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-08 11:55:56 -06:00
Jeff Carr b1c311a1e2 errors are always displayed
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-08 11:05:40 -06:00
Jeff Carr e14bd65844 change paths
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-07 16:52:23 -06:00
Jeff Carr 4ed6f6b35f new paths
Signed-off-by: Jeff Carr <jcarr@wit.com>
2024-01-07 16:48:33 -06:00
15 changed files with 404 additions and 168 deletions

View File

@ -1,8 +1,18 @@
.PHONY: debian
run: build
# ./control-panel-dns >/tmp/witgui.log.stderr 2>&1
./control-panel-dns
cp -f control-panel-dns ~/
./control-panel-dns --tmp-log
check-git-clean:
@git diff-index --quiet HEAD -- || (echo "Git repository is dirty, please commit your changes first"; exit 1)
redomod: check-git-clean
rm -f go.*
GO111MODULE= go mod init
GO111MODULE= go mod tidy
install:
go install -v go.wit.com/control-panel-dns@latest
@ -17,7 +27,7 @@ build:
-mkdir -p plugins/
-cp ~/go/src/go.wit.com/gui/toolkits/*.so plugins/
# GO111MODULE="off" go get -v -x .
GO111MODULE="off" go build -v -o control-panel-dns
GO111MODULE="off" go build -v
# ./control-panel-dns.v1: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./control-panel-dns.v1)
# ./control-panel-dns.v1: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./control-panel-dns.v1)

55
args.go
View File

@ -15,44 +15,41 @@ import (
var args struct {
Display string `arg:"env:DISPLAY"`
TmpLog bool `arg:"--tmp-log" help:"automatically send STDOUT to /tmp"`
VerboseDNS bool `arg:"--verbose-dns" help:"debug your dns settings"`
}
var NOW log.LogFlag
var INFO log.LogFlag
var NET log.LogFlag
var DNS log.LogFlag
var WARN log.LogFlag
var SPEW log.LogFlag
var CHANGE log.LogFlag
var STATUS log.LogFlag
var NOW *log.LogFlag
var INFO *log.LogFlag
var NET *log.LogFlag
var DNS *log.LogFlag
func myreg(f *log.LogFlag, b bool, name string, desc string) {
f.B = b
f.Subsystem = "go.wit.com/control-panels/dns"
f.Short = "cpdns"
f.Desc = desc
f.Name = name
f.Register()
}
var WARN *log.LogFlag
var SPEW *log.LogFlag
var CHANGE *log.LogFlag
var STATUS *log.LogFlag
func init() {
arg.MustParse(&args)
// fmt.Println(args.Foo, args.Bar, args.User)
full := "go.wit.com/control-panels/dns"
short := "cpdns"
myreg(&NOW, true, "NOW", "temp debugging stuff")
myreg(&INFO, false, "INFO", "normal debugging stuff")
myreg(&NET, false, "NET", "Network logging")
myreg(&DNS, false, "DNS", "dnsStatus.update()")
myreg(&WARN, true, "WARN", "bad things")
myreg(&SPEW, false, "SPEW", "spew stuff")
myreg(&CHANGE, true, "CHANGE", "when host or dns change")
myreg(&STATUS, false, "STATUS", "updateStatus()")
NOW = log.NewFlag( "NOW", true, full, short, "temp debugging stuff")
INFO = log.NewFlag("INFO", false, full, short, "normal debugging stuff")
NET = log.NewFlag( "NET", false, full, short, "Network logging")
DNS = log.NewFlag( "DNS", false, full, short, "dnsStatus.update()")
WARN = log.NewFlag("WARN", true, full, short, "bad things")
SPEW = log.NewFlag("SPEW", false, full, short, "spew stuff")
CHANGE = log.NewFlag("CHANGE", true, full, short, "when host or dns change")
STATUS = log.NewFlag("STATUS", false, full, short, "updateStatus() polling")
if debugger.ArgDebug() {
log.Log(true, "INIT() gui debug == true")
log.Log(NOW, "INIT() gui debug == true")
} else {
log.Log(true, "INIT() gui debug == false")
log.Log(NOW, "INIT() gui debug == false")
}
me.dnsSleep = 500 * time.Millisecond
@ -60,7 +57,7 @@ func init() {
me.artificialSleep = 0.4 // seems to need to exist or GTK crashes. TODO: fix andlabs plugin
me.artificialS = "blah"
log.Log(true, "init() me.artificialSleep =", me.artificialSleep)
log.Log(true, "init() me.artificialS =", me.artificialS)
log.Log(INFO, "init() me.artificialSleep =", me.artificialSleep)
log.Log(INFO, "init() me.artificialS =", me.artificialS)
log.Sleep(me.artificialSleep)
}

View File

@ -11,7 +11,8 @@ import (
)
type errorBox struct {
name string // the problem name
ready bool
hidden bool
parent *gui.Node
group *gui.Node
@ -31,9 +32,12 @@ type anError struct {
status string
kindLabel *gui.Node
actionLabel *gui.Node
ipLabel *gui.Node
statusLabel *gui.Node
button *gui.Node
problem *Problem
}
func NewErrorBox(p *gui.Node, name string, ip string) *errorBox {
@ -41,40 +45,79 @@ func NewErrorBox(p *gui.Node, name string, ip string) *errorBox {
eb = new(errorBox)
eb.parent = p
eb.group = p.NewGroup(name)
eb.grid = eb.group.NewGrid("stuff", 4, 1)
eb.grid = eb.group.NewGrid("stuff", 5, 1)
eb.grid.NewLabel("Type")
eb.grid.NewLabel("Action")
eb.grid.NewLabel("IP")
eb.grid.NewLabel("Status")
eb.grid.NewLabel("")
eb.fixes = make(map[string]*anError)
eb.ready = true
return eb
}
func (eb *errorBox) Show() {
if eb == nil {return}
eb.hidden = false
eb.group.Show()
}
func (eb *errorBox) add(kind string, ip string) bool {
tmp := kind + " " + ip
func (eb *errorBox) Hide() {
if eb == nil {return}
eb.hidden = true
eb.group.Hide()
}
func (eb *errorBox) Toggle() {
if eb == nil {return}
if eb.hidden {
eb.Show()
} else {
eb.Hide()
}
}
func (eb *errorBox) Ready() bool {
if eb == nil {return false}
return eb.ready
}
func (eb *errorBox) addIPerror(kind ProblemType, action ActionType, ip string) bool {
if ! eb.Ready() {return false}
tmp := kind.String() + " " + ip
if eb.fixes[tmp] != nil {
log.Log(WARN, "Error is already here", kind, ip)
return false
}
anErr := new(anError)
anErr.kind = kind
anErr.aaaa = ip
anErr.kindLabel = eb.grid.NewLabel(kind)
anErr.kindLabel = eb.grid.NewLabel(kind.String())
anErr.actionLabel = eb.grid.NewLabel(action.String())
anErr.ipLabel = eb.grid.NewLabel(ip)
anErr.statusLabel = eb.grid.NewLabel("")
anErr.button = eb.grid.NewButton(kind, func() {
anErr.button = eb.grid.NewButton("Try to Fix", func() {
log.Log(WARN, "got", kind, "here. IP =", ip)
eb.fix(tmp)
})
anErr.problem = new(Problem)
anErr.problem.kind = kind
anErr.problem.aaaa = ip
eb.fixes[tmp] = anErr
return false
}
// get all your problems!
func (eb *errorBox) Scan() []anError {
for s, thing := range eb.fixes {
log.Log(CHANGE, "Scan()", s, thing)
}
return nil
}
func (eb *errorBox) fix(key string) bool {
if eb.fixes[key] == nil {
log.Log(WARN, "Unknown error. could not find key =", key)

18
fix.go
View File

@ -4,7 +4,7 @@ package main
import (
"go.wit.com/log"
"go.wit.com/gui/cloudflare"
"go.wit.com/control-panels/dns/smartwindow"
"go.wit.com/apps/control-panel-dns/smartwindow"
)
func fix() bool {
@ -84,7 +84,8 @@ func fixIPv6dns() bool {
} else {
broken = true
log.Log(INFO, "DNS AAAA is not in OS", aaaa)
addToFixWindow("DELETE", aaaa)
// addToFixWindow("DELETE", aaaa)
me.problems.addIPerror(RR, DELETE, aaaa)
/*
if deleteFromDNS(aaaa) {
log.Log(INFO, "Delete AAAA", aaaa, "Worked")
@ -150,19 +151,10 @@ func exists(m map[string]bool, s string) bool {
return false
}
var myErrorBox *errorBox
func addToFixWindow(t string, ip string) {
log.Log(INFO, "addToFixWindow() START")
if me.fixWindow == nil {
log.Log(WARN, "addToFixWindow() fixWindow == nil. Can't add the error", t, ip)
return
}
if myErrorBox == nil {
box := me.fixWindow.Box()
myErrorBox = NewErrorBox(box, t, ip)
}
myErrorBox.add(t, ip)
if ! me.problems.Ready() { return }
me.problems.addIPerror(RR, CREATE, ip)
log.Log(INFO, "addToFixWindow() END")
}

2
go.mod
View File

@ -1,3 +1,3 @@
module go.wit.com/control-panels/dns
module go.wit.com/apps/control-panel-dns
go 1.21.4

60
gui.go
View File

@ -12,7 +12,7 @@ import (
"go.wit.com/gui/cloudflare"
"go.wit.com/gui/debugger"
"go.wit.com/gui/gadgets/logsettings"
"go.wit.com/control-panels/dns/smartwindow"
"go.wit.com/apps/control-panel-dns/smartwindow"
)
// This setups up the dns control panel window
@ -81,41 +81,16 @@ func myDefaultExit(n *gui.Node) {
func mainWindow(title string) {
me.window = gadgets.NewBasicWindow(me.myGui, title)
me.window.Vertical()
gr := me.window.Box().NewGroup("dns update")
hbox := me.window.Box().NewBox("bw hbox", true)
// This is where you figure out what to do next to fix the problems
me.fixButton = gr.NewButton("Check Errors", func () {
if ! fix() {
log.Log(CHANGE, "boo. IPv6 isn't working yet")
return
}
log.Log(CHANGE, "IPv6 WORKED")
// update everything here visually for the user
// hostname := me.statusOS.GetHostname()
// me.hostname.Set(hostname)
me.hostnameStatus.Set("WORKING")
me.DnsStatus.Set("WORKING")
me.fixButton.SetText("No Errors!")
me.fixButton.Disable()
})
statusGrid(hbox)
statusGrid(me.window.Box())
// some artificial padding to make the last row of buttons look less wierd
gr := hbox.NewGroup("Development and Debugging Windows")
gr = gr.NewBox("vbox", false)
gr = me.window.Box().NewGroup("")
/*
me.statusDNSbutton = gr.NewButton("hostname status", func () {
if ! me.statusDNS.Ready() {return}
me.statusDNS.window.Toggle()
})
gr.NewButton("Linux Status", func () {
me.statusOS.Toggle()
})
gr.NewButton("resolver status", func () {
if ! me.digStatus.Ready() {return}
me.digStatus.window.Toggle()
})
*/
gr.NewButton("Debug", func () {
me.debug.Toggle()
})
@ -129,12 +104,14 @@ func mainWindow(title string) {
}
myLS.Toggle()
})
gr.NewButton("Show Errors", func () {
gr.NewButton("test smartwindow()", func () {
log.Jeff(INFO, "jcarr")
if me.fixWindow == nil {
me.fixWindow = smartwindow.New()
me.fixWindow.SetParent(me.myGui)
me.fixWindow.Title("fix window")
me.fixWindow.SetDraw(drawFixWindow)
me.fixWindow.Title("smart window test")
me.fixWindow.SetDraw(testSmartWindow)
me.fixWindow.Vertical()
me.fixWindow.Make()
me.fixWindow.Draw()
@ -143,6 +120,16 @@ func mainWindow(title string) {
}
me.fixWindow.Toggle()
})
gr.NewButton("Show Errors", func () {
me.problems.Toggle()
})
me.autofix = gr.NewCheckbox("Auto-correct Errors")
me.autofix.Set(false)
// These are your problems
me.problems = NewErrorBox(me.window.Box(), "Errors", "has problems?")
me.problems.addIPerror(RR, USER, "1:1:1:1")
}
@ -188,7 +175,4 @@ func statusGrid(n *gui.Node) {
}
}
})
n.NewGroup("NOTES")
}

View File

@ -224,27 +224,6 @@ func (hs *hostnameStatus) existsAAAA(s string) bool {
return false
}
/*
// figure out if I'm missing any IPv6 address in DNS
func (hs *hostnameStatus) missingAAAA() bool {
var aaaa []string
aaaa = dhcpAAAA()
for _, s := range aaaa {
log.Log(NET, "my actual AAAA = ",s)
if hs.existsAAAA(s) {
log.Log(NOW, "my actual AAAA already exists in DNS =",s)
} else {
log.Log(NOW, "my actual AAAA is missing from DNS",s)
hs.dnsValue.SetText(s)
hs.dnsAction.SetText("CREATE")
return true
}
}
return false
}
*/
func (hs *hostnameStatus) GetIPv6() []string {
if ! hs.Ready() { return nil}
return strings.Split(hs.dnsAAAA.Get(), "\n")
@ -322,10 +301,21 @@ func (hs *hostnameStatus) updateStatus() {
hs.status.Set("BROKEN")
}
last := hs.statusIPv6.Get()
if hs.verifyIPv6() {
hs.statusIPv6.Set("WORKING")
if last != "WORKING" {
log.Log(CHANGE, "Your DNS IPv6 has started working.", me.statusOS.GetHostname(), "should now work")
hs.changed = true
hs.statusIPv6.Set("WORKING")
me.DnsStatus.SetText("WORKING")
}
} else {
hs.statusIPv6.Set("BROKEN")
if last != "BROKEN" {
log.Log(CHANGE, "Your DNS entries for IPv6 have BROKEN")
hs.changed = true
hs.statusIPv6.Set("BROKEN")
me.DnsStatus.SetText("BROKEN")
}
}
}
@ -357,6 +347,7 @@ func (hs *hostnameStatus) verifyIPv6() bool {
} else {
working = false
log.Log(INFO, "DNS AAAA is not in OS", aaaa)
addToFixWindow("DELETE", aaaa)
}
}
@ -366,6 +357,7 @@ func (hs *hostnameStatus) verifyIPv6() bool {
} else {
working = false
log.Log(INFO, "OS AAAA is not in DNS", aaaa)
addToFixWindow("CREATE", aaaa)
}
}

110
ipv6box.go Normal file
View File

@ -0,0 +1,110 @@
/*
Show your IPv6 addresses
*/
package main
import (
"go.wit.com/log"
"go.wit.com/gui/gui"
"go.wit.com/gui/gadgets"
)
type ipv6box struct {
name string // the problem name
parent *gui.Node
group *gui.Node
grid *gui.Node
l *gui.Node
b *gui.Node
fixes map[string]*anError
something *gadgets.OneLiner
}
type anIPv6 struct {
kind string // what kind of error is it?
aaaa string
status string
kindLabel *gui.Node
ipLabel *gui.Node
statusLabel *gui.Node
button *gui.Node
}
func NewIpv6box(p *gui.Node, name string, ip string) *ipv6box {
var ib *ipv6box
ib = new(ipv6box)
ib.parent = p
ib.group = p.NewGroup(name)
ib.grid = ib.group.NewGrid("stuff", 4, 1)
ib.grid.NewLabel("Type")
ib.grid.NewLabel("IP")
ib.grid.NewLabel("Status")
ib.grid.NewLabel("")
ib.fixes = make(map[string]*anError)
return ib
}
func (ib *ipv6box) add(kind string, ip string) bool {
tmp := kind + " " + ip
if ib.fixes[tmp] != nil {
log.Log(WARN, "Error is already here", kind, ip)
return false
}
anErr := new(anError)
anErr.kind = kind
anErr.aaaa = ip
anErr.kindLabel = ib.grid.NewLabel(kind)
anErr.ipLabel = ib.grid.NewLabel(ip)
anErr.statusLabel = ib.grid.NewLabel("")
anErr.button = ib.grid.NewButton(kind, func() {
log.Log(WARN, "got", kind, "here. IP =", ip)
ib.fix(tmp)
})
ib.fixes[tmp] = anErr
return false
}
func (ib *ipv6box) fix(key string) bool {
if ib.fixes[key] == nil {
log.Log(WARN, "Unknown error. could not find key =", key)
log.Log(WARN, "TODO: probably remove this error. key =", key)
return true
}
myErr := ib.fixes[key]
log.Log(WARN, "should try to fix", myErr.kind, "here. IP =", myErr.aaaa)
if myErr.kind == "DELETE" {
if deleteFromDNS(myErr.aaaa) {
log.Log(INFO, "Delete AAAA", myErr.aaaa, "Worked")
} else {
log.Log(INFO, "Delete AAAA", myErr.aaaa, "Failed")
}
return true
}
if myErr.kind == "CREATE" {
if addToDNS(myErr.aaaa) {
log.Log(INFO, "Delete AAAA", myErr.aaaa, "Worked")
} else {
log.Log(INFO, "Delete AAAA", myErr.aaaa, "Failed")
}
return true
}
return false
}
func (ib *ipv6box) update() bool {
return false
}
func (ib *ipv6box) toggle() {
}

View File

@ -8,33 +8,31 @@ import (
"go.wit.com/log"
)
var NOW log.LogFlag
var INFO log.LogFlag
var NET log.LogFlag
var DNS log.LogFlag
var PROC log.LogFlag
var SPEW log.LogFlag
var WARN log.LogFlag
var CHANGE log.LogFlag
var STATUS log.LogFlag
var NOW *log.LogFlag
var INFO *log.LogFlag
var NET *log.LogFlag
var DNS *log.LogFlag
func myreg(f *log.LogFlag, b bool, name string, desc string) {
f.B = b
f.Subsystem = "go.wit.com/control-panels/dns/linuxstatus"
f.Short = "linux"
f.Desc = desc
f.Name = name
f.Register()
}
var PROC *log.LogFlag
var SPEW *log.LogFlag
var WARN *log.LogFlag
var CHANGE *log.LogFlag
var STATUS *log.LogFlag
func init() {
myreg(&NOW, true, "NOW", "temp debugging stuff")
myreg(&INFO, false, "INFO", "normal debugging stuff")
myreg(&NET, false, "NET", "Network Logging")
myreg(&DNS, false, "DNS", "dnsStatus.update()")
myreg(&PROC, false, "PROC", "/proc logging")
myreg(&SPEW, false, "SPEW", "spew stuff")
myreg(&WARN, true, "WARN", "bad things")
myreg(&CHANGE, true, "CHANGE", "show droplet state changes")
myreg(&STATUS, false, "STATUS", "Update() details")
full := "go.wit.com/control-panels/dns/linuxstatus"
short := "linux"
NOW = log.NewFlag( "NOW", true, full, short, "temp debugging stuff")
INFO = log.NewFlag("INFO", false, full, short, "normal debugging stuff")
NET = log.NewFlag( "NET", false, full, short, "Network logging")
DNS = log.NewFlag( "DNS", false, full, short, "dnsStatus.update()")
PROC = log.NewFlag("PROC", false, full, short, "/proc loggging")
WARN = log.NewFlag("WARN", true, full, short, "bad things")
SPEW = log.NewFlag("SPEW", false, full, short, "spew stuff")
CHANGE = log.NewFlag("CHANGE", true, full, short, "when host or dns change")
STATUS = log.NewFlag("STATUS", false, full, short, "Update() details")
}

View File

@ -195,7 +195,7 @@ func scanInterfaces() {
switch v := addr.(type) {
case *net.IPNet:
if checkIP(v, i) {
log.Log(true, "scanInterfaces() IP is new () i =", v.IP.String())
log.Log(NET, "scanInterfaces() IP is new () i =", v.IP.String())
}
default:
log.Log(NET, "\t\taddr.(type) = NO IDEA WHAT TO DO HERE v =", v)

28
main.go
View File

@ -14,7 +14,7 @@ import (
"go.wit.com/gui/gui"
"go.wit.com/gui/debugger"
"go.wit.com/control-panels/dns/linuxstatus"
"go.wit.com/apps/control-panel-dns/linuxstatus"
"github.com/miekg/dns"
)
@ -35,10 +35,14 @@ func main() {
me.ipv4s = make(map[string]dns.RR)
me.ipv6s = make(map[string]dns.RR)
// send all log() output to a file in /tmp
log.SetTmp()
if args.TmpLog {
// send all log() output to a file in /tmp
log.SetTmp()
}
me.myGui = gui.New().Default()
me.myGui = gui.New()
me.myGui.InitEmbed(resToolkit)
me.myGui.Default()
log.Sleep(me.artificialSleep)
setupControlPanelWindow()
@ -128,23 +132,29 @@ func main() {
// check the four known things to see if they are all WORKING
myTicker(10 * time.Second, "MAIN LOOP", func() {
var working bool = true
if me.hostnameStatus.GetText() != "WORKING" {
log.Log(CHANGE, "The hostname is not WORKING yet", me.hostnameStatus.GetText())
return
working = false
}
if me.statusIPv6.Get() != "WORKING" {
log.Log(CHANGE, "IPv6 DNS lookup has not been confirmed yet", me.statusIPv6.Get())
return
working = false
}
if me.DnsStatus.GetText() != "WORKING" {
log.Log(CHANGE, "Your IPv6 DNS settings have not been confirmed yet", me.DnsStatus.GetText())
return
working = false
}
if me.DnsAPIstatus.GetText() != "WORKING" {
log.Log(CHANGE, "The DNS API provider is not yet working", me.DnsAPIstatus.GetText())
return
working = false
}
if working {
log.Log(CHANGE, "EVERYTHING IS WORKING. YOU HAVE IPv6 BLISS. TODO: don't check so often now")
} else {
log.Log(CHANGE, "EVERYTHING IS NOT WORKING. scanning errors:")
me.problems.Scan()
}
log.Log(CHANGE, "EVERYTHING IS WORKING. YOU HAVE IPv6 BLISS. TODO: don't check so often now")
})
}

82
problems.go Normal file
View File

@ -0,0 +1,82 @@
// this defines the kinds of problems that can be detected
package main
import (
"time"
)
type ProblemType int
type ActionType int
type Problem struct {
kind ProblemType
action ActionType
id int
Name string
desc string
value string
aaaa string
fixed bool
duration *time.Duration
}
var IPcreate = Problem {
kind: RR,
action: CREATE,
desc: "This RR entry in the zonefile needs to be removed",
}
/*
var hostname Problem = (
kind: ProblemType.OS,
action: ActionType.CREATE,
Name: "Your /etc/hostname file is incorrect",
fixed: false,
)
*/
const (
OS ProblemType = iota
ETC
RESOLVE
RR
PING
LOOKUP
)
const (
USER ActionType = iota
CREATE
DELETE
)
func (s Problem) String() string {
return s.Name
}
func (s ProblemType) String() string {
switch s {
case OS:
return "OS"
case RR:
return "RR"
default:
return "something"
}
return "someprob"
}
func (s ActionType) String() string {
switch s {
case USER:
return "USER"
case CREATE:
return "CREATE"
case DELETE:
return "DELETE"
default:
return "something"
}
return "someprob"
}

View File

@ -8,23 +8,17 @@ import (
"go.wit.com/log"
)
var NOW log.LogFlag
var INFO log.LogFlag
var SPEW log.LogFlag
var WARN log.LogFlag
func myreg(f *log.LogFlag, b bool, name string, desc string) {
f.B = b
f.Subsystem = "go.wit.com/gadgets/smartwindow"
f.Short = "smartWin"
f.Desc = desc
f.Name = name
f.Register()
}
var NOW *log.LogFlag
var INFO *log.LogFlag
var SPEW *log.LogFlag
var WARN *log.LogFlag
func init() {
myreg(&NOW, true, "NOW", "temp debugging stuff")
myreg(&INFO, false, "INFO", "normal debugging stuff")
myreg(&SPEW, false, "SPEW", "spew stuff")
myreg(&WARN, true, "WARN", "bad things")
full := "go.wit.com/gui/gadgets/smartwindow"
short := "smartWin"
NOW = log.NewFlag( "NOW", true, full, short, "temp debugging stuff")
INFO = log.NewFlag("INFO", false, full, short, "General Info")
SPEW = log.NewFlag("SPEW", false, full, short, "spew stuff")
WARN = log.NewFlag("WARN", false, full, short, "bad things")
}

View File

@ -7,8 +7,8 @@ import (
"go.wit.com/gui/gui"
"go.wit.com/gui/gadgets"
// "go.wit.com/gui/cloudflare"
"go.wit.com/control-panels/dns/linuxstatus"
"go.wit.com/control-panels/dns/smartwindow"
"go.wit.com/apps/control-panel-dns/linuxstatus"
"go.wit.com/apps/control-panel-dns/smartwindow"
"github.com/miekg/dns"
)
@ -63,6 +63,9 @@ type Host struct {
witcom *gadgets.BasicWindow
fixButton *gui.Node
fixWindow *smartwindow.SmartWindow
problems *errorBox
autofix *gui.Node
}
type IPtype struct {

21
testSmartWindow.go Normal file
View File

@ -0,0 +1,21 @@
// testing the smart window
package main
import (
"go.wit.com/log"
// "go.wit.com/gui/cloudflare"
"go.wit.com/apps/control-panel-dns/smartwindow"
)
func testSmartWindow(sw *smartwindow.SmartWindow) {
log.Log(WARN, "testSmartWindow() START")
grid := sw.Box().NewGrid("test", 5, 1)
grid.NewLabel("test 1")
grid.NewLabel("test 1")
grid.NewLabel("test 2")
grid.NewLabel("test 2")
grid.NewLabel("test 3")
grid.NewLabel("test 3")
grid.NewLabel("test 3")
grid.NewLabel("test 3")
}