Mini Shell
#!/opt/cloudlinux/venv/bin/python3 -bb
# -*- coding: utf-8 -*-
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2025 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENCE.TXT
import sys
from distutils.sysconfig import get_python_lib
from pathlib import Path
HOOKS_LISTENERS_DIR = '/usr/share/cloudlinux/hooks/listeners'
USER_DIRS_HOOK = 'xray_user_dirs_hook.py'
ALL_XRAY_HOOKS = (USER_DIRS_HOOK,)
def install_panel_hooks() -> None:
"""
Install panel hooks for X-Ray
"""
lve_utils_hooks_dir = Path(get_python_lib(), 'xray', 'hooks')
for hook in ALL_XRAY_HOOKS:
listeners_hook_path = Path(HOOKS_LISTENERS_DIR, hook)
lve_utils_hook_path = Path(lve_utils_hooks_dir, hook)
# remove old hook pointing to symlink to lve_utils
if 'lve_utils' in str(listeners_hook_path.resolve()) or 'python3.7' in str(listeners_hook_path.resolve()):
listeners_hook_path.unlink()
if not listeners_hook_path.exists() and lve_utils_hook_path.exists():
listeners_hook_path.symlink_to(lve_utils_hook_path)
def uninstall_panel_hooks() -> None:
"""
Remove panel hooks for X-Ray
"""
for hook in ALL_XRAY_HOOKS:
listeners_hook_path = Path(HOOKS_LISTENERS_DIR, hook)
if listeners_hook_path.is_symlink():
listeners_hook_path.unlink()
def _install_hooks():
"""
Install X-Ray hooks
"""
install_panel_hooks()
def _uninstall_hooks():
"""
Uninstall X-Ray hooks
"""
uninstall_panel_hooks()
def main():
"""
Install or uninstall X-Ray hooks
"""
if '--install' in sys.argv:
_install_hooks()
elif '--uninstall' in sys.argv:
_uninstall_hooks()
if __name__ == "__main__":
main()