Mini Shell
import json
from urllib.request import urlopen
from schema import Schema
from .parser import SSAConfigParser
from .validation import validate
from ..internal.exceptions import SSAError
def load_parser() -> SSAConfigParser:
"""
Create parser and load configuration
:return: parser
"""
conf = SSAConfigParser()
conf.read_ssa_conf()
return conf
def load_validated_parser() -> SSAConfigParser:
"""
Create parser, load configuration, validate it
:return: parser
"""
conf = load_parser()
_ = validate(dict(conf.items()))
return conf
def load_configuration() -> dict:
"""
Load and validate configuration
"""
conf = load_parser()
return validate(dict(conf.items()))
def load_tunables(external_source: str, scheme: Schema) -> dict:
"""
Load values from remote JSON config or
default values in case of troubles
"""
cfg_location = f"https://repo.cloudlinux.com/cloudlinux/sources/da/{external_source}"
try:
with urlopen(cfg_location) as cfg:
return validate(json.load(cfg), scheme)
except (OSError, json.JSONDecodeError, SSAError):
return validate(dict(), scheme)
Zerion Mini Shell 1.0