@@ -15,6 +15,7 @@ import (
1515
1616 "github.com/docker/docker/api/types"
1717 "github.com/docker/docker/client"
18+ "github.com/step-security/armour/armour"
1819)
1920
2021type EventHandler struct {
@@ -89,6 +90,8 @@ func (eventHandler *EventHandler) handleFileEvent(event *Event) {
8990 }
9091 }
9192
93+ eventHandler .submitFileEvent (event )
94+
9295 eventHandler .fileMutex .Unlock ()
9396}
9497
@@ -123,6 +126,8 @@ func (eventHandler *EventHandler) handleProcessEvent(event *Event) {
123126 } else {
124127 eventHandler .procMutex .Unlock ()
125128 }
129+
130+ eventHandler .submitProcessEvent (event )
126131}
127132
128133/*
@@ -199,6 +204,10 @@ func (eventHandler *EventHandler) handleNetworkEvent(event *Event) {
199204 }
200205
201206 eventHandler .netMutex .Unlock ()
207+
208+ eventHandler .submitDNSEvent (reverseLookUp )
209+
210+ eventHandler .submitNetworkEvent (event )
202211}
203212
204213func (eventHandler * EventHandler ) HandleEvent (event * Event ) {
@@ -440,3 +449,68 @@ func isPrivateIPAddress(ipAddress string) bool {
440449func isIPv6 (ip string ) bool {
441450 return strings .Contains (ip , ":" )
442451}
452+
453+ func (eventHandler * EventHandler ) submitProcessEvent (event * Event ) {
454+ if ! IsCustomDetectionRulesEnabled () {
455+ return
456+ }
457+ if GlobalArmour == nil {
458+ return
459+ }
460+ dm := GlobalArmour .DetectionManager ()
461+ if dm == nil {
462+ return
463+ }
464+ dm .SubmitProcess (& armour.ProcessDetectionEvent {
465+ Pid : event .Pid ,
466+ PPid : event .PPid ,
467+ Exe : event .Exe ,
468+ Arguments : event .ProcessArguments ,
469+ Cwd : event .Path ,
470+ Timestamp : event .Timestamp ,
471+ })
472+ }
473+
474+ // submitFileEvent submits a file event to the detection manager.
475+ func (eventHandler * EventHandler ) submitFileEvent (event * Event ) {
476+ if ! IsCustomDetectionRulesEnabled () {
477+ return
478+ }
479+ if GlobalArmour == nil {
480+ return
481+ }
482+ dm := GlobalArmour .DetectionManager ()
483+ if dm == nil {
484+ return
485+ }
486+ dm .SubmitFile (& armour.FileDetectionEvent {
487+ Syscall : event .Syscall ,
488+ FileName : filepath .Base (event .FileName ),
489+ Path : event .FileName ,
490+ Exe : event .Exe ,
491+ Pid : event .Pid ,
492+ PPid : event .PPid ,
493+ Timestamp : event .Timestamp ,
494+ })
495+ }
496+
497+ // submitNetworkEvent submits a network event to the detection manager.
498+ func (eventHandler * EventHandler ) submitNetworkEvent (event * Event ) {
499+ if GlobalArmour == nil {
500+ return
501+ }
502+ dm := GlobalArmour .DetectionManager ()
503+ if dm == nil {
504+ return
505+ }
506+
507+ dm .SubmitNetwork (& armour.NetworkDetectionEvent {
508+ Pid : event .Pid ,
509+ PPid : event .PPid ,
510+ Exe : event .Exe ,
511+ Dest : event .IPAddress ,
512+ DestIP : event .IPAddress ,
513+ DestPort : event .Port ,
514+ Timestamp : event .Timestamp ,
515+ })
516+ }
0 commit comments