/usr/share/cagefs/__pycache__
� O�`�Udi�� �� � d dl mZ d dl mZ d dl mZ d dl mZ d dlmZ ej � � d dlT d dl Z d dl Z d dlZd dlZd dl mZ d d lmZmZmZmZmZmZ d d lmZ d dlmZmZmZmZ d dlmZ ej � d � � d dl!m"Z"m#Z#m$Z$m%Z% e� � dk rdZ&ndZ&dZ'dZ( ej) d� � Z*d� Z+d� Z,d� Z-d� Z.d� Z/d� Z0d� Z1de2fd�Z3d� Z4d#d�Z5d � Z6d!� Z7d$d"�Z8dS )%� )�print_function)�absolute_import)�division)�unicode_literals)�standard_library)�*N)�Feature)� getCPName� PLESK_NAME�is_admin�DIRECTADMIN_NAME�CPANEL_NAME�is_panel_feature_supported)�ClPwd)�get_file_lines�run_command�ExternalProgramFailed�is_user_present)�write_file_via_tempfilez/usr/share/cagefs)�get_min_uid�MIN_UID�get_user_prefix�is_user_enabled�DirectAdminz&/etc/cagefs/exclude/directadmin.adminsz /etc/cagefs/exclude/panel.adminsz/usr/sbin/cagefsctlz/usr/share/cagefs-skeleton/binzclcommon.public_hooksc �\ � t j | t j t j dd�|��}|� � � \ }}t � d| � � |j dk rt � d||� � n#t � d| |j ||� � |j S )a This file is mostly a copy-paste from bash where return code of process was ignored. In order not to break servers, we decided to ignore exit codes in python too. This method runs subprocess and silently logs errors if exit code was not zero. No errors raised. T)�stderr�stdout�textzExecuting %sr zstdout: `%s` stderr:`%s`z>process %s dies with exit code %s and stdout: `%s` stderr:`%s`) � subprocess�Popen�PIPE�communicate�logger�info� returncode�debug�error)�args�kwargs�pr r s �d/builddir/build/BUILDROOT/cagefs-7.6.27-1.el9.cloudlinux.x86_64/usr/share/cagefs/generic_hook_lib.py�_call_with_loggingr, 2 s� � � �� �j�o���T� 5� 5�-3� 5� 5�A� �]�]�_�_�N�F�F� �K�K���%�%�%��|�q������0�&�&�A�A�A�A���� ��q�|�V�V� =� =� =� �<�� c � � t � � � | � � }n(# t j $ r t d| z � � Y dS w xY wt � � |t k rt d| |t fz � � dS dS )z} Checks if user can be places inside cage by his uid. :param username: unix user name :return: True or False zERROR: No such user %sFz2SKIP: User %s uid is %d - too small. min_uid is %dT)r �get_uid�NoSuchUserException�printr r )�username�uids r+ � _is_user_uid_suitable_for_cagefsr4 J s� � ���g�g�o�o�h�'�'�����$� � � � �&��1�2�2�2��u�u����� �M�M�M� �W�}�}� �B�h�PS�U\�E]�]�^�^�^��u��4s �!$ �!A �A c � � t j � t � � s dt z S t t � � }| dz }||v r@|� |� � t d� |� � t dd�� � dS )zV Remove admin name from cagefs exclude file :param admin_name: admin name z'WARNING: exclude list %s does not exist� � � �tmp��suffix�OK)�os�path�exists�_CAGEFS_EXCLUDE_FILEr �remover �join)� admin_name�f_lines�line_for_writes r+ �post_delete_admin_handlerrF \ s� � � �7�>�>�.�/�/� P�8�;O�O�O��1�2�2�G��$�&�N��� � ����~�&�&�&������ 0� 0�2F��W\�]�]�]�]��4r- c �D � t t � � }| dz }||vr@|� |� � t d� |� � t dd�� � t t d| g� � n)# t $ r}dt |� � z cY d}~S d}~ww xY wd S ) z] Triggered after creating new UNIX user for admin. :param admin_name: admin name r6 r7 r8 r9 r: z --disablezcagefsctl utility failed: %sNr<