JFIF$        dd7 

Viewing File: /usr/share/l.v.e-manager/utils/__pycache__/libcagefs.cpython-311.pyc

�

�jO��<E���z�ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	m
Z
Gd�de��ZdS)�)�print_function)�division)�absolute_importN)�
basestringc��eZdZdZdZdZdZd�Zd�Zd�Z	d�Z
d�Zd	�Ze
d
���Zd�Zd�Zd
�Zd�Zd�Zd�Zd�ZdS)�CageFsz/usr/share/cagefs-skeleton/binz/var/log/cagefs-update.logz/usr/sbin/cagefsctlc��	|�dg�����}n#t$rd}YnwxYw|���}tj�|j��p#tj�|j��}|�	��||||�
��d�S)N�--cagefs-status�
not installed)�skeleton�status�mode�hasLogs�process)�run�strip�OSError�check_cagefs_mode�os�path�exists�CAGEFS_RESULTFILE�CAGEFS_RESULTFILEUPD�check_skeleteon�check_cagefsctl_exists)�selfr
r�has_logss    �o/builddir/build/BUILDROOT/lvemanager-7.11.29-1.el9.cloudlinux.x86_64/usr/share/l.v.e-manager/utils/libcagefs.pyr
z
CageFs.statuss���	%��X�X�0�1�2�2�8�8�:�:�F�F���	%�	%�	%�$�F�F�F�	%�����%�%�'�'���7�>�>�$�"8�9�9�6��G�N�N�4�4�5�5�	��,�,�.�.�����2�2�4�4�
�
�	
s�(+�:�:c�X�|�gd���|���S)N)�--init�--do-not-ask�--silent��run_backgroundr�rs r�initzCageFs.init)s/�����B�B�B�C�C�C��*�*�,�,�,�c�X�|�gd���|���S)N)�--force-updater!r"r#r%s r�updatez
CageFs.update-s/�����J�J�J�K�K�K��*�*�,�,�,r'c�J�tj�|j��S)N)rr�isdir�CAGEFS_SKELETONr%s rrzCageFs.check_skeleteon1s���w�}�}�T�1�2�2�2r'c��|sdg}|�d|j��	tj|tjdd���}n#tj$rd}YnwxYw|S)Nr
rFT)�stderr�shell�text�disabled)�insert�COMMAND�
subprocess�check_output�STDOUT�CalledProcessError)r�params�responses   rrz
CageFs.run4s����	)�'�(�F��
�
�a���&�&�&�	"�!�.�v�j�>O�5:��G�G�G�H�H���,�	"�	"�	"�!�H�H�H�	"�����s�"A�A�Ac���d�|jd�|����}ttjd��}t
j||||dd���dS)Nz{} {}� �wT�	/bin/bash)�stdin�stdoutr/r0�
executable)�formatr4�join�openr�devnullr5�Popen)rr9�command�FNULLs    rr$zCageFs.run_background?si���.�.���s�x�x��/?�/?�@�@���R�Z��%�%�����$� %� %�#�$/�	1�	1�	1�	1�	1�	1r'c��gd�}tj|tjd���}|�d��D]}d|vsd|vrdSd|vsd	|vrd
S�dS)N)r>z-cz!/bin/ps aux | /bin/grep cagefsctlT)r/r1�
r z--reinitr&z--updater)r*�)r5r6r7�split)rGr:�rows   rrzCageFs.check_cagefsctl_existsIs���8�8�8���*�7�:�;L�SW�X�X�X���>�>�$�'�'�	 �	 �C��3���*��"3�"3��v�v��s�"�"�&6�#�&=�&=��x�x�'>��rr'c�p�	|�dg��}n#t$rYdSwxYwd|vrdSd|vrdSdS)Nz--display-user-moderzCageFS is disabledr2zMode: Enable All�enabled)rr)r�results  rrzCageFs.check_cagefs_modeVse��	#��X�X�4�5�6�6�F�F���	#�	#�	#�"�?�?�	#�����6�)�)��:�
�6�
)�
)��9��:s��
'�'c��t|t��r|�d��}d|z}|g|z}|�|��S)ae
        Changes user's CageFS status. Supports performing
        action on multiple users.
        :param action: This can be either enable or disable
        :param users: list of users in the form of the array
        or the string separated by space to which action will be performed
        :return: Run class's run function and return result
        r<z--)�
isinstancerrLr)r�action�users�underscore_appended�request_paramss     r�
change_statuszCageFs.change_statusbsP���e�Z�(�(�	%��K�K��$�$�E�"�V�m��-�.��6���x�x��'�'�'r'c�
�|dkr|jn|j}tj�|��s|�dd|i��tj|tj��s|�dd|i��|S)z�
        Check file exists and return path
        :param operation: This can be either init or update
        :return: file path
        r&z!File {{filename}} does not exists�filenamez+File {{filename}} not available for reading)rrrr�isfile�exit_with_error�access�R_OK�r�	operation�
log_file_names   r�
_get_filenamezCageFs._get_filenameqs���3<�v�2E�2E��.�.�4�Kd�
��w�~�~�m�,�,�	c�� � �!D�z�S`�Fa�b�b�b��y����0�0�	m�� � �!N�Q[�]j�Pk�l�l�l��r'c�z�|�|��}|���dkrdnd}g}tj�|��rIt|��5}|���}||rdndd�}ddd��n#1swxYwY|s|�|dkrdnd	��|S)
a�
        Retrieves log files from the log file
        and returns to the UI
        :param operation: This can be either init or update
        and depending on the operation type corresponding log
        file will be used. If the currently cageFs is run with update
        or init flag then only last 100 lines of the log file will be returned
        :return: Iterate the lines by attaching number line and return result
        rKTFi����rNr&z
Init completezUpdate complete)rarrrrrD�	readlines�append)rr_r`�in_progress�
result_log�f�liness       r�get_logzCageFs.get_log~s���*�*�9�5�5�
�"�9�9�;�;�r�A�A�d�d�u���
�
�7�>�>�-�(�(�	B��m�$�$�
B�����
�
��"�K�$>�D�D�Q�#@�#@�A�
�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B��	]�����f�1D�1D�o�o�J[�\�\�\��s�"#B�B�Bc���|�|��}t|��5}tj|tjd��ddd��n#1swxYwYt	jd��dS)zN
        Check log file exists and return filename to wrapper to seed
        iPNr)rarD�shutil�copyfileobj�sysr@�exit)rr_�filepath�log_files    r�cagefs_log_datazCageFs.cagefs_log_data�s����%�%�i�0�0��
�(�^�^�	>�x���x���W�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>��������s�!A�A�Ac	���|�|��}ttjd|tj�|��d�����tjd��dS)zu
        Check file exists and return information for downloading
        :param operation:
        :return:
        �file)rPro�filesizerN)	ra�print�json�dumpsrr�getsizermrnr^s   r�download_logzCageFs.download_log�sk���*�*�9�5�5�
�
�d�j��%�����
�6�6�
�
���	�	�	�
	�������r'c�l�ttj||d�����td��dS)zj
        Exit script with error for user
        :param error_string: error_text
        :return:
        )rP�context�N)rurvrwrn)r�error_stringr{s   rr[zCageFs.exit_with_error�s3��	�d�j�L�W�E�E�F�F�G�G�G��Q�����r'N)�__name__�
__module__�__qualname__r-rrr4r
r&r*rrr$�staticmethodrrrWrarirqryr[�r'rrrs������6�O�4��7��#�G�
�
�
� -�-�-�-�-�-�3�3�3�	�	�	�1�1�1��
�
��\�
�
�
�
�
(�
(�
(�������*����������r'r)
�
__future__rrrrvrrkr5rm�
past.builtinsr�objectrr�r'r�<module>r�s���&�%�%�%�%�%�������&�&�&�&�&�&�����	�	�	�	�
�
�
�
�����
�
�
�
�$�$�$�$�$�$�_�_�_�_�_�V�_�_�_�_�_r'
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg