1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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())
}
|