FM

//sbin UP

#!/opt/cloudlinux/venv/bin/python3 -sbb
# -*- coding: utf-8 -*-
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2025 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# https://cloudlinux.com/docs/LICENCE.TXT
#
"""
Execute a command inside CageFS for a site (document root or domain).

This wrapper provides a command-line interface for executing commands within
the isolated CageFS environment for a specific website.
"""

import argparse
import os
import sys

from clcagefslib.webisolation import libenter


def create_parser():
    """
    Create argument parser for cagefs_enter_site.

    Returns:
        argparse.ArgumentParser: Configured argument parser
    """
    parser = argparse.ArgumentParser(
        # the command is named with _underscores_ to match
        # existing cagefs_enter wrapper from lvewrappers
        prog="cagefs_enter_site",
        description="Execute a command inside CageFS for a site (document root or domain)",
    )

    parser.add_argument("site", type=str, help="Document root or domain")

    parser.add_argument(
        "command", type=str, nargs=argparse.REMAINDER, help="Command to execute"
    )

    return parser


def main():
    """
    Main entry point.

    Returns:
        int: Exit code
    """
    parser = create_parser()
    args = parser.parse_args()

    if not args.command:
        parser.error("COMMAND is required")

    try:
        return libenter.enter_site(args.site, args.command)
    except ValueError as e:
        print(f"Error: {e}", file=sys.stderr)
        return 1
    except KeyboardInterrupt:
        # Clean Ctrl+C exit without traceback (exit code 130 = SIGINT).
        return 130


if __name__ == "__main__":
    if os.geteuid() == 0:
        print("Error: This program can not be run as root", file=sys.stderr)
        sys.exit(1)

    sys.exit(main())
cagefs_enter_site1877V
cagefsctl-user13203V
chroot42448V
consoletype12160V
cracklib-check13360V
cracklib-format251V
cracklib-packer13368V
cracklib-unpacker9248V
create-cracklib-dict990V
ddns-confgen20944V
dnssec-checkds936V
dnssec-coverage938V
dnssec-dsfromkey62304V
dnssec-importkey62304V
dnssec-keyfromlabel66312V
dnssec-keygen74592V
dnssec-keymgr934V
dnssec-revoke58104V
dnssec-settime62296V
dnssec-signzone120016V
dnssec-verify54112V
exim1280V
faillock21016V
genrandom12672V
hsendmail7510347V
ip709944V
isc-hmac-fixup12136V
ldconfig1009752V
lvdctl5555V
mkhomedir_helper25024V
named-checkzone37512V
named-compilezone37512V
nsec3hash12584V
pam_console_apply46280V
pam_timestamp_check12152V
pluginviewer21064V
proxyexec21680V
pwhistory_helper20928V
saslauthd96688V
sasldblistusers221264V
saslpasswd216816V
sendmail7510347V
sendmail.bak1048V
sendmail.exim1280V
testsaslauthd17056V
tmpwatch36320V
tsig-keygen20944V
unix_chkpwd37744V
unix_update37744V
Blog - My Melon - Digital Marketing & Creative Agency
Skip to content Skip to footer