diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..201a3ec --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +routeros_dns diff --git a/dns.go b/dns.go index 25da69f..dfcd0b3 100644 --- a/dns.go +++ b/dns.go @@ -107,6 +107,13 @@ func BuildRecordsTree(records []DNSRecord) *DomainPart { func (dp *DomainPart) ToHTML(parts []string) string { html := "" + /* + var lines []struct { + Header bool + HTML string + } + */ + sortedParts := slices.Sorted(maps.Keys(dp.Subparts)) for _, part := range sortedParts { @@ -118,18 +125,33 @@ func (dp *DomainPart) ToHTML(parts []string) string { slices.Reverse(reversedParts) fqdn := strings.Join(reversedParts, ".") + mostSpecificPart := reversedParts[0] + restPart := "" + if len(reversedParts) > 1 { + restPart = strings.Join(reversedParts[1:], ".") + mostSpecificPart += "." + } + var subHTML string if len(subpart.Subparts) == 0 { - html += fmt.Sprintf(`
%s
`, fqdn, fqdn) + html += fmt.Sprintf( + `
%s%s
`, + len(newParts)*16, + restPart, + mostSpecificPart, + restPart, + ) } else { subHTML = subpart.ToHTML(newParts) html += fmt.Sprintf(` -
+
%s
-
%s
+
%s
`, fqdn, + len(newParts)*16, + fqdn, fqdn, subHTML, ) diff --git a/go.sum b/go.sum index 0422509..22df342 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,6 @@ git.gibonuddevalla.se/go/html_template v1.0.0 h1:0YoqKiWMxYUsYZomqFlXLR/h0UNBicqw+VOsPyotcD4= git.gibonuddevalla.se/go/html_template v1.0.0/go.mod h1:DGqGMulbZyGoRqWXInXISb6GQLswuUrTaX1WhH7jx/w= -git.gibonuddevalla.se/go/vlog v1.0.0 h1:AlArMDt1Aw6poI8yDtU22d4NyFl3iQocZSswvlzy48o= +git.gibonuddevalla.se/go/vlog v1.0.0 h1:6iu7Wy3V3vTSg1usLSZWX9ipA+SY3FV4pi7HrHqagyc= git.gibonuddevalla.se/go/vlog v1.0.0/go.mod h1:rjS9ZINhZF+Bhrb+fdD4aEKOnLxFYU3PJFMx7nOi4c0= git.gibonuddevalla.se/go/wrappederror v0.3.5 h1:/EzrdXETlZfNpS6TcK1Ix6BaV+Fl7qcGoxUM0GkrIN8= git.gibonuddevalla.se/go/wrappederror v0.3.5/go.mod h1:j4w320Hk1wvhOPjUaK4GgLvmtnjUUM5yVu6JFO1OCSc= diff --git a/static/css/index.css b/static/css/index.css index 8300fba..a671edf 100644 --- a/static/css/index.css +++ b/static/css/index.css @@ -17,18 +17,35 @@ body { } .records-tree { + display: grid; + + .fqdn, .record { + border-bottom: 1px solid #aaa; + padding: 4px 0px; + } .top { font-weight: bold; - margin-left: 16px; } &>.top { - margin-left: 0px; } .record { display: none; + font-weight: normal; color: #444; + + &.show { + display: block; + } + + span:first-child { + color: #800033; + } + + span:last-child { + color: #888; + } } } diff --git a/static/js/dns.mjs b/static/js/dns.mjs index 3a237b9..99685cf 100644 --- a/static/js/dns.mjs +++ b/static/js/dns.mjs @@ -10,8 +10,11 @@ export class Application { handlerTop(event) { const fqdn = event.target - const top = fqdn.closest('.top') - const records = top.querySelector('.records') - console.log(fqdn, top, records) + const topEl = fqdn.closest('.top') + const records = document.querySelectorAll(`.record[data-top="${topEl.dataset.top}"]`) + console.log(`.record[data-top="${topEl.dataset.top}"]`) + console.log(topEl.dataset.top, records) + for (const r of records) + r.classList.toggle('show') } } diff --git a/webserver.go b/webserver.go index 0a59029..e67aba0 100644 --- a/webserver.go +++ b/webserver.go @@ -66,13 +66,10 @@ func rootHandler(w http.ResponseWriter, r *http.Request) { slices.SortFunc(entries, SortDNSRecord) data["DNSRecords"] = entries - fmt.Printf("\n\x1b[32;1mSTART\x1b[0m\n") tree := BuildRecordsTree(entries) htmlTree := tree.ToHTML([]string{}) data["Tree"] = template.HTML(htmlTree) - fmt.Printf("\n\x1b[32;1mDONE\x1b[0m\n") - j, _ := json.Marshal(tree) os.WriteFile("/tmp/tree.json", j, 0644)