diff options
Diffstat (limited to 'internal/linux/interface.go')
| -rw-r--r-- | internal/linux/interface.go | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/internal/linux/interface.go b/internal/linux/interface.go deleted file mode 100644 index 762414c8..00000000 --- a/internal/linux/interface.go +++ /dev/null @@ -1,70 +0,0 @@ -package linux - -import ( - "io/fs" - "os/user" - "path" - "strconv" - - "git.gensokyo.uk/security/fortify/internal/fmsg" -) - -// System provides safe access to operating system resources. -type System interface { - // Geteuid provides [os.Geteuid]. - Geteuid() int - // LookupEnv provides [os.LookupEnv]. - LookupEnv(key string) (string, bool) - // TempDir provides [os.TempDir]. - TempDir() string - // LookPath provides [exec.LookPath]. - LookPath(file string) (string, error) - // MustExecutable provides [proc.MustExecutable]. - MustExecutable() string - // LookupGroup provides [user.LookupGroup]. - LookupGroup(name string) (*user.Group, error) - // ReadDir provides [os.ReadDir]. - ReadDir(name string) ([]fs.DirEntry, error) - // Stat provides [os.Stat]. - Stat(name string) (fs.FileInfo, error) - // Open provides [os.Open] - Open(name string) (fs.File, error) - // EvalSymlinks provides [filepath.EvalSymlinks] - EvalSymlinks(path string) (string, error) - // Exit provides [os.Exit]. - Exit(code int) - - // Paths returns a populated [Paths] struct. - Paths() Paths - // Uid invokes fsu and returns target uid. - // Any errors returned by Uid is already wrapped [fmsg.BaseError]. - Uid(aid int) (int, error) -} - -// Paths contains environment dependent paths used by fortify. -type Paths struct { - // path to shared directory e.g. /tmp/fortify.%d - SharePath string `json:"share_path"` - // XDG_RUNTIME_DIR value e.g. /run/user/%d - RuntimePath string `json:"runtime_path"` - // application runtime directory e.g. /run/user/%d/fortify - RunDirPath string `json:"run_dir_path"` -} - -// CopyPaths is a generic implementation of [System.Paths]. -func CopyPaths(os System, v *Paths) { - v.SharePath = path.Join(os.TempDir(), "fortify."+strconv.Itoa(os.Geteuid())) - - fmsg.Verbosef("process share directory at %q", v.SharePath) - - if r, ok := os.LookupEnv(xdgRuntimeDir); !ok || r == "" || !path.IsAbs(r) { - // fall back to path in share since fortify has no hard XDG dependency - v.RunDirPath = path.Join(v.SharePath, "run") - v.RuntimePath = path.Join(v.RunDirPath, "compat") - } else { - v.RuntimePath = r - v.RunDirPath = path.Join(v.RuntimePath, "fortify") - } - - fmsg.Verbosef("runtime directory at %q", v.RunDirPath) -} |
