66 "fmt"
77 "os"
88
9+ "github.com/google/uuid"
910 "github.com/safedep/dry/log"
1011 "github.com/safedep/gryph/core/events"
1112 "github.com/spf13/cobra"
@@ -18,6 +19,7 @@ func NewExportCmd() *cobra.Command {
1819 until string
1920 agent string
2021 output string
22+ session string
2123 sensitive bool
2224 )
2325
@@ -73,6 +75,24 @@ for validation. Sensitive events are excluded by default.`,
7375 filter = filter .WithAgents (agent )
7476 }
7577
78+ if session != "" {
79+ sessionID , err := uuid .Parse (session )
80+ if err != nil {
81+ s , err := app .Store .GetSessionByPrefix (ctx , session )
82+ if err != nil {
83+ return fmt .Errorf ("session not found: %s" , session )
84+ }
85+
86+ if s == nil {
87+ return fmt .Errorf ("session not found: %s" , session )
88+ }
89+
90+ sessionID = s .ID
91+ }
92+
93+ filter = filter .WithSession (sessionID )
94+ }
95+
7696 // Query events
7797 evts , err := app .Store .QueryEvents (ctx , filter )
7898 if err != nil {
@@ -130,6 +150,7 @@ for validation. Sensitive events are excluded by default.`,
130150 cmd .Flags ().StringVar (& until , "until" , "" , "export events until" )
131151 cmd .Flags ().StringVar (& agent , "agent" , "" , "filter by agent" )
132152 cmd .Flags ().StringVarP (& output , "output" , "o" , "" , "write to file (default: stdout)" )
153+ cmd .Flags ().StringVar (& session , "session" , "" , "filter by session ID (prefix match)" )
133154 cmd .Flags ().BoolVar (& sensitive , "sensitive" , false , "include sensitive events" )
134155
135156 return cmd
0 commit comments