HEX
Server: LiteSpeed
System: Linux cluster02.load-balancer.x2.network 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: kbdhpghp (1098)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //opt/cloudlinux/venv/lib/python3.11/site-packages/clwpos/__pycache__/whmcs_utils.cpython-311.pyc
�

׊�hr%����ddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Zddlm
Z
ddlmZddlmZmZmZmZmZmZmZmZmZddlmZmZddefd	�Zd
�Zd�Z d�Z!d
�Z"d�Z#d�Z$d�Z%d�Z&defd�Z'dS)�N)�cpusers)�gettext)� _get_wpos_statistics_total_count)�	WposError)	�
USER_WPOS_DIR�PUBLIC_OPTIONS�AWP_BACKUP_DIR�CLWPOS_UIDS_PATH�CLWPOS_ADMIN_DIR�USERS_CONFIGS_TO_BACKUP�PUBLIC_OPTIONS_FILE_NAME�CLWPOS_UIDS_DIR_NAME�ALLOWED_SUITES_JSON)�
ALL_SUITES�AWPSuite�returnc�L��|r|gntt����}i}|D]}}	tj|��}n%#t$rtjd|��Y�9wxYwtj�	|j
t����fd�tD��||<�~|S)z3
    Collects user configs inside HOME/.clwpos
    z*Cannot collect configs folder for user: %sc�P��g|]"}tj��|����#S�)�os�path�join)�.0�config�
full_user_dirs  ��I/opt/cloudlinux/venv/lib64/python3.11/site-packages/clwpos/whmcs_utils.py�
<listcomp>z(collect_user_configs.<locals>.<listcomp>3s)���h�h�h�f�b�g�l�l�=�&�A�A�h�h�h�)
�listr�pwd�getpwnam�KeyError�logging�warningrrr�pw_dirrr)�user�target_users�user_folders�pwrs    @r�collect_user_configsr*&s����"�6�D�6�6�t�G�I�I���L��L��i�i��	���d�#�#�B�B���	�	�	��O�H�$�O�O�O��H�	��������R�Y�
�>�>�
�h�h�h�h�Pg�h�h�h��T����s�>�A �A c
��|D�]}tj�|��s�#tj�||tj�tj�|������}tj�|tj�|����}tj�|��stj|dd���tj||����dS)z(
    Copies configs for single user
    �T)�mode�exist_okN)	rr�existsr�basename�dirname�makedirs�shutil�copy2)�username�configs�backups_dirr�user_backup_dir�backup_paths      r�backup_single_user_confr:7s����
(�
(���w�~�~�d�#�#�	���'�,�,�{�H�')�w�'7�'7������8M�8M�'N�'N�P�P���g�l�l�?�B�G�4D�4D�T�4J�4J�K�K���w�~�~�o�.�.�	D��K��e�d�C�C�C�C���T�;�'�'�'�'�
(�
(rc
��tg}ttg}t��}tj�ttj�	���
d����}tj�t��st	jtd���t	j|d���|D]7}tj�|��s�"tj||���8|D]r}tj�|��s�"tj|tj�|tj�|�������stj�|d��}t	j|d���|���D]<\}}	t%|||���#t&$rt)jd|��Y�9wxYwdS)z�
    Backups main AccelerateWP configs to
    /var/clwpos/DATE-TIME/.backup/%Y_%m_%d_%H_%M_%S.
    Directory is only root-editable, so no user permissions
    drop is needed.
    z%Y_%m_%d_%H_%M_%Sr,)r-�usersz!Cannot backup configs for user %sN)rr
rr*rrrr	�datetime�now�strftimer/�mkdirr3r4�copytreer0�itemsr:�	Exceptionr#�	exception)�files_to_backup�folders_to_backup�user_configs�current_backup_folderr�user_backupsr5�pathss        r�backup_accelerate_wprKHs���	��O�
	����
(�)�)�L��G�L�L��������(�(�)<�=�=�����7�>�>�.�)�)�-�
���e�,�,�,�,��H�
"��/�/�/�/��2�2���w�~�~�d�#�#�	����T�0�1�1�1�1�!�[�[���w�~�~�d�#�#�	�����b�g�l�l�+@�"�'�BR�BR�SW�BX�BX�Y�Y�Z�Z�Z�Z��7�<�<� 5�w�?�?�L��H�\��&�&�&�&�'�-�-�/�/�����%�	�#�H�e�\�B�B�B�B���	�	�	���A�8�L�L�L��H�	�����s�
G�H�Hc	�n�t��\}}}g}tj��D]�\}}|tjkrq||vrm||vrid}|tt
|j��dd���z
}|tt
|j��d��z
}|dkr|�|����|rDtj
dddd	d
�|��gtjtjd���|rDtj
dddd	d
�|��gtjtjd���|rDtj
ddd
d	d
�|��gtjtjd���|r2tj
ddd|gtjtjd���dSdS)zL
    Restore AccelerateWP suite states from latest backup (server-wide)
    r�allowedT)�allowed_by_modules�visiblez/usr/bin/cloudlinux-awp-adminz	set-suitez--disallowed-for-allz--suites�,)�stdout�stderr�textz--visible-for-allz--allowed-for-allzset-optionsz
--upgrade-urlN)
�_get_backup_of_public_optionsrrBr�namerr�features�append�
subprocess�Popenr�PIPE)�visible_suites�allowed_suites�upgrade_url�disallowed_suites�
suite_name�suite�
suite_useds       r�+restore_accelerate_wp_public_options_backuprbys&��3P�2Q�2Q�/�N�N�K���'�-�/�/�5�5��
�E����&�&�:�^�+K�+K�PZ�bp�Pp�Pp��J��:�4���;O�;O�QZ�os�t�t�t�t�J��:�4���;O�;O�QZ�[�[�[�J��Q���!�(�(��4�4�4���G���+��"���H�H�&�'�'�)��?�:�?��
	G�	G�	G�	G��G���+�����H�H�^�$�$�&��?�:�?��
	G�	G�	G�	G��G���+�����H�H�^�$�$�&��?�:�?��
	G�	G�	G�	G��G���+����	�
�?�:�?��	G�	G�	G�	G�	G�	G�G�Grc�V�g}g}d}t��}|�rtj�|t��}tj�|��r�t
|��5}	tj|��}|�	dg��}|�	dg��}|�	dd��}nJ#tj
j$r3}ttd��t|��d|i����d}~wwxYw	ddd��n#1swxYwY|||fS)N�r\r[r]zMBackup file is corrupted: %(config_file)s or fix the line provided in details�config_file)�message�details�context)�_get_first_backup_folderrrrr
r/�open�json�load�get�decoder�JSONDecodeErrorr�_�str)r\r[r]�first_backup�public_options_backup_file�f�public_options�errs        rrTrT�s����N��N��K�+�-�-�L��M�%'�W�\�\�,�@X�%Y�%Y�"�
�7�>�>�4�5�5�	M��0�1�1�
M�Q�
M�%)�Y�q�\�\�N�%3�%7�%7�8H�"�%M�%M�N�%3�%7�%7�8H�"�%M�%M�N�"0�"4�"4�]�B�"G�"G�K�K���|�3�M�M�M�#� !�#I�!J�!J� #�C���!.�0J� K�	M�M�M�M�����M���� �
M�
M�
M�
M�
M�
M�
M�
M�
M�
M�
M����
M�
M�
M�
M��>�;�6�6s7�+D�-AC�D�D�.D�D�D�D�"Dc��tj�t��r#d�tjt��D��SdS)Nc�n�g|]2}|����|j�d���0|��3S)�.)�is_dirrU�
startswith)r�entrys  rrz&get_backup_folders.<locals>.<listcomp>�s=��s�s�s�%������s�X]�Xb�Xm�Xm�nq�Xr�Xr�s��s�s�sr)rrr/r	�scandirrrr�get_backup_foldersr~�sC��	�w�~�~�n�%�%�t�s�s�2�:�n�#=�#=�s�s�s�s�t�trc�d�t��}d}|rt|d�d���}|r|dSdS)Nc��|jS�N)rU)r|s r�<lambda>z*_get_first_backup_folder.<locals>.<lambda>�s��E�J�rF)�key�reverser)r~�sorted)�folders�backupss  rriri�sJ�� �"�"�G��G��O���&>�&>��N�N�N�����q�z���4rc���tjt��D]�}|�d��r�tj�t|��}tj�td|����}tj�|��rD	tj||����#t$r }tj
d||��Yd}~��d}~wwxYw��dS)Nryz,Unable to deprecate backup dir %s. Error: %s)r�listdirr	r{rr�isdir�rename�OSErrorr#rD)�folder�folder_path�
folder_new�es    r�%make_accelerate_wp_backups_deprecatedr��s����*�^�,�,�	b�	b�����S�!�!�	���g�l�l�>�6�:�:���W�\�\�.�,�f�,�,�?�?�
�
�7�=�=��%�%�	b�
b��	�+�z�2�2�2�2���
b�
b�
b��!�"P�R]�_`�a�a�a�a�a�a�a�a�����
b����	b�	b�	bs�B5�5
C�?C�Cc
�n�i}i}t��}|stjd��iStj�|t��}tj|��5}|D�]4}tj�|t��}	tj
t|j����d}n#ttf$rY�iwxYwtj�|��s��t!|��5}	t#j|��}	|	�di��||<nB#t"jj$r+}
tjd||
j|
j��Yd}
~
nd}
~
wwxYwddd��n#1swxYwYt1|��}��6	ddd��n#1swxYwY|S)Nz4Can't restore WHMCS backup. There is no backup data.r�suiteszZBackup file is corrupted: %s or fix the line provided in detailsStdout is %s. Stderr is %s)rir#rDrrrrr}rr �getpwuid�intrUr"�	TypeErrorr/rjrkrlrmrnrorQrR�_group_users_by_suites)r��grouped_by_suite_usernamesrr�users_uids_dir�entries�
uid_folder�uid_config_pathr5rt�
uid_configr�s           r�_get_backup_of_users_suitesr��s^��
�F�!#��+�-�-�L�����P�Q�Q�Q��	��W�\�\�,�0D�E�E�N�	��N�	#�	#�H�w�!�	H�	H�J� �g�l�l�:�7J�K�K�O�
��<��J�O�(<�(<�=�=�a�@�����i�(�
�
�
���
�����7�>�>�/�2�2�
���o�&�&�
:�!�:�!%��1���J�'1�~�~�h��'C�'C�F�8�$�$���|�3�:�:�:��%�'C�DS�&'�h���:�:�:�:�:�:�:�:�����:����	
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:�*@��)G�)G�&�&�)	H�H�H�H�H�H�H�H�H�H�H�H����H�H�H�H�,&�%s��$+F*�,B=�<F*�=C�F*�C�2F*�F�-D3�2F�3E2	�!E-	�(F�-E2	�2F�5F*�F�F*�F�	F*�*F.�1F.�uids_suitesc���i}|���D]Z\}}|���D]@\}}||vri||<|||vr|gi||<|||�|���A�[|S)a
    Groups uids by suite and status to change suite status for multiple uids by one run.
    Converts per uid dict from
    uids_suites = {
        "user1": {
        "accelerate_wp": "allowed",
        "accelerate_wp_premium": "visible",
        "accelerate_wp_cdn": "default",
        "accelerate_wp_cdn_pro": "allowed"
        }
    }
    to
    {
        "accelerate_wp": {
            "allowed": [user1,user2,user3],
            "visible": [user1,user2,user3],
            "default": [],
        }
    }
    )rBrW)r��grouped_by_suite_uids�uidr�r`�statuss      rr�r�s���*��"�(�(�*�*�=�=���V�#�\�\�^�^�	=�	=�M�E�6��1�1�1�/1�%�e�,��2�5�9�9�9�06��|�%�e�,�!�%�(��0�7�7��<�<�<�<�	=�!� rr�)(r=r#rr3rkr rX�clcommon.cpapir�clwposrrp�clwpos.statsr�clwpos.cl_wpos_exceptionsr�clwpos.constantsrrr	r
rrr
rr�clwpos.feature_suitesrr�dictr*r:rKrbrTr~rir�r�r�rrr�<module>r�s�����������	�	�	�	�
�
�
�
�����
�
�
�
�����"�"�"�"�"�"�������9�9�9�9�9�9�/�/�/�/�/�/�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�7�6�6�6�6�6�6�6���t�����"(�(�(�".�.�.�b0G�0G�0G�f7�7�7�0t�t�t�
	�	�	�
b�
b�
b� &� &� &�F!��!�!�!�!�!�!r