diff options
| author | s <[email protected]> | 2025-11-08 02:44:13 -0500 |
|---|---|---|
| committer | s <[email protected]> | 2025-11-08 02:44:13 -0500 |
| commit | dfcf52f30cdbde3a4e1400024b0c27451d179e5d (patch) | |
| tree | cdcac72f0d58b0689777644c771e80d53b502434 /cmd | |
| parent | 486a369f05125a3b86d663ea94684466e0658099 (diff) | |
| download | dborg-dfcf52f30cdbde3a4e1400024b0c27451d179e5d.tar.gz dborg-dfcf52f30cdbde3a4e1400024b0c27451d179e5d.zip | |
feat: add unauthenticated client support and new osint/x commands
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/dns.go | 2 | ||||
| -rw-r--r-- | cmd/osint.go | 45 | ||||
| -rw-r--r-- | cmd/root.go | 2 | ||||
| -rw-r--r-- | cmd/x.go | 54 |
4 files changed, 97 insertions, 6 deletions
@@ -29,7 +29,7 @@ func runDNSTLDCheck(cmd *cobra.Command, args []string) error { showOnly, _ := cmd.Flags().GetString("show-only") cfg := config.New() - c, err := client.New(cfg) + c, err := client.NewUnauthenticated(cfg) if err != nil { return fmt.Errorf("failed to create client: %w", err) } diff --git a/cmd/osint.go b/cmd/osint.go index 5aa8799..6b97464 100644 --- a/cmd/osint.go +++ b/cmd/osint.go @@ -41,11 +41,20 @@ var osintBreachForumCmd = &cobra.Command{ RunE: runOsintBreachForumSearch, } +var osintFilesCmd = &cobra.Command{ + Use: "files [url]", + Short: "Search open directory files", + Long: `Search for files in open directories using various filters (free OSINT endpoint)`, + Args: cobra.ExactArgs(1), + RunE: runOsintFilesSearch, +} + func init() { rootCmd.AddCommand(osintCmd) osintCmd.AddCommand(osintUsernameCmd) osintCmd.AddCommand(osintBSSIDCmd) osintCmd.AddCommand(osintBreachForumCmd) + osintCmd.AddCommand(osintFilesCmd) osintUsernameCmd.Flags().StringSliceP("sites", "s", []string{}, "Specific sites to check (comma-separated)") osintUsernameCmd.Flags().BoolP("fuzzy", "f", false, "Enable fuzzy validation mode") @@ -56,13 +65,18 @@ func init() { osintBSSIDCmd.Flags().BoolP("osm", "o", false, "Include OpenStreetMap URL for the location") osintBreachForumCmd.Flags().IntP("max_hits", "m", 10, "Maximum number of hits to return") + + osintFilesCmd.Flags().StringP("filename", "n", "", "Search term to match in filenames") + osintFilesCmd.Flags().StringP("extension", "e", "", "Filter by file extension(s) - comma-separated (e.g., pdf,doc,txt)") + osintFilesCmd.Flags().StringP("exclude", "x", "html,HTML", "Exclude file extension(s) - comma-separated") + osintFilesCmd.Flags().IntP("size", "s", 10, "Number of results to return (max 40)") + osintFilesCmd.Flags().IntP("from", "f", 0, "Starting offset for pagination") } func runOsintUsernameCheck(cmd *cobra.Command, args []string) error { - apiKey, _ := cmd.Flags().GetString("api-key") - cfg := config.New().WithAPIKey(apiKey) + cfg := config.New() - c, err := client.New(cfg) + c, err := client.NewUnauthenticated(cfg) if err != nil { return err } @@ -131,3 +145,28 @@ func runOsintBreachForumSearch(cmd *cobra.Command, args []string) error { return utils.PrintJSON(response) } + +func runOsintFilesSearch(cmd *cobra.Command, args []string) error { + cfg := config.New() + + c, err := client.NewUnauthenticated(cfg) + if err != nil { + return err + } + + params := &models.OpenDirectorySearchParams{ + URL: args[0], + } + params.Filename, _ = cmd.Flags().GetString("filename") + params.Extension, _ = cmd.Flags().GetString("extension") + params.Exclude, _ = cmd.Flags().GetString("exclude") + params.Size, _ = cmd.Flags().GetInt("size") + params.From, _ = cmd.Flags().GetInt("from") + + response, err := c.SearchOpenDirectoryFiles(params) + if err != nil { + return err + } + + return utils.PrintJSON(response) +} diff --git a/cmd/root.go b/cmd/root.go index cb6a676..e5939ca 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -12,7 +12,7 @@ var rootCmd = &cobra.Command{ Use: "dborg", Short: "DB.org.ai CLI client", Long: `█▀▀▄ █▀▀▄ █▀▀█ █▀▀█ █▀▀▀ █▀▀█ ▀█▀ -█░░█ █▀▀▄░░░█░░█ █▄▄▀ █░▀█░░░█▄▄█░░█░░ +█░░█░█▀▀▄░░░█░░█░█▄▄▀░█░▀█░░░█▄▄█░░█ ▀▀▀▀ ▀▀▀▀ ▀ ▀▀▀▀ ▀ ▀ ▀▀▀▀ ▀ ▀ ▀ ▀▀▀ DB.org.ai CLI client`, PersistentPreRunE: func(cmd *cobra.Command, args []string) error { @@ -32,10 +32,28 @@ var xTweetsCmd = &cobra.Command{ RunE: runXTweetsSearch, } +var xFirstCmd = &cobra.Command{ + Use: "first [username]", + Short: "Get first 20 followers of a Twitter/X account", + Long: `Retrieves the first 20 followers of a Twitter/X account`, + Args: cobra.ExactArgs(1), + RunE: runXFirstFollowers, +} + +var xNFLCmd = &cobra.Command{ + Use: "nfl [username]", + Short: "Get notable followers of a Twitter/X account", + Long: `Retrieves the notable followers (influential accounts) following a Twitter/X account`, + Args: cobra.ExactArgs(1), + RunE: runXNotableFollowers, +} + func init() { rootCmd.AddCommand(xCmd) xCmd.AddCommand(xHistoryCmd) xCmd.AddCommand(xTweetsCmd) + xCmd.AddCommand(xFirstCmd) + xCmd.AddCommand(xNFLCmd) } func runXHistorySearch(cmd *cobra.Command, args []string) error { @@ -72,7 +90,7 @@ func runXHistorySearch(cmd *cobra.Command, args []string) error { func runXTweetsSearch(cmd *cobra.Command, args []string) error { cfg := config.New() - c, err := client.New(cfg) + c, err := client.NewUnauthenticated(cfg) if err != nil { return err } @@ -88,3 +106,37 @@ func runXTweetsSearch(cmd *cobra.Command, args []string) error { return nil } + +func runXFirstFollowers(cmd *cobra.Command, args []string) error { + apiKey, _ := cmd.Flags().GetString("api-key") + cfg := config.New().WithAPIKey(apiKey) + + c, err := client.New(cfg) + if err != nil { + return err + } + + response, err := c.GetFirstFollowers(args[0]) + if err != nil { + return err + } + + return utils.PrintJSON(response) +} + +func runXNotableFollowers(cmd *cobra.Command, args []string) error { + apiKey, _ := cmd.Flags().GetString("api-key") + cfg := config.New().WithAPIKey(apiKey) + + c, err := client.New(cfg) + if err != nil { + return err + } + + response, err := c.GetNotableFollowers(args[0]) + if err != nil { + return err + } + + return utils.PrintJSON(response) +} |
