mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
feat: Add audit system with sink based dispatcher (#211)
* chore: Dependency update * feat: Add audit system with eventlog as a sink * fix: Linter fixes * fix: Code review fixes
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package audit
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/safedep/pmg/internal/eventlog"
|
||||
)
|
||||
|
||||
type eventlogSink struct{}
|
||||
|
||||
func newEventlogSink() *eventlogSink {
|
||||
return &eventlogSink{}
|
||||
}
|
||||
|
||||
func (s *eventlogSink) Handle(_ context.Context, event AuditEvent) error {
|
||||
elEvent := eventlog.Event{
|
||||
Timestamp: event.Timestamp,
|
||||
EventType: mapEventType(event.Type),
|
||||
Message: event.Message,
|
||||
PackageName: pkgName(event.PackageVersion),
|
||||
Version: pkgVersion(event.PackageVersion),
|
||||
Ecosystem: pkgEcosystem(event.PackageVersion),
|
||||
Details: event.Details,
|
||||
}
|
||||
return eventlog.LogEvent(elEvent)
|
||||
}
|
||||
|
||||
func (s *eventlogSink) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func mapEventType(t EventType) eventlog.EventType {
|
||||
switch t {
|
||||
case EventTypeMalwareBlocked:
|
||||
return eventlog.EventTypeMalwareBlocked
|
||||
case EventTypeMalwareConfirmed:
|
||||
return eventlog.EventTypeMalwareConfirmed
|
||||
case EventTypeInstallAllowed:
|
||||
return eventlog.EventTypeInstallAllowed
|
||||
case EventTypeInstallTrustedAllowed:
|
||||
return eventlog.EventTypeInstallTrustedAllowed
|
||||
case EventTypeInstallStarted:
|
||||
return eventlog.EventTypeInstallStarted
|
||||
case EventTypeDependencyResolved:
|
||||
return eventlog.EventTypeDependencyResolved
|
||||
case EventTypeInstallInsecureBypass:
|
||||
return eventlog.EventTypeInstallInsecureBypass
|
||||
case EventTypeProxyHostObserved:
|
||||
return eventlog.EventTypeProxyHostObserved
|
||||
case EventTypeSandboxOverride:
|
||||
return eventlog.EventTypeSandboxOverride
|
||||
case EventTypeError:
|
||||
return eventlog.EventTypeError
|
||||
case EventTypeSessionComplete:
|
||||
return eventlog.EventType("session_complete")
|
||||
default:
|
||||
return eventlog.EventType(string(t))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user