summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2023-12-16 12:59:18 -0600
committerJeff Carr <[email protected]>2023-12-16 12:59:18 -0600
commitbbf96ee7fa67a6d50ea1d1b3a23a3f44f136a30e (patch)
treea96585438a24f296d58fb3d2bd5cad8f1d4c8f3c
parente9f1723dbc8dab3bd84f7006723f6ae9c97df88c (diff)
seems to compile and runv0.1.1
Signed-off-by: Jeff Carr <[email protected]>
-rw-r--r--Makefile4
-rw-r--r--args.go62
-rw-r--r--gui.go18
-rw-r--r--main.go6
-rw-r--r--structs.go9
5 files changed, 90 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index 83fd873..9a05fb7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,5 @@
+.PHONY: debian
+
run: build
# ./control-panel-dns >/tmp/witgui.log.stderr 2>&1
./control-panel-dns
@@ -44,7 +46,7 @@ clean:
-rm -rf files/
-rm *.deb
-deb:
+debian:
cd debian && make
-wit mirrors
diff --git a/args.go b/args.go
index 578f514..8df208b 100644
--- a/args.go
+++ b/args.go
@@ -5,10 +5,13 @@ package main
*/
import (
+ "log"
"fmt"
+ "reflect"
+ "strconv"
arg "github.com/alexflint/go-arg"
"git.wit.org/wit/gui"
- log "git.wit.org/wit/gui/log"
+ // log "git.wit.org/wit/gui/log"
)
@@ -25,7 +28,7 @@ var args struct {
User string `arg:"env:USER"`
Demo bool `help:"run a demo"`
gui.GuiArgs
- log.LogArgs
+ // log.LogArgs
}
func init() {
@@ -35,6 +38,59 @@ func init() {
if (args.Gui != "") {
gui.GuiArg.Gui = args.Gui
}
- log.Log(true, "INIT() args.GuiArg.Gui =", gui.GuiArg.Gui)
+ log.Println(true, "INIT() args.GuiArg.Gui =", gui.GuiArg.Gui)
+ Set(&me, "default")
+ log.Println("init() me.artificialSleep =", me.artificialSleep)
+ log.Println("init() me.artificialS =", me.artificialS)
+ me.artificialSleep = 2.3
+ log.Println("init() me.artificialSleep =", me.artificialSleep)
+ sleep(me.artificialSleep)
+}
+
+func Set(ptr interface{}, tag string) error {
+ if reflect.TypeOf(ptr).Kind() != reflect.Ptr {
+ log.Println(logError, "Set() Not a pointer", ptr, "with tag =", tag)
+ return fmt.Errorf("Not a pointer")
+ }
+
+ v := reflect.ValueOf(ptr).Elem()
+ t := v.Type()
+
+ for i := 0; i < t.NumField(); i++ {
+ defaultVal := t.Field(i).Tag.Get(tag)
+ name := t.Field(i).Name
+ // log("Set() try name =", name, "defaultVal =", defaultVal)
+ setField(v.Field(i), defaultVal, name)
+ }
+ return nil
+}
+
+func setField(field reflect.Value, defaultVal string, name string) error {
+
+ if !field.CanSet() {
+ // log("setField() Can't set value", field, defaultVal)
+ return fmt.Errorf("Can't set value\n")
+ } else {
+ log.Println("setField() Can set value", name, defaultVal)
+ }
+
+ switch field.Kind() {
+ case reflect.Int:
+ val, _ := strconv.Atoi(defaultVal)
+ field.Set(reflect.ValueOf(int(val)).Convert(field.Type()))
+ case reflect.Float64:
+ val, _ := strconv.ParseFloat(defaultVal, 64)
+ field.Set(reflect.ValueOf(float64(val)).Convert(field.Type()))
+ case reflect.String:
+ field.Set(reflect.ValueOf(defaultVal).Convert(field.Type()))
+ case reflect.Bool:
+ if defaultVal == "true" {
+ field.Set(reflect.ValueOf(true))
+ } else {
+ field.Set(reflect.ValueOf(false))
+ }
+ }
+
+ return nil
}
diff --git a/gui.go b/gui.go
index e068733..ab07adf 100644
--- a/gui.go
+++ b/gui.go
@@ -20,7 +20,7 @@ func setupControlPanelWindow() {
me.window = myGui.NewWindow("DNS and IPv6 Control Panel").Standard()
me.window.Dump()
- sleep(1)
+ sleep(me.artificialSleep)
dnsTab("DNS")
debugTab("Debug")
@@ -99,6 +99,22 @@ func debugTab(title string) {
DumpPublicDNSZone("apple.com")
dumpIPs("www.apple.com")
})
+
+ g2.NewLabel("control panel TTL (in tenths of seconds)")
+ ttl := g2.NewSlider("dnsTTL", 1, 100)
+ ttl.Set(me.dnsTTL * 10)
+ ttl.Custom = func () {
+ me.dnsTTL = ttl.I / 10
+ log.Println("dnsTTL =", me.dnsTTL)
+ }
+
+ g2.NewLabel("control panel loop delay (in tenths of seconds)")
+ ttl2 := g2.NewSlider("dnsTTL", 1, 100)
+ ttl2.Set(me.dnsTTLsleep)
+ ttl2.Custom = func () {
+ me.dnsTTLsleep = float64(ttl2.I) / 10
+ log.Println("dnsTTLsleep =", me.dnsTTLsleep)
+ }
}
func myDefaultExit(n *gui.Node) {
diff --git a/main.go b/main.go
index 53e8101..7275572 100644
--- a/main.go
+++ b/main.go
@@ -32,9 +32,9 @@ func main() {
// myGui = gui.New().InitEmbed(resToolkit).LoadToolkit("gocui")
myGui = gui.New().Default()
- sleep(.2)
+ sleep(me.artificialSleep)
setupControlPanelWindow()
- sleep(.2)
+ sleep(me.artificialSleep)
if (args.GuiDebug) {
gui.DebugWindow()
}
@@ -50,7 +50,7 @@ func main() {
func checkNetworkChanges() {
var ttl int = 0
for {
- sleep(0.5)
+ sleep(me.dnsTTLsleep)
ttl -= 1
if (ttl < 0) {
if (runtime.GOOS == "linux") {
diff --git a/structs.go b/structs.go
index 2ab0947..c655738 100644
--- a/structs.go
+++ b/structs.go
@@ -13,12 +13,19 @@ type Host struct {
hostname string // mirrors
domainname string // kernel.org
// fqdn string // mirrors.kernel.org
- dnsTTL int // Recheck DNS is working every TTL (in seconds)
+
+ dnsTTL int `default:3` // Recheck DNS is working every TTL (in seconds)
+ dnsTTLsleep float64 // sleep between loops
+ artificialSleep float64 `default:0.7` // artificial sleep on startup
+ artificialS string `default:0.7` // artificial sleep on startup
+
changed bool // set to true if things changed
user string // name of the user
+
ipmap map[string]*IPtype // the current ip addresses
dnsmap map[string]*IPtype // the current dns addresses
ifmap map[int]*IFtype // the current interfaces
+
window *gui.Node // the main window
tab *gui.Node // the main dns tab
notes *gui.Node // using this to put notes here