Edit File: __init__.cpython-311.pyc
� ������Fh+:���������������������������d�Z�ddlZddlmZ�ddlmZmZ�ddlmZm Z m Z �ddlmZm Z mZmZmZmZmZmZmZ�ddlmZmZ�dd lmZmZmZ��e ��������������\��ZZd ��Zd:d�Zd:d �Z d��Z!d��Z"d��Z#d��Z$d��Z%d��Z&d;d�Z' � �d<d�Z(d��Z)d��Z*d��Z+d��Z,d��Z-d��Z.d��Z/d��Z0d=d �Z1d!��Z2d"��Z3d#��Z4d$��Z5d%��Z6d&��Z7d'ed(e8fd)�Z9d*��Z:d+��Z;d,��Z<d-e=d(e>fd.�Z?d/��Z@d0��ZAd1��ZBd2��ZC�e��������������d3����������������ZDd4��ZEd(e=fd5�ZFd6��ZGd7��ZHd8��ZId(e8fd9�ZJ�ee������������ZKeK�L����������������������������������ZM�e!��������������ZNeMjO��������ZOeMjP��������ZPeMjQ��������ZQeMjR��������ZReMjS��������ZSeMjT��������ZTeMjU��������ZUeMjV��������ZVeMjW��������ZWeMjX��������ZXeMjY��������ZYeMjZ��������ZZeMj[��������Z[dS�)>z< CloudLinux control panel API API for Hosting control panel �����N)� lru_cache����)�CACHE_CPNAME�UNKNOWN_CP_NAME)�Feature�get_cl_feature_status_map�get_hosting_accounts_limit) �get_cp_plugin_module�detect_panel_fast�CPANEL_NAME�DIRECTADMIN_NAME� PLESK_NAME�ISPMANAGER_NAME�INTERWORX_NAME�INTEGRATED_NAME�OFFICIAL_PLUGINS)�NotSupported�NoPanelUser)�is_cl_solo_edition�CLEditionDetectionError�is_containerc�������������������P�����t�����������t����������t����������t����������t����������t ����������fv�S�)zH Is current panel has native CL support :return: True/False )�_CP_NAMEr���r ���r���r���r�����������N/opt/imunify360/venv/lib64/python3.11/site-packages/clcommon/cpapi/__init__.py�is_cl_supported_panelr���2���s%������ �����������r���Fc������������������6�����t��������������������������������|�������������S�)z� Return list of available admin's packages :param raise_exc: hack for lvemanager :rtype: list :return: List of packages. For example ['BusinessPackage', 'Package2'] )�_panel_class�admin_packages�� raise_excs��� r���r ���r ���@���s��������&�&�y�1�1�1r���c������������������4�����t����������������������������������������������S�)a�� Return dictionary, contains available resellers packages, grouped by resellers :rtype: dict :return: Dictionary. Example: {'res1': ['BusinessPackage', 'UltraPackage', 'Package'], 'res2': ['SimplePackage', 'Package'] } )r����resellers_packagesr!���s��� r���r$���r$���K���s��������*�*�,�,�,r���c������������������������t����������j����������������������dk����rt���������������������������������������������S�t����������t �������������������t����������k����rt���������������������������������������������S�t�����������t����������S�t����������}�t�����������j ��������� ��������������������t����������������������rTt����������t����������d�������������5�}|� ���������������������������������������������������������������������}�ddd�������������n#�1�swxY�w�Y���|�S�)zC Return panel name :rtype: str :return: Panel name r���Nzutf-8)�encoding)�os�getegidr���� getCPNamer���r����_CP_PLUGIN_NAMEr���r����path�isfiler����open�readline�strip)�controlpanelname�cache_streams��� r���r)���r)���W���s�������� �z�|�|�q����%�%�'�'�'����(�O�;�;��%�%�'�'�'�� � ���&�� �w�~�~�l�#�#��?� �,�� 1� 1� 1�� ?�\�+�4�4�6�6�<�<�>�>�� ?�� ?�� ?�� ?�� ?�� ?�� ?�� ?�� ?�� ?�� ?����� ?�� ?�� ?�� ?��s����4'C'�'C+�.C+c�������������������4�����t����������������������������������������������S�)z� Retrieve panel name and it's version :rtype: dict :return: dict: { 'name': 'panel_name', 'version': 'panel_version', 'additional_info': 'add_info'} or None if can't get info )r����get_cp_descriptionr���r���r���r3���r3���q���s��������*�*�,�,�,r���c������������������������t������������������������rt���������������������������������������������S�t�������������������������������d�������������}�d��|�D���������������}t ����������|������������S�)z� Generates a list of cpusers registered in the control panel :return: list of cpusers registered in the control panel :rtype: tuple )�cplogin)�keylsc�����������������������g�|�] }|d������������S�)r���r���)�.0�user_s��� r���� <listcomp>zcpusers.<locals>.<listcomp>����s������4�4�4��5��8�4�4�4r���)r���r����cpusers�cpinfo�tuple)� users_info�_list_userss��� r���r;���r;���{���s[�����������&��#�#�%�%�%��$�$�=�$�9�9�J�4�4��4�4�4�K�����r���c�������������������4�����t����������������������������������������������S�)z� Generates a list of resellers in the control panel :return: list of cpusers registered in the control panel :rtype: tuple )r���� resellersr���r���r���rA���rA�������s��������!�!�#�#�#r���c�������������������4�����t����������������������������������������������S�)z� Generates a set of admins in the control panel :return: set of cpusers registered in the control panel :rtype: set :raise: NotSupported )r����adminsr���r���r���rC���rC�������s���������� � � r���c�������������������4�����t����������������������������������������������S�)z� Getting root access to mysql database. For example {'login': 'root', 'db': 'mysql', 'host': 'localhost', 'pass': '9pJUv38sAqqW'} :return: root access to mysql database :rtype: dict :raises: NoDBAccessData )r���� db_accessr���r���r���rE���rE�������s��������!�!�#�#�#r���c������������������8�����t��������������������������������|�|������������S�)a��� Returs a list of pairs, the database user login - user login control panel For example: (('nata2_someuse', 'nata2'), ('testsome_dfrtbus', 'testsome')) :param list|tuple|None cplogin_lst: list of control panel users :param bool with_system_users: add system users to dbmapping :return: list of pairs, the database user login - user login control panel :rtype: tuple :raises: NotSupported, NoPackage )r����dblogin_cplogin_pairs)�cplogin_lst�with_system_userss��� r���rG���rG�������s��������-�-�k�;L�M�M�Mr����r5����package�mail�reseller�dnsTc������������������<�����t��������������������������������|�||�������������S�)a��� Retrieves info about panel user(s) :param str|unicode|list|tuple|None cpuser: user login :param keyls: list of data which is necessary to obtain the user, the valuescan be: cplogin - name/login user control panel mail - Email users reseller - name reseller/owner users locale - localization of the user account package - User name of the package dns - domain of the user :param bool search_sys_users: search for cpuser in sys_users or in control panel users (e.g. for Plesk) :return: returns a tuple of tuples of data in the same sequence as specified keys in keylst :rtype: tuple )�search_sys_users)r���r<���)�cpuserr6���rP���s��� r���r<���r<�������s ������"����v�u�?O��P�P�Pr���c������������������������t������������������������rt���������������������������������������������S� �t���������������������������������������������d���������S�#�t����������$�r�Y�dS�w�xY�w)z� Gets admin email Note: be careful when modifying this method. It is used in SSA, ask @dkavchuk or someone else from C-Projects team for details :rtype: string :return: string - admin email r�����)r���r����get_admin_email�get_admin_emails_list� IndexErrorr���r���r���rT���rT�������sb�������������+�+�-�-�-� ��5�5�7�7��:�:���� �� �� ��2�2� ���s����A�� A�Ac�������������������~�����d}�t������������������������r, �t���������������������������������������������S�#�t����������$�r�|�cY�S�w�xY�w|�S�)N�en)r���r����get_admin_localer���)�DEFAULT_LOCALEs��� r���rY���rY�������sY�������N�����"� "��0�0�2�2�2���� "�� "�� "�!�!�!�!� "�����s����+��:�:c������������������6�����t��������������������������������|�������������S�)z� Return document root for domain :param str|unicode domain: :rtype tuple :return Tuple: (document_root, owner) )r����docroot��domains��� r���r\���r\�������s�����������'�'�'r���c������������������8�����t��������������������������������|�|������������S��z� Return domain and document root pairs for control panel user first domain is main domain :param str|unicode cpuser: user login :rtype: list :return list of tuples (domain_name, documen_root) )r����useraliases)rQ���r^���s��� r���ra���ra�������s��������#�#�F�F�3�3�3r���c������������������6�����t��������������������������������|�������������S�r`���)r����userdomains)rQ���s��� r���rc���rc�������s��������#�#�F�+�+�+r���c�������������������4�����t����������������������������������������������S�)z� Detects and returns list of folders contained the home dirs of users of the cPanel :rtype: list :return: list of folders, which are parent of home dirs of users of the panel )r����homedirsr���r���r���re���re�����s�������� � �"�"�"r���c������������������z�����t������������������������rt�������������������������������|�������������S�t����������|�������������\��}}|S�)z� Return domain's owner :param domain: Domain/sub-domain/add-domain name :rtype: str :return: user name or None if domain not found )r���r����domain_ownerr\���)r^����_� _domain_owners��� r���rg���rg�����s<�����������1��(�(��0�0�0��v����A�}��r���c������������������6�����t��������������������������������|�������������S�)z� Return reseller users :param resellername: reseller name; return empty list if None :rtype list :return list[str]: user names list )r����reseller_users��resellernames��� r���rk���rk�����s��������&�&�|�4�4�4r���c������������������6�����t��������������������������������|�������������S�)z� Return reseller users and their main domains :param resellername: reseller name; autodetect name if None :rtype disct :return dict[str, str]: pairs user <==> domain )r����reseller_domainsrl���s��� r���ro���ro���&��s��������(�(��6�6�6r���c������������������6�����t��������������������������������|�������������S�)zM Check if user is reseller; :type username: str :rtype: bool )r����is_reseller��usernames��� r���rq���rq���0��s��������#�#�H�-�-�-r���c������������������6�����t��������������������������������|�������������S�)zP Get login url for current panel; :type domain: str :rtype: str )r����get_user_login_urlr]���s��� r���ru���ru���9��s��������*�*�6�2�2�2r���c������������������6�����t��������������������������������|�������������S�)z� Return True if username is in admin names :param str username: user to check :rtype bool :return: True if user is admin )r����is_adminrr���s��� r���rw���rw���B��s�������� � ��*�*�*r���c�������������������f�����t������������������������}� �|�t����������j�����������������S�#�t����������$�r�Y�dS�w�xY�w)z{ Return True if panel supports reseller limits (LVE10+) :return: bool - True - yes, False - no :rtype bool F)r���r����RESELLER_LIMITS�KeyError)�panel_featuress��� r����is_reseller_limits_supportedr|���L��sD�������/�0�0�N���g�5�6�6����������u�u����s����"�� 0�0c�������������������4�����t����������������������������������������������S�)z� Get dict reseller => id Optional method for panels without hard link reseller <=> system user :rtype: dict[str,int] - {'res1': id1} )r����get_reseller_id_pairsr���r���r���r~���r~���\��s��������-�-�/�/�/r���c�������������������4�����t����������������������������������������������S�)zY Retrive encoding name, used for package/reseller names, from panel :return: )r����get_encoding_namer���r���r���r����r����h��s������ ��)�)�+�+�+r����feature�returnc������������������v����� �t������������������������}|du�p|���������������������|�d������������S�#�t����������$�r�Y�dS�w�xY�w)z� Get if feature is supported by control panel. :param feature: constant from Feature class :return: boolean NF)�get_supported_cl_features�getr���)r�����featuress��� r����is_panel_feature_supportedr����p��sR�������,�.�.���4��?�8�<�<���#?�#?�?��"��������u�u����s����'*�� 8�8c�������������������4�����t����������������������������������������������S�)zL Retrieves Apache's connections number (from mod_status) For CM )r����get_apache_connections_numberr���r���r���r����r������s������ ��5�5�7�7�7r���c�������������������4�����t����������������������������������������������S�)z` Retrieves active httpd's ports from httpd's config :return: list of apache's ports )r����get_apache_ports_listr���r���r���r����r�������s������ ��-�-�/�/�/r���c�������������������4�����t����������������������������������������������S�)z� Get current maximum request apache workers from httpd's config :return: tuple (max_req_num, message) max_req_num - Maximum request apache workers number or 0 if error message - OK/Trace )r����get_apache_max_request_workersr���r���r���r����r�������s��������6�6�8�8�8r����uidc������������������6�����t��������������������������������|�������������S�)zT Get "main" panel username by uid. :param uid: uid :return Username )r����get_main_username_by_uid)r����s��� r���r����r�������s��������0�0��5�5�5r���c������������������8�����t��������������������������������|�|������������S��N)r����get_user_emails_list)rs���r^���s��� r���r����r�������s�������,�,�X�v�>�>�>r���c������������������6�����t��������������������������������|�������������S�r����)r����panel_login_linkrr���s��� r���r����r�������s�������(�(��2�2�2r���c������������������6�����t��������������������������������|�������������S�r����)r����panel_awp_linkrr���s��� r���r����r�������s�������&�&�x�0�0�0r���c�������������������8�����t����������������������������������������������pi�S�)zK Returns features that are not supported on current control panel. )r����get_unsupported_cl_featuresr���r���r����get_unsupported_featuresr�������s��������3�3�5�5�;��;r���c������������������������t������������������������S�)zd Left here mostly for backwards compatibility. See get_cl_feature_status_map docstring. )r���r���r���r���r����r�������s�������%�&�&�&r���c�������������������F�����t����������d�������������st������������������������rdS�dS�)NT)�skip_jwt_checkF)r���r���r���r���r����is_throttling_supportedr�������s*��������.�.�.���,�.�.����u��4r���c�������������������4�����t����������������������������������������������S�)zY Get panel users count, admin accounts are not counted :return: Users count. )r����get_hosting_accounts_countr���r���r���r����r�������s������ ��2�2�4�4�4r���c�������������������d�����t������������������������}�|�sdS�t���������������������������������������������}||�k����S�)zB Check if customer hitting max accounts count per edition F)r ���r���r����)�max_accounts_limit�current_accounts_counts��� r����is_hitting_max_accounts_limitr�������s;�������4�5�5������u�)�D�D�F�F��!�$6�6�6r���c������������������������t������������������������S�r����)r ���r���r���r����get_max_accounts_limitr�������s������%�'�'�'r���c������������������������� �t������������������������}�n"#�t����������$�r}t����������d������������|�d}~ww�xY�wt�������������������������t�����������fd�|�D���������������������������S�)z| Retrieve users count and admins count, substract the last value from the first one and dump the result on disk zcpusers() method not supportedNc��������������3����$����K����|�] }|�v�d�V����dS�)r���Nr���)r8����user�admins_collections��� �r���� <genexpr>z)count_hosting_accounts.<locals>.<genexpr>���s.�����������I�I�T�4�7H�+H�+H�q�+H�+H�+H�+H�I�Ir���)r;���r���rC����sum)� users_list�er����s��� @r����count_hosting_accountsr�������sw������� D��Y�Y� � ����D��D��D��;�<�<�!�C�����D����������I�I�I�I�Z�I�I�I�I�I�Is������ 1�,�1c������������������������d}�t�����������j�����������������������������|�������������sdS� �t����������j��������d������������dk����S�#�t����������$�r�Y�dS�w�xY�w)z@ They have symlink /usr/local/cpanel/server.type -> wp2 z/usr/local/cpanel/server.typeF�wp2)r'���r+����islink�readlink� Exception)� wp2_markers��� r����is_wp2_environmentr�������sa�������1�J� �7�>�>�*�%�%����u���{�:�;�;�u�D�D����������u�u����s����=�� A� A)F)NF)NrJ���Tr����)\�__doc__r'���� functoolsr����constr���r����clcommon.featuresr���r���r ���� pluginlibr ���r���r���r ���r���r���r���r���r����cpapiexceptionsr���r����clcommon.lib.cleditionr���r���r���r���r*���r���r ���r$���r)���r3���r;���rA���rC���rE���rG���r<���rT���rY���r\���ra���rc���re���rg���rk���ro���rq���ru���rw���r|���r~���r�����boolr����r����r����r�����int�strr����r����r����r����r����r����r����r����r����r����r����r����� _apiplugin�PanelPluginr����CP_NAME�get_domains_php_info�get_system_php_info�list_all� list_users�get_reseller_users�reseller_package_by_uid�get_uids_list_by_package�get_installed_php_versions�get_customer_login�get_domain_login� get_server_ip�invalidate_cpapi_cache�suspended_users_listr���r���r����<module>r�������s��������� � � � ��������������0��0��0��0��0��0��0��0�������������������� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��7��6��6��6��6��6��6��6���������������������.�-�/�/����/������2��2��2��2� -�� -�� -�� -������4-��-��-������$��$��$�!��!��!�$��$��$�N��N��N��N��P� �Q��Q��Q��Q�(�����$�����(��(��(� 4�� 4�� 4�,��,��,�#��#��#� �� �� �5��5��5�7��7��7��7�.��.��.�3��3��3�+��+��+� �� �� � 0��0��0�,��,��,�����D���������8��8��8�0��0��0�9��9��9�6�#��6�#��6��6��6��6�?��?��?�3��3��3�1��1��1�<��<��<������'��'�� ��'������5�C��5��5��5��5� 7�� 7�� 7�(��(��(� J�� J�� J��D����������"� !�/� 2� 2� ��%�%�'�'�� �)�+�+���$�8���"�6���� �� � $� �!�4���&�>���'�@���)�D���!�4����0����*� �%�<���#�8������r���