Merge remote-tracking branch 'charles-dyfis-net/homedir-perm-check-skippable' into develop
commit
f3c193d8b4
|
@ -147,7 +147,7 @@ class GPGBase(object):
|
|||
|
||||
def __init__(self, binary=None, home=None, keyring=None, secring=None,
|
||||
use_agent=False, default_preference_list=None,
|
||||
verbose=False, options=None):
|
||||
ignore_homedir_permissions=False, verbose=False, options=None):
|
||||
"""Create a ``GPGBase``.
|
||||
|
||||
This class is used to set up properties for controlling the behaviour
|
||||
|
@ -170,6 +170,7 @@ class GPGBase(object):
|
|||
:ivar str secring: The filename in **homedir** to use as the keyring
|
||||
file for secret keys.
|
||||
"""
|
||||
self.ignore_homedir_permissions = ignore_homedir_permissions
|
||||
self.binary = _util._find_binary(binary)
|
||||
self.homedir = os.path.expanduser(home) if home else _util._conf
|
||||
pub = _parsers._fix_unsafe(keyring) if keyring else 'pubring.gpg'
|
||||
|
@ -413,18 +414,21 @@ class GPGBase(object):
|
|||
log.debug("GPGBase._homedir_setter(): Check existence of '%s'" % hd)
|
||||
_util._create_if_necessary(hd)
|
||||
|
||||
try:
|
||||
log.debug("GPGBase._homedir_setter(): checking permissions")
|
||||
assert _util._has_readwrite(hd), \
|
||||
"Homedir '%s' needs read/write permissions" % hd
|
||||
except AssertionError as ae:
|
||||
msg = ("Unable to set '%s' as GnuPG homedir" % directory)
|
||||
log.debug("GPGBase.homedir.setter(): %s" % msg)
|
||||
log.debug(str(ae))
|
||||
raise RuntimeError(str(ae))
|
||||
else:
|
||||
log.info("Setting homedir to '%s'" % hd)
|
||||
if self.ignore_homedir_permissions:
|
||||
self._homedir = hd
|
||||
else:
|
||||
try:
|
||||
log.debug("GPGBase._homedir_setter(): checking permissions")
|
||||
assert _util._has_readwrite(hd), \
|
||||
"Homedir '%s' needs read/write permissions" % hd
|
||||
except AssertionError as ae:
|
||||
msg = ("Unable to set '%s' as GnuPG homedir" % directory)
|
||||
log.debug("GPGBase.homedir.setter(): %s" % msg)
|
||||
log.debug(str(ae))
|
||||
raise RuntimeError(str(ae))
|
||||
else:
|
||||
log.info("Setting homedir to '%s'" % hd)
|
||||
self._homedir = hd
|
||||
|
||||
homedir = _util.InheritableProperty(_homedir_getter, _homedir_setter)
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ class GPG(GPGBase):
|
|||
|
||||
def __init__(self, binary=None, homedir=None, verbose=False,
|
||||
use_agent=False, keyring=None, secring=None,
|
||||
options=None):
|
||||
ignore_homedir_permissions=False, options=None):
|
||||
"""Initialize a GnuPG process wrapper.
|
||||
|
||||
:param str binary: Name for GnuPG binary executable. If the absolute
|
||||
|
@ -73,6 +73,10 @@ class GPG(GPGBase):
|
|||
and private keyrings. Default is whatever GnuPG
|
||||
defaults to.
|
||||
|
||||
:type ignore_homedir_permissions: :obj:`bool`
|
||||
:param ignore_homedir_permissions: If true, bypass check that homedir
|
||||
be writable.
|
||||
|
||||
:type verbose: :obj:`str` or :obj:`int` or :obj:`bool`
|
||||
:param verbose: String or numeric value to pass to GnuPG's
|
||||
``--debug-level`` option. See the GnuPG man page for
|
||||
|
@ -117,13 +121,16 @@ class GPG(GPGBase):
|
|||
secring=secring,
|
||||
options=options,
|
||||
verbose=verbose,
|
||||
use_agent=use_agent,)
|
||||
use_agent=use_agent,
|
||||
ignore_homedir_permissions=ignore_homedir_permissions,
|
||||
)
|
||||
|
||||
log.info(textwrap.dedent("""
|
||||
Initialised settings:
|
||||
binary: %s
|
||||
binary version: %s
|
||||
homedir: %s
|
||||
ignore_homedir_permissions: %s
|
||||
keyring: %s
|
||||
secring: %s
|
||||
default_preference_list: %s
|
||||
|
@ -134,6 +141,7 @@ class GPG(GPGBase):
|
|||
""" % (self.binary,
|
||||
self.binary_version,
|
||||
self.homedir,
|
||||
self.ignore_homedir_permissions,
|
||||
self.keyring,
|
||||
self.secring,
|
||||
self.default_preference_list,
|
||||
|
|
Loading…
Reference in New Issue