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
|
package cmd
import (
"git.db.org.ai/dborg/internal/formatter"
"git.db.org.ai/dborg/internal/models"
"github.com/spf13/cobra"
)
var shortlinksCmd = &cobra.Command{
Use: "shortlinks",
Short: "Search brute forced short links",
Long: `Search for exposed URLs discovered through brute forcing URL shortener services`,
RunE: runShortlinksSearch,
}
func init() {
rootCmd.AddCommand(shortlinksCmd)
shortlinksCmd.Flags().StringP("keywords", "w", "", "Search keywords")
shortlinksCmd.Flags().StringP("ext", "e", "", "File extensions (comma-separated, e.g. 'pdf,docx,xlsx')")
shortlinksCmd.Flags().StringP("order", "o", "", "Sort by property (size, timestamp)")
shortlinksCmd.Flags().StringP("direction", "d", "", "Sort direction (asc, desc)")
shortlinksCmd.Flags().BoolP("regexp", "r", false, "Treat keywords as regular expression")
shortlinksCmd.Flags().IntP("limit", "l", 100, "Number of results to return")
shortlinksCmd.Flags().IntP("start", "t", 0, "Starting offset for pagination")
}
func runShortlinksSearch(cmd *cobra.Command, args []string) error {
c, err := newClient()
if err != nil {
return err
}
params := &models.ShortlinksSearchParams{}
params.Keywords, _ = cmd.Flags().GetString("keywords")
params.Ext, _ = cmd.Flags().GetString("ext")
params.Order, _ = cmd.Flags().GetString("order")
params.Direction, _ = cmd.Flags().GetString("direction")
params.Regexp, _ = cmd.Flags().GetBool("regexp")
params.Limit, _ = cmd.Flags().GetInt("limit")
params.Start, _ = cmd.Flags().GetInt("start")
response, err := c.SearchShortlinks(params)
if err != nil {
return err
}
return formatter.FormatShortlinksResults(response, IsJSONOutput())
}
|