D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
proc
/
self
/
root
/
opt
/
cloudlinux
/
venv
/
bin
/
Filename :
cagefs_enter_site.py
back
Copy
#!/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())