feat(aa-log): parse log file to AA object to allow easy print.

This commit is contained in:
Alexandre Pujol 2023-08-17 23:12:46 +01:00
parent 574891d445
commit d06a474b0c
No known key found for this signature in database
GPG key ID: C5469996F0DF68EC
2 changed files with 82 additions and 0 deletions

View file

@ -11,6 +11,7 @@ import (
"regexp"
"strings"
"github.com/roddhjav/apparmor.d/pkg/aa"
"github.com/roddhjav/apparmor.d/pkg/util"
"golang.org/x/exp/slices"
)
@ -219,3 +220,26 @@ func (aaLogs AppArmorLogs) String() string {
}
return res
}
// ParseToProfiles convert the log data into a new AppArmorProfiles
func (aaLogs AppArmorLogs) ParseToProfiles() aa.AppArmorProfiles {
profiles := make(aa.AppArmorProfiles, 0)
for _, log := range aaLogs {
name := ""
if strings.Contains(log["operation"], "dbus") {
name = log["label"]
} else {
name = log["profile"]
}
if _, ok := profiles[name]; !ok {
profile := &aa.AppArmorProfile{}
profile.Name = name
profile.AddRule(log)
profiles[name] = profile
} else {
profiles[name].AddRule(log)
}
}
return profiles
}