xi-keyring

simple and extensible alternative for gnome-keyring
git clone https://git.ce9e.org/xi-keyring.git

commit
13aa5c9c87164c56108ac9d6056b0c6a1df5ddba
parent
493a6a2ff328a8689eebc95cf13c8b72f3f6a6e3
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2024-05-30 12:05
dbus: unregister sessions on close

Diffstat

M xikeyring/dbus.py 15 ++++++++-------

1 files changed, 8 insertions, 7 deletions


diff --git a/xikeyring/dbus.py b/xikeyring/dbus.py

@@ -198,8 +198,8 @@ class DBusService(BaseDBusService):
  198   198         output, session = create_session(algorithm, input)
  199   199         self.session_counter += 1
  200   200         session_path = f'{OFSP}/sessions/{self.session_counter}'
  201    -1         self.sessions[session_path] = session
  202    -1         self.register_object(conn, session_path, f'{OFSI}.Session')
   -1   201         sid = self.register_object(conn, session_path, f'{OFSI}.Session')
   -1   202         self.sessions[session_path] = (sid, session)
  203   203         return GLib.Variant('(vo)', (GLib.Variant('ay', output), session_path))
  204   204 
  205   205     def service_search_items(self, conn, sender, path, query):
@@ -215,7 +215,7 @@ class DBusService(BaseDBusService):
  215   215         return GLib.Variant('(aoo)', ([], '/'))
  216   216 
  217   217     def service_get_secrets(self, conn, sender, path, items, session_path):
  218    -1         session = self.sessions[session_path]
   -1   218         _sid, session = self.sessions[session_path]
  219   219         exe = self.get_exe(conn, sender)
  220   220         result = []
  221   221         for path in items:
@@ -242,7 +242,7 @@ class DBusService(BaseDBusService):
  242   242     def collection_create_item(
  243   243         self, conn, sender, path, properties, secret_tuple, replace
  244   244     ):
  245    -1         session = self.sessions[secret_tuple[0]]
   -1   245         _sid, session = self.sessions[secret_tuple[0]]
  246   246         secret = session.decode(secret_tuple)
  247   247         attributes = properties.get(f'{OFSI}.Item.Attributes', {})
  248   248         exe = self.get_exe(conn, sender)
@@ -285,13 +285,13 @@ class DBusService(BaseDBusService):
  285   285         id = int(path.rsplit('/', 1)[1], 10)
  286   286         exe = self.get_exe(conn, sender)
  287   287         secret = self.keyring.get_secret(exe, id)
  288    -1         session = self.sessions[session_path]
   -1   288         _sid, session = self.sessions[session_path]
  289   289         secret_tuple = session.encode(session_path, secret)
  290   290         return GLib.Variant('((oayays))', [secret_tuple])
  291   291 
  292   292     def item_set_secret(self, conn, sender, path, secret_tuple):
  293   293         id = int(path.rsplit('/', 1)[1], 10)
  294    -1         session = self.sessions[secret_tuple[0]]
   -1   294         _sid, session = self.sessions[secret_tuple[0]]
  295   295         secret = session.decode(secret_tuple)
  296   296         exe = self.get_exe(conn, sender)
  297   297         self.keyring.update_secret(exe, id, secret)
@@ -341,4 +341,5 @@ class DBusService(BaseDBusService):
  341   341         )
  342   342 
  343   343     def session_close(self, conn, sender, path):
  344    -1         del self.sessions[path]
   -1   344         sid, _session = self.sessions.pop(path)
   -1   345         conn.unregister_object(sid)