/usr/lib/python2.7/dist-packages/secretstorage/__init__.py is in python-secretstorage 2.0.0-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | # SecretStorage module for Python
# Access passwords using the SecretService DBus API
# Author: Dmitry Shachnev, 2013
# License: BSD
"""This file provides quick access to all SecretStorage API. Please
refer to documentation of individual modules for API details.
It also provides some functions for compatibility with older
SecretStorage releases. Those functions are not recommended for use
in new software."""
import dbus
from secretstorage.collection import Collection, create_collection, \
get_all_collections, get_default_collection, get_any_collection, \
get_collection_by_alias, search_items
from secretstorage.item import Item
from secretstorage.defines import DBUS_NOT_SUPPORTED, DBUS_EXEC_FAILED, \
DBUS_NO_REPLY
from secretstorage.exceptions import SecretStorageException, \
SecretServiceNotAvailableException, LockedException, \
ItemNotFoundException
from os.path import join
__version__ = '2.0.0'
def dbus_init(main_loop=True, use_qt_loop=False):
"""Returns new SessionBus_. If `main_loop` is :const:`True`, registers
a main loop (PyQt5 main loop if `use_qt_loop` is :const:`True`, otherwise
GLib main loop).
.. _SessionBus: http://www.freedesktop.org/wiki/IntroductionToDBus#Buses
.. note::
Qt uses GLib main loops on UNIX-like systems by default, so one
will rarely need to set `use_qt_loop` to :const:`True`.
"""
if main_loop:
if use_qt_loop:
from dbus.mainloop.pyqt5 import DBusQtMainLoop
DBusQtMainLoop(set_as_default=True)
else:
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
try:
return dbus.SessionBus()
except dbus.exceptions.DBusException as e:
if e.get_dbus_name() in (DBUS_NOT_SUPPORTED,
DBUS_EXEC_FAILED, DBUS_NO_REPLY):
raise SecretServiceNotAvailableException(
e.get_dbus_message())
raise
# The functions below are provided for compatibility with old
# SecretStorage versions (<= 0.2).
def get_items(search_attributes, unlock_all=True):
"""Returns tuples for all items in the default collection matching
`search_attributes`."""
bus = dbus_init()
collection = get_any_collection(bus)
if unlock_all and collection.is_locked():
collection.unlock()
search_results = collection.search_items(search_attributes)
return [item.to_tuple() for item in search_results]
def get_items_ids(search_attributes):
"""Returns item id for all items in the default collection matching
`search_attributes`."""
bus = dbus_init()
collection = get_any_collection(bus)
search_results = collection.search_items(search_attributes)
return [item._item_id() for item in search_results]
def get_item_attributes(item_id):
"""Returns item attributes for item with given id."""
bus = dbus_init()
collection = get_any_collection(bus)
item = Item(bus, join(collection.collection_path, str(item_id)))
return item.get_attributes()
def get_item_object(item_id, unlock=True):
"""Returns the item with given id and unlocks it if `unlock` is
`True`."""
bus = dbus_init()
collection = get_any_collection(bus)
item = Item(bus, join(collection.collection_path, str(item_id)))
if unlock and collection.is_locked():
collection.unlock()
return item
def get_item(item_id, unlock=True):
"""Returns tuple representing the item with given id."""
return get_item_object(item_id, unlock).to_tuple()
def delete_item(item_id, unlock=True):
"""Deletes the item with given id."""
return get_item_object(item_id, unlock).delete()
def create_item(label, attributes, secret, unlock=True):
"""Creates an item with given `label`, `attributes` and `secret` in
the default collection. Returns id of the created item."""
bus = dbus_init()
collection = get_any_collection(bus)
if unlock and collection.is_locked():
collection.unlock()
item = collection.create_item(label, attributes, secret)
return item._item_id()
|