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 <cat@ophivana.moe>
This commit is contained in:
2024-09-09 03:16:54 +09:00
parent 357cc4ce4d
commit 38ef2b4d0c
6 changed files with 142 additions and 7 deletions

View File

@@ -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
}
}

View File

@@ -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
}