MOON
Server: Apache
System: Linux server30c.hostingraja.org 3.10.0-962.3.2.lve1.5.63.el7.x86_64 #1 SMP Fri Oct 8 12:03:35 UTC 2021 x86_64
User: jibhires (1887)
PHP: 8.1.30
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, symlink, escapeshellcmd, pcntl_exec
Upload Files
File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/clconfigure/linksafe.py
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2018 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# https://cloudlinux.com/docs/LICENCE.TXT
#
from concurrent.futures import ThreadPoolExecutor
from typing import Iterator

from clconfigure import task, run
from clconfigure.packages import install_package


def initialize_linksafe():
    # NOTE(vlebedev): Also we need to trigger linksafe scriptlets to properly initialize relevant UNIX groups.
    #                 Otherwise this problem may occur:
    #                 https://cloudlinux.zendesk.com/hc/en-us/articles/
    #                 115004139173-What-does-Error-failed-to-create-symlink-13-Permission-denied-mean
    install_package('cloudlinux-linksafe', reinstall=True)
    assign_linksafe_group()


@task("Assigning linksafe group to files of 'alt-*' packages residing under /opt/alt")
def assign_linksafe_group(concurrency: int = 5):
    with ThreadPoolExecutor(max_workers=concurrency) as tp:
        for package in _installed_packages_iter(
            "alt-php*",
            "alt-python*",
            "alt-ruby*",
        ):
            tp.submit(run, ['/usr/bin/cl-linksafe-apply-group', package])


def _installed_packages_iter(*patterns: str) -> Iterator[str]:
    result = run(["rpm", "-qa", *patterns])

    lines = result.stdout.strip().splitlines()
    for line in lines:
        yield line