From 0107620d8c174dcf9237c16d4b4b7b2f6955a214 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sat, 28 Dec 2024 11:12:35 +0900 Subject: app: merge share methods This significantly increases readability and makes order of ops more obvious. Signed-off-by: Ophestra --- internal/app/share.display.go | 81 ------------------------------------------- 1 file changed, 81 deletions(-) delete mode 100644 internal/app/share.display.go (limited to 'internal/app/share.display.go') diff --git a/internal/app/share.display.go b/internal/app/share.display.go deleted file mode 100644 index f09efe61..00000000 --- a/internal/app/share.display.go +++ /dev/null @@ -1,81 +0,0 @@ -package app - -import ( - "errors" - "path" - - "git.gensokyo.uk/security/fortify/acl" - "git.gensokyo.uk/security/fortify/internal/fmsg" - "git.gensokyo.uk/security/fortify/internal/linux" - "git.gensokyo.uk/security/fortify/internal/system" -) - -const ( - term = "TERM" - display = "DISPLAY" - - // https://manpages.debian.org/experimental/libwayland-doc/wl_display_connect.3.en.html - waylandDisplay = "WAYLAND_DISPLAY" -) - -var ( - ErrWayland = errors.New(waylandDisplay + " unset") - ErrXDisplay = errors.New(display + " unset") -) - -func (seal *appSeal) shareDisplay(os linux.System) error { - // pass $TERM to launcher - if t, ok := os.LookupEnv(term); ok { - seal.sys.bwrap.SetEnv[term] = t - } - - // set up wayland - if seal.et.Has(system.EWayland) { - var wp string - if wd, ok := os.LookupEnv(waylandDisplay); !ok { - return fmsg.WrapError(ErrWayland, - "WAYLAND_DISPLAY is not set") - } else { - wp = path.Join(seal.RuntimePath, wd) - } - - w := path.Join(seal.sys.runtime, "wayland-0") - seal.sys.bwrap.SetEnv[waylandDisplay] = w - - if seal.directWayland { - // hardlink wayland socket - wpi := path.Join(seal.shareLocal, "wayland") - seal.sys.Link(wp, wpi) - seal.sys.bwrap.Bind(wpi, w) - - // ensure Wayland socket ACL (e.g. `/run/user/%d/wayland-%d`) - seal.sys.UpdatePermType(system.EWayland, wp, acl.Read, acl.Write, acl.Execute) - } else { - wc := path.Join(seal.SharePath, "wayland") - wt := path.Join(wc, seal.id) - seal.sys.Ensure(wc, 0711) - appID := seal.fid - if appID == "" { - // use instance ID in case app id is not set - appID = "moe.ophivana.fortify." + seal.id - } - seal.sys.Wayland(wt, wp, appID, seal.id) - seal.sys.bwrap.Bind(wt, w) - } - } - - // set up X11 - if seal.et.Has(system.EX11) { - // discover X11 and grant user permission via the `ChangeHosts` command - if d, ok := os.LookupEnv(display); !ok { - return fmsg.WrapError(ErrXDisplay, - "DISPLAY is not set") - } else { - seal.sys.ChangeHosts("#" + seal.sys.user.us) - seal.sys.bwrap.SetEnv[display] = d - seal.sys.bwrap.Bind("/tmp/.X11-unix", "/tmp/.X11-unix") - } - } - - return nil -} -- cgit v1.3.1