hst: move container type to config
All checks were successful
Test / Hakurei (race detector) (push) Successful in 3m5s
Test / Flake checks (push) Successful in 1m33s
Test / Create distribution (push) Successful in 33s
Test / Sandbox (push) Successful in 2m10s
Test / Hakurei (push) Successful in 3m7s
Test / Hpkg (push) Successful in 3m55s
Test / Sandbox (race detector) (push) Successful in 4m18s
All checks were successful
Test / Hakurei (race detector) (push) Successful in 3m5s
Test / Flake checks (push) Successful in 1m33s
Test / Create distribution (push) Successful in 33s
Test / Sandbox (push) Successful in 2m10s
Test / Hakurei (push) Successful in 3m7s
Test / Hpkg (push) Successful in 3m55s
Test / Sandbox (race detector) (push) Successful in 4m18s
Container state initialisation is no longer implemented in hst so splitting them no longer makes sense. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
8dd3e1ee5d
commit
305c600cf5
@ -2,7 +2,10 @@
|
|||||||
package hst
|
package hst
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
"hakurei.app/container"
|
"hakurei.app/container"
|
||||||
|
"hakurei.app/container/seccomp"
|
||||||
"hakurei.app/system/dbus"
|
"hakurei.app/system/dbus"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -11,7 +14,8 @@ const Tmp = "/.hakurei"
|
|||||||
var AbsTmp = container.MustAbs(Tmp)
|
var AbsTmp = container.MustAbs(Tmp)
|
||||||
|
|
||||||
// Config is used to seal an app implementation.
|
// Config is used to seal an app implementation.
|
||||||
type Config struct {
|
type (
|
||||||
|
Config struct {
|
||||||
// reverse-DNS style arbitrary identifier string from config;
|
// reverse-DNS style arbitrary identifier string from config;
|
||||||
// passed to wayland security-context-v1 as application ID
|
// passed to wayland security-context-v1 as application ID
|
||||||
// and used as part of defaults in dbus session proxy
|
// and used as part of defaults in dbus session proxy
|
||||||
@ -53,7 +57,66 @@ type Config struct {
|
|||||||
|
|
||||||
// abstract container configuration baseline
|
// abstract container configuration baseline
|
||||||
Container *ContainerConfig `json:"container"`
|
Container *ContainerConfig `json:"container"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ContainerConfig describes the container configuration baseline to which the app implementation adds upon.
|
||||||
|
ContainerConfig struct {
|
||||||
|
// container hostname
|
||||||
|
Hostname string `json:"hostname,omitempty"`
|
||||||
|
|
||||||
|
// duration to wait for after interrupting a container's initial process in nanoseconds;
|
||||||
|
// a negative value causes the container to be terminated immediately on cancellation
|
||||||
|
WaitDelay time.Duration `json:"wait_delay,omitempty"`
|
||||||
|
|
||||||
|
// extra seccomp flags
|
||||||
|
SeccompFlags seccomp.ExportFlag `json:"seccomp_flags"`
|
||||||
|
// extra seccomp presets
|
||||||
|
SeccompPresets seccomp.FilterPreset `json:"seccomp_presets"`
|
||||||
|
// disable project-specific filter extensions
|
||||||
|
SeccompCompat bool `json:"seccomp_compat,omitempty"`
|
||||||
|
// allow ptrace and friends
|
||||||
|
Devel bool `json:"devel,omitempty"`
|
||||||
|
// allow userns creation in container
|
||||||
|
Userns bool `json:"userns,omitempty"`
|
||||||
|
// share host net namespace
|
||||||
|
Net bool `json:"net,omitempty"`
|
||||||
|
// allow dangerous terminal I/O
|
||||||
|
Tty bool `json:"tty,omitempty"`
|
||||||
|
// allow multiarch
|
||||||
|
Multiarch bool `json:"multiarch,omitempty"`
|
||||||
|
|
||||||
|
// initial process environment variables
|
||||||
|
Env map[string]string `json:"env"`
|
||||||
|
// map target user uid to privileged user uid in the user namespace
|
||||||
|
MapRealUID bool `json:"map_real_uid"`
|
||||||
|
|
||||||
|
// pass through all devices
|
||||||
|
Device bool `json:"device,omitempty"`
|
||||||
|
// container mount points
|
||||||
|
Filesystem []FilesystemConfigJSON `json:"filesystem"`
|
||||||
|
// create symlinks inside container filesystem
|
||||||
|
Link []LinkConfig `json:"symlink"`
|
||||||
|
|
||||||
|
// automatically bind mount top-level directories to container root;
|
||||||
|
// the zero value disables this behaviour
|
||||||
|
AutoRoot *container.Absolute `json:"auto_root,omitempty"`
|
||||||
|
// extra flags for AutoRoot
|
||||||
|
RootFlags int `json:"root_flags,omitempty"`
|
||||||
|
|
||||||
|
// read-only /etc directory
|
||||||
|
Etc *container.Absolute `json:"etc,omitempty"`
|
||||||
|
// automatically set up /etc symlinks
|
||||||
|
AutoEtc bool `json:"auto_etc"`
|
||||||
|
}
|
||||||
|
|
||||||
|
LinkConfig struct {
|
||||||
|
// symlink target in container
|
||||||
|
Target *container.Absolute `json:"target"`
|
||||||
|
// linkname the symlink points to;
|
||||||
|
// prepend '*' to dereference an absolute pathname on host
|
||||||
|
Linkname string `json:"linkname"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// ExtraPermConfig describes an acl update op.
|
// ExtraPermConfig describes an acl update op.
|
||||||
type ExtraPermConfig struct {
|
type ExtraPermConfig struct {
|
||||||
|
@ -1,78 +0,0 @@
|
|||||||
package hst
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"hakurei.app/container"
|
|
||||||
"hakurei.app/container/seccomp"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// TmpfsPerm is the permission bits for tmpfs mount points
|
|
||||||
// configured through [FilesystemConfig].
|
|
||||||
TmpfsPerm = 0755
|
|
||||||
|
|
||||||
// TmpfsSize is the size for tmpfs mount points
|
|
||||||
// configured through [FilesystemConfig].
|
|
||||||
TmpfsSize = 0
|
|
||||||
)
|
|
||||||
|
|
||||||
type (
|
|
||||||
// ContainerConfig describes the container configuration baseline to which the app implementation adds upon.
|
|
||||||
ContainerConfig struct {
|
|
||||||
// container hostname
|
|
||||||
Hostname string `json:"hostname,omitempty"`
|
|
||||||
|
|
||||||
// duration to wait for after interrupting a container's initial process in nanoseconds;
|
|
||||||
// a negative value causes the container to be terminated immediately on cancellation
|
|
||||||
WaitDelay time.Duration `json:"wait_delay,omitempty"`
|
|
||||||
|
|
||||||
// extra seccomp flags
|
|
||||||
SeccompFlags seccomp.ExportFlag `json:"seccomp_flags"`
|
|
||||||
// extra seccomp presets
|
|
||||||
SeccompPresets seccomp.FilterPreset `json:"seccomp_presets"`
|
|
||||||
// disable project-specific filter extensions
|
|
||||||
SeccompCompat bool `json:"seccomp_compat,omitempty"`
|
|
||||||
// allow ptrace and friends
|
|
||||||
Devel bool `json:"devel,omitempty"`
|
|
||||||
// allow userns creation in container
|
|
||||||
Userns bool `json:"userns,omitempty"`
|
|
||||||
// share host net namespace
|
|
||||||
Net bool `json:"net,omitempty"`
|
|
||||||
// allow dangerous terminal I/O
|
|
||||||
Tty bool `json:"tty,omitempty"`
|
|
||||||
// allow multiarch
|
|
||||||
Multiarch bool `json:"multiarch,omitempty"`
|
|
||||||
|
|
||||||
// initial process environment variables
|
|
||||||
Env map[string]string `json:"env"`
|
|
||||||
// map target user uid to privileged user uid in the user namespace
|
|
||||||
MapRealUID bool `json:"map_real_uid"`
|
|
||||||
|
|
||||||
// pass through all devices
|
|
||||||
Device bool `json:"device,omitempty"`
|
|
||||||
// container mount points
|
|
||||||
Filesystem []FilesystemConfigJSON `json:"filesystem"`
|
|
||||||
// create symlinks inside container filesystem
|
|
||||||
Link []LinkConfig `json:"symlink"`
|
|
||||||
|
|
||||||
// automatically bind mount top-level directories to container root;
|
|
||||||
// the zero value disables this behaviour
|
|
||||||
AutoRoot *container.Absolute `json:"auto_root,omitempty"`
|
|
||||||
// extra flags for AutoRoot
|
|
||||||
RootFlags int `json:"root_flags,omitempty"`
|
|
||||||
|
|
||||||
// read-only /etc directory
|
|
||||||
Etc *container.Absolute `json:"etc,omitempty"`
|
|
||||||
// automatically set up /etc symlinks
|
|
||||||
AutoEtc bool `json:"auto_etc"`
|
|
||||||
}
|
|
||||||
|
|
||||||
LinkConfig struct {
|
|
||||||
// symlink target in container
|
|
||||||
Target *container.Absolute `json:"target"`
|
|
||||||
// linkname the symlink points to;
|
|
||||||
// prepend '*' to dereference an absolute pathname on host
|
|
||||||
Linkname string `json:"linkname"`
|
|
||||||
}
|
|
||||||
)
|
|
@ -479,7 +479,7 @@ func (seal *outcome) finalise(ctx context.Context, sys sys.State, config *hst.Co
|
|||||||
|
|
||||||
// append ExtraPerms last
|
// append ExtraPerms last
|
||||||
for _, p := range config.ExtraPerms {
|
for _, p := range config.ExtraPerms {
|
||||||
if p == nil {
|
if p == nil || p.Path == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user