From 382cc8dd171731cc333dd05b7b0b798340162a32 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 20 Dec 2023 03:13:43 -0600 Subject: make a cloudflare package move cloudflare stuff to a package display cloudflare API values dns protobuf example sort output, but gocli formatting is bad cloudflare window can be closed first time success pushing AAAA records for my box enable a cloudflare button RFC 8482. DNS servers we use should respond to ANY We should support ANY requests via DNS as long as we enforce TCP over UDP populate the API provider domain NS record changes are tracked check hostname OS configuration detect domain name changes lookup of NS records for my domain name button to investigate port 53 daemon start dns resolver detection and debugging measure dns resolution speed sort todo items Signed-off-by: Jeff Carr --- structs.go | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) (limited to 'structs.go') diff --git a/structs.go b/structs.go index c655738..9671078 100644 --- a/structs.go +++ b/structs.go @@ -3,7 +3,9 @@ package main import ( "net" + "time" "git.wit.org/wit/gui" + "github.com/miekg/dns" ) // It's probably a terrible idea to call this 'me' @@ -11,13 +13,18 @@ var me Host type Host struct { hostname string // mirrors - domainname string // kernel.org + domainname *gui.Node // kernel.org + hostshort *gui.Node // hostname -s + hostnameStatus *gui.Node // is the hostname configured correctly in the OS? // fqdn string // mirrors.kernel.org - dnsTTL int `default:3` // 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 + artificialSleep float64 `default:"0.7"` // artificial sleep on startup + artificialS string `default:"abc"` // artificial sleep on startup + + dnsSleep time.Duration + localSleep time.Duration changed bool // set to true if things changed user string // name of the user @@ -25,19 +32,43 @@ type Host struct { ipmap map[string]*IPtype // the current ip addresses dnsmap map[string]*IPtype // the current dns addresses ifmap map[int]*IFtype // the current interfaces + nsmap map[string]string // the NS records + + // DNS A and AAAA results + ipv4s map[string]dns.RR + ipv6s map[string]dns.RR window *gui.Node // the main window tab *gui.Node // the main dns tab notes *gui.Node // using this to put notes here + + // local OS settings, network interfaces, etc uid *gui.Node // user fqdn *gui.Node // display the full hostname IPv4 *gui.Node // show valid IPv4 addresses IPv6 *gui.Node // show valid IPv6 addresses Interfaces *gui.Node // Interfaces + LocalSpeedActual *gui.Node // the time it takes to check each network interface + + // DNS stuff + NSrr *gui.Node // NS resource records for the domain name + DnsAPI *gui.Node // what DNS API to use? DnsAAAA *gui.Node // the actual DNS AAAA results DnsA *gui.Node // the actual DNS A results (ignore for status since mostly never happens?) DnsStatus *gui.Node // the current state of DNS + DnsSpeed *gui.Node // 'FAST', 'OK', 'SLOW', etc + DnsSpeedActual *gui.Node // the last actual duration + DnsSpeedLast string // the last state 'FAST', 'OK', etc + fix *gui.Node // button for the user to click + fixProc *gui.Node // button for the user to click + + mainStatus *gui.Node // group for the main display of stuff + cloudflareB *gui.Node // cloudflare button + + dbOn *gui.Node // button for setting debugging on + dbNet *gui.Node // button for setting network debugging on + dbProc *gui.Node // button for setting proc debugging on } type IPtype struct { -- cgit v1.2.3