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'):

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…