All checks were successful
Test / Create distribution (push) Successful in 34s
Test / Hakurei (push) Successful in 3m13s
Test / Hpkg (push) Successful in 4m5s
Test / Sandbox (race detector) (push) Successful in 4m28s
Test / Hakurei (race detector) (push) Successful in 5m23s
Test / Sandbox (push) Successful in 1m25s
Test / Flake checks (push) Successful in 1m33s
This simulates params to shim and this is the last step before params to shim is merged. Signed-off-by: Ophestra <cat@gensokyo.uk>
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
package app
|
|
|
|
import (
|
|
"encoding/gob"
|
|
|
|
"hakurei.app/container/fhs"
|
|
"hakurei.app/hst"
|
|
"hakurei.app/system/acl"
|
|
"hakurei.app/system/dbus"
|
|
)
|
|
|
|
func init() { gob.Register(new(spDBusOp)) }
|
|
|
|
// spDBusOp maintains an xdg-dbus-proxy instance for the container.
|
|
type spDBusOp struct {
|
|
// Whether to bind the system bus socket.
|
|
// Populated during toSystem.
|
|
ProxySystem bool
|
|
}
|
|
|
|
func (s *spDBusOp) toSystem(state *outcomeStateSys, config *hst.Config) error {
|
|
if config.SessionBus == nil {
|
|
config.SessionBus = dbus.NewConfig(config.ID, true, true)
|
|
}
|
|
|
|
// downstream socket paths
|
|
sessionPath, systemPath := state.instance().Append("bus"), state.instance().Append("system_bus_socket")
|
|
|
|
if err := state.sys.ProxyDBus(
|
|
config.SessionBus, config.SystemBus,
|
|
sessionPath, systemPath,
|
|
); err != nil {
|
|
return err
|
|
}
|
|
|
|
state.sys.UpdatePerm(sessionPath, acl.Read, acl.Write)
|
|
if config.SystemBus != nil {
|
|
s.ProxySystem = true
|
|
state.sys.UpdatePerm(systemPath, acl.Read, acl.Write)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *spDBusOp) toContainer(state *outcomeStateParams) error {
|
|
sessionInner := state.runtimeDir.Append("bus")
|
|
state.env["DBUS_SESSION_BUS_ADDRESS"] = "unix:path=" + sessionInner.String()
|
|
state.params.Bind(state.instancePath().Append("bus"), sessionInner, 0)
|
|
if s.ProxySystem {
|
|
systemInner := fhs.AbsRun.Append("dbus/system_bus_socket")
|
|
state.env["DBUS_SYSTEM_BUS_ADDRESS"] = "unix:path=" + systemInner.String()
|
|
state.params.Bind(state.instancePath().Append("system_bus_socket"), systemInner, 0)
|
|
}
|
|
return nil
|
|
}
|