PHP 8.0.30
Preview: clcustomscript.py Size: 1.67 KB
/opt/cloudlinux/venv/lib64/python3.11/site-packages/clcommon/clcustomscript.py

#!/usr/bin/python
# coding=utf-8
import os
import stat

__author__ = "Aleksandr Shyshatsky"


def _is_safe_script(path):
    """Return True only if path is absolute, a regular file, executable,
    owned by root, and not writable by group or other (F-13)."""
    if not (os.path.isabs(path) and os.path.isfile(path)
            and os.access(path, os.X_OK)):
        return False
    try:
        st = os.stat(path)
    except OSError:
        return False
    if st.st_uid != 0 or st.st_gid != 0:
        return False
    if st.st_mode & (stat.S_IWGRP | stat.S_IWOTH):
        return False
    return True


def lvectl_custompanel_script():
    """
    Retrives custom panel script for lvectl from CL config file
    :return: Script full path or None if script filename not find in config
    """
    config_param_name = 'CUSTOM_GETPACKAGE_SCRIPT'
    try:
        # Try to determine custom script name
        if os.path.exists(CLSYSCONFIG):
            with open(CLSYSCONFIG, 'r', encoding='utf-8') as f:
                file_lines = f.readlines()
            for line in file_lines:
                line = line.strip()
                if line.startswith(config_param_name):
                    line_parts = line.split('=')
                    if len(line_parts) == 2 and line_parts[0].strip() == config_param_name:
                        script_name = line_parts[1].strip()
                        if _is_safe_script(script_name):
                            return script_name
    except (OSError, IOError, IndexError):
        # We are ignoring all errors, but script name not found in this case
        pass
    # Script name not found or error
    return None


CLSYSCONFIG = '/etc/sysconfig/cloudlinux'

Directory Contents

Dirs: 4 × Files: 30

Name Size Perms Modified Actions
cpapi DIR
- drwxr-xr-x 2026-07-29 02:18:17
Edit Download
lib DIR
- drwxr-xr-x 2026-07-29 02:18:17
Edit Download
- drwxr-xr-x 2026-07-29 02:18:17
Edit Download
- drwxr-xr-x 2026-07-29 02:18:17
Edit Download
12.96 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
2.13 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.95 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
14.04 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.67 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.04 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.65 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.14 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
6.47 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
8.66 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.45 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
471 B lrw-r--r-- 2026-07-13 11:15:48
Edit Download
4.05 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
7.74 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.27 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
657 B lrw-r--r-- 2026-07-13 11:15:48
Edit Download
18.29 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
277 B lrw-r--r-- 2026-07-13 11:15:48
Edit Download
3.55 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
5.01 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
5.29 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.15 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
4.45 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
5.84 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
9.77 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
8.97 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
3.12 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
32.61 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
2.71 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download
1.31 KB lrw-r--r-- 2026-07-13 11:15:48
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).