| Server IP : 127.0.1.1 / Your IP : 216.73.216.152 Web Server : Apache/2.4.52 (Ubuntu) System : Linux bahcrestlinepropertiesllc 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:17 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/thread-self/root/lib/python3/dist-packages/secretstorage/ |
Upload File : |
# SecretStorage module for Python
# Access passwords using the SecretService DBus API
# Author: Dmitry Shachnev, 2013-2020
# License: 3-clause BSD, see LICENSE file
"""This file provides quick access to all SecretStorage API. Please
refer to documentation of individual modules for API details.
"""
from jeepney.bus_messages import message_bus
from jeepney.io.blocking import DBusConnection, Proxy, open_dbus_connection
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.exceptions import SecretStorageException, \
SecretServiceNotAvailableException, LockedException, \
ItemNotFoundException, PromptDismissedException
from secretstorage.util import add_match_rules
__version_tuple__ = (3, 3, 1)
__version__ = '.'.join(map(str, __version_tuple__))
__all__ = [
'Collection',
'Item',
'ItemNotFoundException',
'LockedException',
'PromptDismissedException',
'SecretServiceNotAvailableException',
'SecretStorageException',
'check_service_availability',
'create_collection',
'dbus_init',
'get_all_collections',
'get_any_collection',
'get_collection_by_alias',
'get_default_collection',
'search_items',
]
def dbus_init() -> DBusConnection:
"""Returns a new connection to the session bus, instance of
jeepney's :class:`DBusConnection` class. This connection can
then be passed to various SecretStorage functions, such as
:func:`~secretstorage.collection.get_default_collection`.
.. warning::
The D-Bus socket will not be closed automatically. You can
close it manually using the :meth:`DBusConnection.close` method,
or you can use the :class:`contextlib.closing` context manager:
.. code-block:: python
from contextlib import closing
with closing(dbus_init()) as conn:
collection = secretstorage.get_default_collection(conn)
items = collection.search_items({'application': 'myapp'})
However, you will not be able to call any methods on the objects
created within the context after you leave it.
.. versionchanged:: 3.0
Before the port to Jeepney, this function returned an
instance of :class:`dbus.SessionBus` class.
.. versionchanged:: 3.1
This function no longer accepts any arguments.
"""
try:
connection = open_dbus_connection()
add_match_rules(connection)
return connection
except KeyError as ex:
# os.environ['DBUS_SESSION_BUS_ADDRESS'] may raise it
reason = "Environment variable {} is unset".format(ex.args[0])
raise SecretServiceNotAvailableException(reason) from ex
except (ConnectionError, ValueError) as ex:
raise SecretServiceNotAvailableException(str(ex)) from ex
def check_service_availability(connection: DBusConnection) -> bool:
"""Returns True if the Secret Service daemon is either running or
available for activation via D-Bus, False otherwise.
.. versionadded:: 3.2
"""
from secretstorage.util import BUS_NAME
proxy = Proxy(message_bus, connection)
return (proxy.NameHasOwner(BUS_NAME)[0] == 1
or BUS_NAME in proxy.ListActivatableNames()[0])