refractor(build): move builder tasks to the builder sub package. Add tests.

This commit is contained in:
Alexandre Pujol 2024-03-25 23:16:00 +00:00
parent 08d4110c2a
commit 16f00ebfc7
No known key found for this signature in database
GPG key ID: C5469996F0DF68EC
7 changed files with 516 additions and 0 deletions

View file

@ -0,0 +1,43 @@
// apparmor.d - Full set of apparmor profiles
// Copyright (C) 2021-2024 Alexandre Pujol <alexandre@pujol.io>
// SPDX-License-Identifier: GPL-2.0-only
package builder
import (
"regexp"
"strings"
"github.com/roddhjav/apparmor.d/pkg/aa"
"github.com/roddhjav/apparmor.d/pkg/prebuild/cfg"
)
var (
regAttachments = regexp.MustCompile(`(profile .* @{exec_path})`)
)
type Userspace struct {
cfg.Base
}
func init() {
RegisterBuilder(&Userspace{
Base: cfg.Base{
Keyword: "userspace",
Msg: "Bypass userspace tools restriction",
},
})
}
func (b Userspace) Apply(profile string) string {
p := aa.DefaultTunables()
p.ParseVariables(profile)
p.ResolveAttachments()
att := p.NestAttachments()
matches := regAttachments.FindAllString(profile, -1)
if len(matches) > 0 {
strheader := strings.Replace(matches[0], "@{exec_path}", att, -1)
return regAttachments.ReplaceAllLiteralString(profile, strheader)
}
return profile
}