HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/clcagefslib/fs.py
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2024 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
import functools
import grp

import secureio
from clcommon import ClPwd

from .const import BASEDIR
from .exceptions import UserNotFoundError


def get_user_prefix(username) -> str:
    base = 100
    try:
        uid = secureio.clpwd.get_uid(username)
    except ClPwd.NoSuchUserException:
        raise UserNotFoundError(username)
    b = uid % base
    prefix = "%02d" % b
    return prefix


def get_var_cagefs_prefixed(username):
    prefix = get_user_prefix(username)
    return f"{BASEDIR}/{prefix}"


def get_user_var_cagefs_path(username):
    return f"{get_var_cagefs_prefixed(username)}/{username}/"


@functools.cache
def get_linksafe_gid() -> int | None:
    try:
        return grp.getgrnam('linksafe').gr_gid
    except KeyError:
        return None


def user_exists(user):
    return user in secureio.clpwd.get_user_dict()