INNER CODE UNIT · Python
read_checked
kejilion/sh · site_access_cli.py:56
def read_checked(dirfd, name, expected, limit):
fd, _, data = _read(dirfd, name, limit)
os.close(fd)
if digest(data) != expected:
raise Conflict('site or password file changed')
return data
def apply_account(rootfd, request):
required = {'operation', 'configName', 'configVersion', 'fileVersion', 'serverIndex',
'scope', 'path', 'modifier', 'username'}
optional = {'password', 'previousUsername'}
if not isinstance(request, dict) or not required <= request.keys() or request.keys() - required - optional:
raise ConfigError('invalid request fields')
config_name = request['configName']
if not isinstance(config_name, str) or not re.fullmatch(r'[A-Za-z0-9_.-]{1,253}\.conf', config_name):
raise ConfigError('invalid configuration name')
if request['operation'] not in ('add', 'update', 'delete'):