main.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. keychainlinker "git.aetherial.dev/aeth/keychain-linker/pkg"
  6. "github.com/godbus/dbus/v5"
  7. "github.com/godbus/dbus/v5/introspect"
  8. )
  9. func main() {
  10. conn, err := dbus.ConnectSessionBus()
  11. if err != nil {
  12. panic(err)
  13. }
  14. defer conn.Close()
  15. path := "/dev/aetherial/KeychainLinker"
  16. session := &keychainlinker.SecretService{SessionBase: "/dev/aetherial/KeychainLinker/session/",
  17. CollectionBase: "/dev/aetherial/KeychainLinker/collection/",
  18. Collections: []dbus.ObjectPath{}}
  19. conn.Export(session, dbus.ObjectPath(path), "dev.aetherial.git.KeychainLinker.Service")
  20. conn.Export(introspect.Introspectable(keychainlinker.DbusAdv), dbus.ObjectPath(path),
  21. "org.freedesktop.DBus.Introspectable")
  22. reply, err := conn.RequestName("dev.aetherial.git.KeychainLinker.Service",
  23. dbus.NameFlagDoNotQueue)
  24. if err != nil {
  25. panic(err)
  26. }
  27. if reply != dbus.RequestNameReplyPrimaryOwner {
  28. fmt.Fprintln(os.Stderr, "name already taken")
  29. os.Exit(1)
  30. }
  31. fmt.Println("Listening on dev.aetherial.git.KeychainLinker.Service / /dev/aetherial/git/KeychainLinker/Service ...")
  32. select {}
  33. }