REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 2.26 KB
Close
/proc/self/root/opt/cloudlinux/venv/lib64/python3.11/site-packages/lvestats/core/plugin_loader.py
Text
Base64
# coding=utf-8 # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT import importlib.util import inspect import logging import os import sys from lvestats.core.plugin import LveStatsPlugin class PluginLoader(object): def check_incorrect_symlink(self, path): """ Check correcting symlink. If symlink incorrect return True :param str path: path to file or symlink :return bool: """ if os.path.islink(path) and not os.path.exists(os.path.realpath(path)): self.log.warning('Incorrect symlink %s', path) return True def __init__(self, plugins_folder): self.log = logging.getLogger(__name__) classes_loaded = [] if os.path.isdir(plugins_folder): file_names = (fn for fn in os.listdir(plugins_folder) if fn.endswith('.py')) for file_name in file_names: try: module_name, _ = os.path.splitext(file_name) full_path = os.path.join(plugins_folder, file_name) if self.check_incorrect_symlink(full_path): continue spec = importlib.util.spec_from_file_location(module_name, full_path) if spec is None: self.log.error('Unable to find spec for %s', file_name) continue module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) # Load only subclasses of LveStatsPlugin classes = [x for x in list(module.__dict__.values()) if inspect.isclass(x) and issubclass(x, LveStatsPlugin) and x is not LveStatsPlugin] if not classes: self.log.error('No classes to load found in %s', file_name) continue classes_loaded.extend(classes) sys.modules[module.__name__] = module except Exception as ex: self.log.exception('Unable to load %s due to exception %s', file_name, ex) self.plugins = classes_loaded
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 1 × Files: 4
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
__pycache__
DIR
-
drwxr-xr-x
2026-03-05 22:36:53
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
plugin.py
1.99 KB
lrw-r--r--
2026-02-17 11:00:05
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
plugin_context.py
1.05 KB
lrw-r--r--
2026-02-17 11:00:05
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
plugin_loader.py
2.26 KB
lrw-r--r--
2026-02-17 11:00:05
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.py
218 B
lrw-r--r--
2026-02-17 11:00:05
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).