/usr/lib/python3/dist-packages/plainbox/impl/providers/v1.py is in python3-plainbox 0.25-1.
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 | # This file is part of Checkbox.
#
# Copyright 2013-2015 Canonical Ltd.
# Written by:
# Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
#
# Checkbox is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3,
# as published by the Free Software Foundation.
#
# Checkbox is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
"""
:mod:`plainbox.impl.providers.v1` -- Implementation of V1 provider
==================================================================
Most of the implementation is available in
:mod:`plainbox.impl.secure.providers.v1`
"""
__all__ = ['Provider1', 'InsecureProvider1PlugInCollection', 'all_providers',
'get_insecure_PROVIDERPATH_list', ]
import logging
import os
from plainbox.impl.secure.plugins import FsPlugInCollection
from plainbox.impl.secure.providers.v1 import Provider1
from plainbox.impl.secure.providers.v1 import Provider1PlugIn
from plainbox.impl.secure.providers.v1 import get_secure_PROVIDERPATH_list
logger = logging.getLogger("plainbox.providers.v1")
def get_user_PROVIDERPATH_entry():
"""
Computes the per-user component of PROVIDERPATH
:returns:
`$XDG_DATA_HOME/plainbox-providers-1`
"""
XDG_DATA_HOME = os.getenv(
'XDG_DATA_HOME', os.path.expanduser("~/.local/share/"))
return os.path.join(XDG_DATA_HOME, "plainbox-providers-1")
def get_insecure_PROVIDERPATH_list():
"""
Computes the insecure value of PROVIDERPATH.
This value is *not* used by `plainbox-trusted-launcher-1` executable since
it would involve reading files outside of the control by the local
administrator. This value is used for handing non-root jobs.
:returns:
A list of three strings:
* `/usr/local/share/plainbox-providers-1`
* `/usr/share/plainbox-providers-1`
* `$XDG_DATA_HOME/plainbox-providers-1`
"""
return get_secure_PROVIDERPATH_list() + [get_user_PROVIDERPATH_entry()]
class InsecureProvider1PlugInCollection(FsPlugInCollection):
"""
A collection of v1 provider plugins.
This FsPlugInCollection subclass carries proper, built-in defaults, that
make loading providers easier.
This particular class loads providers from both the system-wide managed
locations and per-user location. In addition the list of locations searched
can be changed by setting the ``PROVIDERPATH``, which behaves just like
PATH, but is used for looking up providers.
"""
def __init__(self, **kwargs):
PROVIDERPATH = os.getenv("PROVIDERPATH")
if PROVIDERPATH is None:
dir_list = get_insecure_PROVIDERPATH_list()
else:
dir_list = PROVIDERPATH.split(os.path.pathsep)
super().__init__(
dir_list, '.provider', wrapper=Provider1PlugIn, **kwargs)
# Collection of all providers
all_providers = InsecureProvider1PlugInCollection()
|