From 38ef2b4d0caf48a5f6bb9d472b76764cbf14d23d Mon Sep 17 00:00:00 2001 From: Ophestra Umiker Date: Mon, 9 Sep 2024 03:16:54 +0900 Subject: app/dbus: manage dbus proxy and pass address to child This commit adds code that starts and registers the D-Bus proxy, as well as cleanup code that tracks and closes the daemon once our child exits. A few more flags were added to pass D-Bus config to xdg-dbus-proxy. Signed-off-by: Ophestra Umiker --- internal/state/exit.go | 19 +++++++++++++++++++ internal/state/register.go | 10 ++++++++++ 2 files changed, 29 insertions(+) (limited to 'internal/state') diff --git a/internal/state/exit.go b/internal/state/exit.go index 3da1f48e..4ba0a9d8 100644 --- a/internal/state/exit.go +++ b/internal/state/exit.go @@ -65,4 +65,23 @@ func BeforeExit() { fmt.Printf("Stripped ACL entry for user '%s' from '%s'\n", u.Username, candidate) } } + + if dbusProxy != nil { + if system.V.Verbose { + fmt.Println("D-Bus proxy registered, cleaning up") + } + + if err := dbusProxy.Close(); err != nil { + if errors.Is(err, os.ErrClosed) { + if system.V.Verbose { + fmt.Println("D-Bus proxy already closed") + } + } else { + fmt.Println("Error closing D-Bus proxy:", err) + } + } + + // wait for Proxy.Wait to return + <-*dbusDone + } } diff --git a/internal/state/register.go b/internal/state/register.go index ac502ae8..be9ce540 100644 --- a/internal/state/register.go +++ b/internal/state/register.go @@ -1,9 +1,14 @@ package state +import "git.ophivana.moe/cat/fortify/dbus" + var ( cleanupCandidate []string enablements *Enablements xcbActionComplete bool + + dbusProxy *dbus.Proxy + dbusDone *chan struct{} ) func RegisterRevertPath(p string) { @@ -23,3 +28,8 @@ func XcbActionComplete() { } xcbActionComplete = true } + +func RegisterDBus(p *dbus.Proxy, done *chan struct{}) { + dbusProxy = p + dbusDone = done +} -- cgit v1.3.1