$40 GRAYBYTE WORDPRESS FILE MANAGER $58

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.162.162 | ADMIN IP 216.73.217.149
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/cloudlinux/venv/lib/python3.11/site-packages/clcagefslib/webisolation/

HOME
Current File : /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 [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
9 Apr 2026 8.30 AM
root / root
0755
__pycache__
--
9 Apr 2026 8.30 AM
root / root
0755
crontab
--
9 Apr 2026 8.30 AM
root / root
0755
__init__.py
0.242 KB
24 Mar 2026 9.59 AM
root / root
0644
admin_config.py
3.073 KB
24 Mar 2026 9.59 AM
root / root
0644
config.py
1.737 KB
24 Mar 2026 9.59 AM
root / root
0644
jail_config.py
2.716 KB
24 Mar 2026 9.59 AM
root / root
0644
jail_config_builder.py
6.211 KB
24 Mar 2026 9.59 AM
root / root
0644
jail_utils.py
4.928 KB
24 Mar 2026 9.59 AM
root / root
0644
libenter.py
2.227 KB
24 Mar 2026 9.59 AM
root / root
0644
mount_config.py
1.38 KB
24 Mar 2026 9.59 AM
root / root
0644
mount_ordering.py
4.96 KB
24 Mar 2026 9.59 AM
root / root
0644
mount_types.py
1.261 KB
24 Mar 2026 9.59 AM
root / root
0644
php.py
3.394 KB
24 Mar 2026 9.59 AM
root / root
0644
service.py
1.758 KB
24 Mar 2026 9.59 AM
root / root
0644
triggers.py
1.899 KB
24 Mar 2026 9.59 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF