package cmd import ( "encoding/json" "fmt" "git.db.org.ai/dborg/internal/formatter" "git.db.org.ai/dborg/internal/models" "github.com/spf13/cobra" ) var dnsCmd = &cobra.Command{ Use: "dns", Short: "DNS operations", Long: "DNS-related operations for domain checking", } var dnsTLDCmd = &cobra.Command{ Use: "tld [term]", Short: "Check NXDOMAIN for custom term against all TLDs", Long: "Streams NDJSON results checking each TLD. For NXDOMAIN domains, returns status. For existing domains, runs httpx to get page title and tech stack.", Args: cobra.ExactArgs(1), RunE: runDNSTLDCheck, } func runDNSTLDCheck(cmd *cobra.Command, args []string) error { term := args[0] showOnly, _ := cmd.Flags().GetString("show-only") c, err := newUnauthenticatedClient() if err != nil { return fmt.Errorf("failed to create client: %w", err) } params := &models.DNSTLDParams{ Term: term, ShowOnly: showOnly, } fmt.Printf("Checking TLDs for term: %s\n\n", term) err = c.CheckDNSTLDStream(params, func(result json.RawMessage) error { var domainResult models.DomainResult if err := json.Unmarshal(result, &domainResult); err != nil { return fmt.Errorf("failed to parse result: %w", err) } output, err := formatter.FormatDNSResults(&domainResult, IsJSONOutput()) if err != nil { return err } printOutput(output) return nil }) if err != nil { return fmt.Errorf("TLD check failed: %w", err) } return nil } func init() { rootCmd.AddCommand(dnsCmd) dnsCmd.AddCommand(dnsTLDCmd) dnsTLDCmd.Flags().StringP("show-only", "s", "", "Filter results: 'exists' (only existing domains), 'nxdomain' (only non-existing domains), or empty (show all)") }