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
|
#
#-*- coding:utf-8 -*-
"""
Gentoo-keys - actionbase.py
Base api interface module
@copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
@license: GNU GPL2, see COPYING for details.
"""
from __future__ import print_function
import os
import sys
if sys.version_info[0] >= 3:
_unicode = str
else:
_unicode = unicode
from snakeoil.demandload import demandload
demandload(
"json:load",
"gkeys.lib:GkeysGPG",
"gkeys.keyhandler:KeyHandler",
)
class ActionBase(object):
'''Base actions class holding comon functions and init'''
def __init__(self, config, output=None, logger=None):
self.config = config
self.output = output
self.logger = logger
self.seeds = None
self._seedhandler = None
self._keyhandler = None
self._gpg = None
self.category = None
@property
def gpg(self):
'''Holds the classwide GkeysGPG instance'''
if not self._gpg:
self._gpg = GkeysGPG(self.config,
self._set_category(self.category), self.logger)
else:
self._gpg.basedir = self._set_category(self.category)
return self._gpg
@property
def keyhandler(self):
'''Holds the classwide KeyHandler instance'''
if not self._keyhandler:
self._init_keyhandler()
return self._keyhandler
def _init_keyhandler(self):
self._keyhandler = KeyHandler(self.config, self.logger)
self._seedhandler = self._keyhandler.seedhandler
@property
def seedhandler(self):
'''Holds the classwide SeedHandler instance
which is a convienience variable for the keyhandler's instance of it'''
if not self._seedhandler:
self._init_keyhandler()
return self._seedhandler
def _set_category(self, cat):
keyring = self.config.get_key('keyring')
if not keyring:
raise Exception("No keyring set.")
if not cat:
raise Exception("No category set.")
self.category = cat
catdir = os.path.join(keyring, cat)
self.logger.debug(_unicode("ACTIONS: _set_category; catdir = %s") % catdir)
self._set_trust(cat)
return catdir
def _set_trust(self, cat):
trust = self.config.get_key('trust-model', cat)
if trust in [None]:
trust = 'auto'
if 'trust-model' in self.config.defaults['gpg_defaults']:
index = self.config.defaults['gpg_defaults'].index('trust-model')
self.config.defaults['gpg_defaults'][index+1] = trust
else:
self.config.defaults['gpg_defaults'].extend(['--trust-model', trust])
|