summaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authors <[email protected]>2025-12-20 02:45:32 -0500
committers <[email protected]>2025-12-20 02:45:32 -0500
commitbfd971bbc8d35685f18f4b9dd3a52f04f8b4f77f (patch)
tree2003679a51efaa7c1a43fe4f6da95530de8ce8aa /cmd
parentc8ad5b9ef9fdc094c2cd974d6b9a65112089922b (diff)
downloaddborg-1.0.9.tar.gz
dborg-1.0.9.zip
feat: add moon logs search command and filename filter support for stealer logsv1.0.9
Diffstat (limited to 'cmd')
-rw-r--r--cmd/me.go41
-rw-r--r--cmd/moon.go74
-rw-r--r--cmd/sl.go2
3 files changed, 117 insertions, 0 deletions
diff --git a/cmd/me.go b/cmd/me.go
new file mode 100644
index 0000000..e5ba7ec
--- /dev/null
+++ b/cmd/me.go
@@ -0,0 +1,41 @@
+package cmd
+
+import (
+ "git.db.org.ai/dborg/internal/formatter"
+ "github.com/spf13/cobra"
+)
+
+var meCmd = &cobra.Command{
+ Use: "me",
+ Short: "Get account information and usage statistics",
+ Long: `Get your account information, credits, and usage statistics.`,
+ RunE: runMe,
+}
+
+func init() {
+ rootCmd.AddCommand(meCmd)
+}
+
+func runMe(cmd *cobra.Command, args []string) error {
+ c, err := newClient()
+ if err != nil {
+ return err
+ }
+
+ response, err := c.GetAccountStats()
+ if err != nil {
+ return err
+ }
+
+ if err := checkError(response.Error); err != nil {
+ return err
+ }
+
+ output, err := formatter.FormatAccountStats(response, IsJSONOutput())
+ if err != nil {
+ return err
+ }
+
+ printOutput(output)
+ return nil
+}
diff --git a/cmd/moon.go b/cmd/moon.go
new file mode 100644
index 0000000..512fb7e
--- /dev/null
+++ b/cmd/moon.go
@@ -0,0 +1,74 @@
+package cmd
+
+import (
+ "fmt"
+
+ "git.db.org.ai/dborg/internal/formatter"
+ "git.db.org.ai/dborg/internal/models"
+ "github.com/spf13/cobra"
+)
+
+var moonCmd = &cobra.Command{
+ Use: "moon [query]",
+ Short: "Search moon logs",
+ Long: `Search moon logs with various filters. Requires admin API key.`,
+ Args: cobra.ExactArgs(1),
+ RunE: runMoon,
+}
+
+func init() {
+ rootCmd.AddCommand(moonCmd)
+
+ moonCmd.Flags().StringP("filename", "F", "", "Filter by filename")
+ moonCmd.Flags().IntP("max_hits", "n", 10, "Maximum number of hits to return")
+ moonCmd.Flags().StringP("sort_by", "s", "", "Sort by field (ingest_timestamp or date_posted)")
+ moonCmd.Flags().StringP("ingest_start_date", "i", "", "Ingest timestamp start date")
+ moonCmd.Flags().StringP("ingest_end_date", "e", "", "Ingest timestamp end date")
+ moonCmd.Flags().StringP("posted_start_date", "p", "", "Date posted start date")
+ moonCmd.Flags().StringP("posted_end_date", "D", "", "Date posted end date")
+ moonCmd.Flags().StringP("format", "f", "json", "Response format (json or custom like 'ulp', 'up', 'pul')")
+}
+
+func runMoon(cmd *cobra.Command, args []string) error {
+ c, err := newClient()
+ if err != nil {
+ return err
+ }
+
+ params := &models.MoonParams{
+ Query: args[0],
+ }
+ params.Filename, _ = cmd.Flags().GetString("filename")
+ params.MaxHits, _ = cmd.Flags().GetInt("max_hits")
+ sortBy, _ := cmd.Flags().GetString("sort_by")
+ if sortBy != "" && sortBy != "ingest_timestamp" && sortBy != "date_posted" {
+ return fmt.Errorf("invalid sort_by value: must be 'ingest_timestamp' or 'date_posted'")
+ }
+ params.SortBy = sortBy
+ params.IngestStartDate, _ = cmd.Flags().GetString("ingest_start_date")
+ params.IngestEndDate, _ = cmd.Flags().GetString("ingest_end_date")
+ params.PostedStartDate, _ = cmd.Flags().GetString("posted_start_date")
+ params.PostedEndDate, _ = cmd.Flags().GetString("posted_end_date")
+ params.Format, _ = cmd.Flags().GetString("format")
+
+ response, err := c.SearchMoonLogs(params)
+ if err != nil {
+ return err
+ }
+
+ if err := checkError(response.Error); err != nil {
+ return err
+ }
+
+ if params.Format != "json" {
+ fmt.Println(response.Message)
+ return nil
+ }
+
+ output, err := formatter.FormatMoonResults(response, IsJSONOutput())
+ if err != nil {
+ return err
+ }
+ printOutput(output)
+ return nil
+}
diff --git a/cmd/sl.go b/cmd/sl.go
index 1c8de09..2f28fc7 100644
--- a/cmd/sl.go
+++ b/cmd/sl.go
@@ -18,6 +18,7 @@ var slCmd = &cobra.Command{
func init() {
rootCmd.AddCommand(slCmd)
+ slCmd.Flags().StringP("filename", "F", "", "Filter by filename")
slCmd.Flags().IntP("max_hits", "n", 10, "Maximum number of hits to return")
slCmd.Flags().StringP("sort_by", "s", "", "Sort by field (ingest_timestamp or date_posted)")
slCmd.Flags().StringP("ingest_start_date", "i", "", "Ingest timestamp start date")
@@ -36,6 +37,7 @@ func runSLSearch(cmd *cobra.Command, args []string) error {
params := &models.SLParams{
Query: args[0],
}
+ params.Filename, _ = cmd.Flags().GetString("filename")
params.MaxHits, _ = cmd.Flags().GetInt("max_hits")
sortBy, _ := cmd.Flags().GetString("sort_by")
if sortBy != "" && sortBy != "ingest_timestamp" && sortBy != "date_posted" {