summaryrefslogtreecommitdiffstats
path: root/cmd/buckets.go
diff options
context:
space:
mode:
authors <[email protected]>2025-11-13 22:25:02 -0500
committers <[email protected]>2025-11-13 22:25:02 -0500
commit07662d9403eb85b39e1ffcf91014bbf36efd1c5a (patch)
tree1181435223899bae039a947c5fc4fdeec085f91b /cmd/buckets.go
parent239936e87183a10a33ce593709eb16c92a04af98 (diff)
downloaddborg-07662d9403eb85b39e1ffcf91014bbf36efd1c5a.tar.gz
dborg-07662d9403eb85b39e1ffcf91014bbf36efd1c5a.zip
refactor: break down large osint.go file into separate command modules and add helper functionsv1.0.1
Diffstat (limited to 'cmd/buckets.go')
-rw-r--r--cmd/buckets.go74
1 files changed, 74 insertions, 0 deletions
diff --git a/cmd/buckets.go b/cmd/buckets.go
new file mode 100644
index 0000000..fcb292d
--- /dev/null
+++ b/cmd/buckets.go
@@ -0,0 +1,74 @@
+package cmd
+
+import (
+ "git.db.org.ai/dborg/internal/formatter"
+ "git.db.org.ai/dborg/internal/models"
+ "github.com/spf13/cobra"
+)
+
+var bucketsCmd = &cobra.Command{
+ Use: "buckets",
+ Short: "List public buckets",
+ Long: `List public S3, Azure, GCP, and DigitalOcean buckets with file counts`,
+ RunE: runBucketsSearch,
+}
+
+var bucketFilesCmd = &cobra.Command{
+ Use: "bucket-files",
+ Short: "Search public bucket files",
+ Long: `Search public S3, Azure, GCP, and DigitalOcean buckets for exposed files`,
+ RunE: runBucketFilesSearch,
+}
+
+func init() {
+ rootCmd.AddCommand(bucketsCmd)
+ rootCmd.AddCommand(bucketFilesCmd)
+
+ bucketsCmd.Flags().IntP("limit", "l", 1000, "Number of results to return")
+ bucketsCmd.Flags().IntP("start", "t", 0, "Starting offset for pagination")
+
+ bucketFilesCmd.Flags().StringP("keywords", "w", "", "Search keywords")
+ bucketFilesCmd.Flags().StringP("extensions", "e", "", "File extensions (comma-separated, e.g. 'sql,db,xlsx')")
+ bucketFilesCmd.Flags().StringP("buckets", "b", "", "Filter by bucket names (comma-separated)")
+ bucketFilesCmd.Flags().IntP("limit", "l", 1000, "Number of results to return")
+ bucketFilesCmd.Flags().IntP("start", "t", 0, "Starting offset for pagination")
+}
+
+func runBucketsSearch(cmd *cobra.Command, args []string) error {
+ c, err := newClient()
+ if err != nil {
+ return err
+ }
+
+ params := &models.BucketsSearchParams{}
+ params.Limit, _ = cmd.Flags().GetInt("limit")
+ params.Start, _ = cmd.Flags().GetInt("start")
+
+ response, err := c.SearchBuckets(params)
+ if err != nil {
+ return err
+ }
+
+ return formatter.FormatBucketsResults(response, IsJSONOutput())
+}
+
+func runBucketFilesSearch(cmd *cobra.Command, args []string) error {
+ c, err := newClient()
+ if err != nil {
+ return err
+ }
+
+ params := &models.BucketsFilesSearchParams{}
+ params.Keywords, _ = cmd.Flags().GetString("keywords")
+ params.Extensions, _ = cmd.Flags().GetString("extensions")
+ params.Buckets, _ = cmd.Flags().GetString("buckets")
+ params.Limit, _ = cmd.Flags().GetInt("limit")
+ params.Start, _ = cmd.Flags().GetInt("start")
+
+ response, err := c.SearchBucketFiles(params)
+ if err != nil {
+ return err
+ }
+
+ return formatter.FormatBucketFilesResults(response, IsJSONOutput())
+}