| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package main
- import (
- "fmt"
- "os"
- keychainlinker "git.aetherial.dev/aeth/keychain-linker/pkg"
- "github.com/godbus/dbus/v5"
- "github.com/godbus/dbus/v5/introspect"
- )
- func main() {
- conn, err := dbus.ConnectSessionBus()
- if err != nil {
- panic(err)
- }
- defer conn.Close()
- path := "/org/freedesktop/secrets"
- service := keychainlinker.NewService(dbus.ObjectPath(path))
- conn.Export(service, dbus.ObjectPath(path), "org.freedesktop.Secret.Service")
- conn.Export(service.Cache["/org/freedesktop/secrets/collection/default"], "/org/freedesktop/secrets/collection/default", "org.freedesktop.DBus.Properties")
- conn.Export(introspect.Introspectable(keychainlinker.DbusAdv), dbus.ObjectPath(path),
- "org.freedesktop.DBus.Introspectable")
- <<<<<<< HEAD
- conn.Export(introspect.Introspectable(keychainlinker.DbusAdv), "/org/freedesktop/secrets/collection/default", "org.freedesktop.DBus.Introspectable")
- reply, err := conn.RequestName("org.freedesktop.secrets",
- =======
- node := introspect.Node{
- Interfaces: []introspect.Interface{
- {
- Name: "org.freedesktop.secret.Service",
- Methods: []introspect.Method{
- {Name: "Get", Args: []introspect.Arg{{Name: "interface_name", Type: "s", Direction: "in"}, {Name: "property_name", Type: "s", Direction: "in"}, {Name: "value", Type: "v", Direction: "out"}}},
- {Name: "Set", Args: []introspect.Arg{{Name: "interface_name", Type: "s", Direction: "in"}, {Name: "property_name", Type: "s", Direction: "in"}, {Name: "value", Type: "v", Direction: "in"}}},
- {Name: "GetAll", Args: []introspect.Arg{{Name: "interface_name", Type: "s", Direction: "in"}, {Name: "props", Type: "a{sv}", Direction: "out"}}},
- },
- },
- },
- }
- conn.Export(introspect.Introspectable(introspect.NewIntrospectable(&node)), "/org/freedesktop/secret", "org.freedesktop.DBus.Introspectable")
- node = introspect.Node{
- Interfaces: []introspect.Interface{
- {
- Name: "org.freedesktop.secret.Collection",
- Methods: []introspect.Method{
- {Name: "Get", Args: []introspect.Arg{{Name: "interface_name", Type: "s", Direction: "in"}, {Name: "property_name", Type: "s", Direction: "in"}, {Name: "value", Type: "v", Direction: "out"}}},
- {Name: "Set", Args: []introspect.Arg{{Name: "interface_name", Type: "s", Direction: "in"}, {Name: "property_name", Type: "s", Direction: "in"}, {Name: "value", Type: "v", Direction: "in"}}},
- },
- },
- },
- }
- conn.Export(introspect.Introspectable(introspect.NewIntrospectable(&node)), "/org/freedesktop/secret", "org.freedesktop.DBus.IntrospectData")
- reply, err := conn.RequestName("dev.aetherial.git.KeychainLinker.Service",
- >>>>>>> 2946fa107c12a5e2d1c88f3b60f8bea802b19fd7
- dbus.NameFlagDoNotQueue)
- if err != nil {
- panic(err)
- }
- if reply != dbus.RequestNameReplyPrimaryOwner {
- fmt.Fprintln(os.Stderr, "name already taken")
- os.Exit(1)
- }
- fmt.Println("Listening on org.freedesktop.secrets / /org/freedesktop/secrets ...")
- select {}
- }
|