add support to encrypt files

This commit is contained in:
2022-01-28 12:22:45 +08:00
parent cc123daaa0
commit cc07636350
9 changed files with 298 additions and 35 deletions

View File

@@ -19,6 +19,7 @@ class BasicOption:
'''Basic options which is included in config, program and files.'''
_remove_old_files = None
_enable_pcre2 = None
_encrypt_files = None
_compress_config = None
@property
@@ -49,6 +50,20 @@ class BasicOption:
return cfg._enable_pcre2
return False
@cached_property
def encrypt_files(self) -> bool:
if self._encrypt_files is not None:
return self._encrypt_files
prog = getattr(self, "_prog", None)
if prog is not None:
if prog._encrypt_files is not None:
return prog._encrypt_files
cfg = getattr(self, "_cfg", None)
if cfg is not None:
if cfg._encrypt_files is not None:
return cfg._encrypt_files
return False
@cached_property
def remove_old_files(self) -> bool:
if self._remove_old_files is not None:
@@ -67,6 +82,7 @@ class BasicOption:
self.parse_compress_config(data)
self.parse_remove_old_files(data)
self.parse_enable_pcre2(data)
self.parse_encrypt_files(data)
def parse_compress_config(self, data=None):
if data is None:
@@ -89,6 +105,17 @@ class BasicOption:
raise TypeError('enable_pcre2 option must be a boolean.')
del v
def parse_encrypt_files(self, data=None):
if data is None:
data = getattr(self, 'data')
if 'encrypt_files' in data:
v = data['encrypt_files']
if isinstance(v, bool):
self._encrypt_files = v
else:
raise TypeError('encrypt_files option must be a boolean.')
del v
def parse_remove_old_files(self, data=None):
if data is None:
data = getattr(self, 'data')
@@ -403,7 +430,12 @@ class Program(BasicOption, NFBasicOption):
if i['name'] != '':
n = i['name']
if not relpath(name, n).startswith('..'):
return ConfigPath(i, self._cfg, self)
r = ConfigPath(i, self._cfg, self)
if r.is_exclude(n, name):
continue
if not r.is_include(n, name):
continue
return r
elif t == 'leveldb':
if relpath(i['name'], name) == '.':
return ConfigOLeveldb(i, self._cfg, self)