summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors <[email protected]>2025-11-07 12:32:24 -0500
committers <[email protected]>2025-11-07 12:32:24 -0500
commiteeb3f677cae9c13440e868a83c0a621c5b22b0b5 (patch)
tree6beddb2f2c65bc09f194fcaca28b25a6b7dd1cd8
parent7d63867f365163f149db5d768c71f518f9eaf711 (diff)
downloaddborg-eeb3f677cae9c13440e868a83c0a621c5b22b0b5.tar.gz
dborg-eeb3f677cae9c13440e868a83c0a621c5b22b0b5.zip
feat: add show-only flag to filter dns tld results by existence status
-rw-r--r--cmd/dns.go6
-rw-r--r--internal/client/dns.go12
-rw-r--r--internal/models/dns.go3
3 files changed, 18 insertions, 3 deletions
diff --git a/cmd/dns.go b/cmd/dns.go
index 71a0d83..022d2c9 100644
--- a/cmd/dns.go
+++ b/cmd/dns.go
@@ -26,6 +26,7 @@ var dnsTLDCmd = &cobra.Command{
func runDNSTLDCheck(cmd *cobra.Command, args []string) error {
term := args[0]
+ showOnly, _ := cmd.Flags().GetString("show-only")
cfg := config.New()
c, err := client.New(cfg)
@@ -34,7 +35,8 @@ func runDNSTLDCheck(cmd *cobra.Command, args []string) error {
}
params := &models.DNSTLDParams{
- Term: term,
+ Term: term,
+ ShowOnly: showOnly,
}
fmt.Printf("Checking TLDs for term: %s\n\n", term)
@@ -54,4 +56,6 @@ func runDNSTLDCheck(cmd *cobra.Command, args []string) error {
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)")
}
diff --git a/internal/client/dns.go b/internal/client/dns.go
index 08449e0..9f9d4e8 100644
--- a/internal/client/dns.go
+++ b/internal/client/dns.go
@@ -2,6 +2,7 @@ package client
import (
"bufio"
+ "context"
"encoding/json"
"fmt"
"net/http"
@@ -14,6 +15,12 @@ func (c *Client) CheckDNSTLDStream(params *models.DNSTLDParams, callback func(re
term := url.PathEscape(params.Term)
fullURL := c.config.BaseURL + "/dns/tld/" + term
+ if params.ShowOnly != "" {
+ queryParams := url.Values{}
+ queryParams.Set("showOnly", params.ShowOnly)
+ fullURL = fullURL + "?" + queryParams.Encode()
+ }
+
req, err := http.NewRequest(http.MethodGet, fullURL, nil)
if err != nil {
return fmt.Errorf("failed to create request: %w", err)
@@ -21,7 +28,10 @@ func (c *Client) CheckDNSTLDStream(params *models.DNSTLDParams, callback func(re
req.Header.Set("User-Agent", c.config.UserAgent)
- resp, err := c.httpClient.Do(req)
+ streamClient := &http.Client{}
+ req = req.WithContext(context.Background())
+
+ resp, err := streamClient.Do(req)
if err != nil {
return fmt.Errorf("request failed: %w", err)
}
diff --git a/internal/models/dns.go b/internal/models/dns.go
index b08d8ba..51d9e50 100644
--- a/internal/models/dns.go
+++ b/internal/models/dns.go
@@ -1,7 +1,8 @@
package models
type DNSTLDParams struct {
- Term string
+ Term string
+ ShowOnly string
}
type DomainResult struct {