40 lines
796 B
Go
40 lines
796 B
Go
package dbus
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"sync"
|
|
)
|
|
|
|
const (
|
|
SessionBusAddress = "DBUS_SESSION_BUS_ADDRESS"
|
|
SystemBusAddress = "DBUS_SYSTEM_BUS_ADDRESS"
|
|
)
|
|
|
|
var (
|
|
addresses [2]string
|
|
addressOnce sync.Once
|
|
)
|
|
|
|
func Address() (session, system string) {
|
|
addressOnce.Do(func() {
|
|
// resolve upstream session bus address
|
|
if addr, ok := os.LookupEnv(SessionBusAddress); !ok {
|
|
// fall back to default format
|
|
addresses[0] = fmt.Sprintf("unix:path=/run/user/%d/bus", os.Getuid())
|
|
} else {
|
|
addresses[0] = addr
|
|
}
|
|
|
|
// resolve upstream system bus address
|
|
if addr, ok := os.LookupEnv(SystemBusAddress); !ok {
|
|
// fall back to default hardcoded value
|
|
addresses[1] = "unix:path=/run/dbus/system_bus_socket"
|
|
} else {
|
|
addresses[1] = addr
|
|
}
|
|
})
|
|
|
|
return addresses[0], addresses[1]
|
|
}
|