blob: 649bc38a5437a2588e381eec801c89b572627625 (
plain)
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
|
import logging
from Bcfg2.Bcfg2Py3k import StringIO
from Bcfg2.Server.Plugins.Cfg.CfgGenshiGenerator import CfgGenshiGenerator
from Bcfg2.Server.Plugins.Cfg.CfgEncryptedGenerator import decrypt, \
CfgEncryptedGenerator
logger = logging.getLogger(__name__)
try:
from genshi.template import TemplateLoader
except ImportError:
# CfgGenshiGenerator will raise errors if genshi doesn't exist
pass
class EncryptedTemplateLoader(TemplateLoader):
def _instantiate(self, cls, fileobj, filepath, filename, encoding=None):
plaintext = StringIO(decrypt(fileobj.read()))
return TemplateLoader._instantiate(self, cls, plaintext, filepath,
filename, encoding=encoding)
class CfgEncryptedGenshiGenerator(CfgGenshiGenerator):
__extensions__ = ['genshi.crypt', 'crypt.genshi']
__loader_cls__ = EncryptedTemplateLoader
|