package cmd import ( "git.db.org.ai/dborg/internal/formatter" "git.db.org.ai/dborg/internal/models" "github.com/spf13/cobra" ) var filesCmd = &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: runFilesSearch, } func init() { rootCmd.AddCommand(filesCmd) filesCmd.Flags().StringP("filename", "n", "", "Search term to match in filenames") filesCmd.Flags().StringP("extension", "e", "", "Filter by file extension(s) - comma-separated (e.g., pdf,doc,txt)") filesCmd.Flags().StringP("exclude", "x", "html,HTML", "Exclude file extension(s) - comma-separated") filesCmd.Flags().IntP("size", "s", 10, "Number of results to return (max 40)") filesCmd.Flags().IntP("from", "f", 0, "Starting offset for pagination") } func runFilesSearch(cmd *cobra.Command, args []string) error { c, err := newUnauthenticatedClient() 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 formatter.FormatFilesResults(*response, IsJSONOutput()) }