From 3a9d7a36a85cf8ae1098f213186ef83bbc3c56ba Mon Sep 17 00:00:00 2001 From: Max Resnick Date: Wed, 26 Mar 2025 22:21:03 -0700 Subject: fix: domain normalization, output format --- main.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 051e6cd..c7e4212 100644 --- a/main.go +++ b/main.go @@ -59,6 +59,11 @@ func main() { w := bufio.NewWriter(f) defer w.Flush() + if _, err := fmt.Fprintln(w, "server:"); err != nil { + slog.Error("failed to write header", "error", err) + os.Exit(1) + } + domains := make(map[string]struct{}) for i, url := range urls { slog.Info("fetching domains", "url", url, "progress", fmt.Sprintf("%d/%d", i+1, len(urls))) @@ -104,7 +109,6 @@ func fetchDomainsAndWrite(url string, w *bufio.Writer, seen map[string]struct{}) } defer resp.Body.Close() - fmt.Fprint(w, "server:\n") var count int scanner := bufio.NewScanner(resp.Body) for scanner.Scan() { @@ -127,6 +131,10 @@ func fetchDomainsAndWrite(url string, w *bufio.Writer, seen map[string]struct{}) // Normalize and validate domain format domain = strings.ToLower(strings.TrimSpace(domain)) + if idx := strings.Index(domain, "$"); idx != -1 { + domain = domain[:idx] + } + domain = strings.Trim(domain, "|^") if domain == "" || !strings.Contains(domain, ".") || strings.HasPrefix(domain, ".") || strings.HasSuffix(domain, ".") { continue } @@ -138,7 +146,7 @@ func fetchDomainsAndWrite(url string, w *bufio.Writer, seen map[string]struct{}) seen[domain] = struct{}{} count++ - if _, err := fmt.Fprintf(w, " local-zone: %q refuse\n", domain); err != nil { + if _, err := fmt.Fprintf(w, "\tlocal-zone: %q refuse\n", domain); err != nil { return fmt.Errorf("failed to write domain: %w", err) } } @@ -147,6 +155,10 @@ func fetchDomainsAndWrite(url string, w *bufio.Writer, seen map[string]struct{}) return fmt.Errorf("scanner error: %w", err) } + if err := w.Flush(); err != nil { + return fmt.Errorf("failed to flush writer: %w", err) + } + slog.Info("processed url", "url", url, "new_domains", count) return nil } -- cgit v1.2.3