File manager - Edit - /opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/wordpress/__pycache__/plugin.cpython-311.opt-1.pyc
Back
� ַ9jF � � � d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm Z m Z d dlmZ d dl mZ d dlmZ d dlmZ d dlmZmZmZmZmZ d d lmZmZ d d lmZ d dlm Z d dl!m"Z"m#Z#m$Z$m%Z% d d lm&Z& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d dlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZO d dlPmQZQ ejR eS� � ZTed� � � ZUdZV e jW � � ZXdaYdZZdZ[de\fd�Z]de\fd�Z^de\fd�Z_de`fd�Zad e`de\fd!�Zbd e`de\fd"�Zcd e`de\fd#�Zd ed$� � Zed e`d%efd&�Zfd'edegdz fd(�Zhd)� Zid*egd+ejj degfd,�Zkd+ejj d%efd-�Zld.e jm fd/�Zndnd1eofd2�Zpd3� Zqd4� Zrd5� Zsde`fd6�Ztd7� Zud8e.fd9�Zvd8e.dewfd:�Zxd;� Zyd<� Zz dod=e{e. fd>�Z|d?eoe. fd@�Z}d8e.dAe`dBegddfdC�Z~d8e.dDegfdE�Zd8e.dFegddfdG�Z�d?eoe. dewfdH�Z�d8e.d+ejj dIe`dJe{dKe{ddfdL�Z� dpd?eoe. dMe e.ejj e{e{ge d f dNe`dOe`dPe\ddfdQ�Z�dodIe`ddfdR�Z�d'edSe\ddfdT�Z� e jW � � Z�da�dqdU�Z�dqdV�Z�dWe`ddfdX�Z�d?eoe. ddfdY�Z�d e`ddfdZ�Z�d e`ddfd[�Z�dqd\�Z�dqd]�Z�d^e`d_e�de`fd`�Z�d8e.d+ejj d_e�dJe{dKe{ddfda�Z� drdbeoe` dz ddfdc�Z�dodd�Z�de� Z�d8e.de\fdf�Z�d8e.dgewde\fdh�Z�di� Z� G dj� dk� � Z� G dl� dme�� � Z�dS )s� N)�defaultdict)� Awaitable�Callable)�LooseVersion)�cache)�Path)� inactivity)�MalwareScanScheduleInterval�SystemConfig�ANTIVIRUS_MODE�UserType�choose_value_from_config)�Index�WP_RULES)�log_message)�importer)�open_dir_no_symlinks� open_nofollow� rmtree_fd�safe_dir)� Wordpress)� hosting_panel)�get_wp_rules_data�get_wp_ruleset_version)� WordpressSite�WPSite)�WPDisabledRule)�cli� telemetry)�PLUGIN_VERSION_FILE)�_validate_preset�calculate_next_scan_timestamp�$clear_get_cagefs_enabled_users_cache�ensure_site_data_directory�format_php_with_embedded_json�get_imunify_package_versions� get_last_scan�get_malware_history�prepare_plugin_config�prepare_scan_data�!write_plugin_data_file_atomically) �clear_manually_deleted_flag�delete_site�get_installed_sites_by_domains�get_outdated_sites�get_sites_for_user�get_sites_to_adopt�get_sites_to_install�%get_sites_to_mark_as_manually_deleted�get_installed_sites�insert_installed_sites�mark_site_as_manually_deleted�update_site_identity�update_site_version)�setup_site_authenticationc �0 � t j ddd �� � S )Nz(imav.malwarelib.plugins.schedule_watcher�get_user_schedule_config)�module�name�default)r �get� � �U/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/wordpress/plugin.py�_get_user_schedule_config_imavrC K s$ � ��<�9� '��� � � rA TF�balanced�returnc �d � t t j � � S # t $ r t cY S w xY w�N)�boolr �WAF_ENABLED�KeyError�_LEGACY_WAF_FALLBACKr@ rA rB �_get_global_waf_enabledrL c �? � �$��I�)�*�*�*��� $� $� $�#�#�#�#�$���� � �/�/c �d � t t j � � S # t $ r t cY S w xY wrG )rH r �WAF_DEFAULTrJ rK r@ rA rB �_get_waf_defaultrQ j rM rN c �d � t t j � � S # t $ r t cY S w xY w)uS Read WORDPRESS.ai_bot_protection from config, defaulting to False. Returns _AI_BOT_PROTECTION_DEFAULT when the config key is missing — e.g. the ai_bot_protection field hasn't rolled out to this install's imunify360 yet, or a sibling package is still on an older schema. Keeps the feature off in all ambiguous cases. )rH r �AI_BOT_PROTECTIONrJ �_AI_BOT_PROTECTION_DEFAULTr@ rA rB �_get_global_ai_bot_protectionrU q s? � �*��I�/�0�0�0��� *� *� *�)�)�)�)�*���rN c �j � t j } n# t $ r t cY S w xY wt | � � S )u� Read WORDPRESS.ai_bot_protection_preset from config, defaulting to "balanced". Two layers of safety: KeyError on a missing key (older schema, agent upgrade in progress) and _validate_preset() on the value itself (hand-edited override file, future preset rolled in via a sibling package this version doesn't recognise). Both fall back to the same canonical default so all layers — schema, agent, plugin — agree. )r �AI_BOT_PROTECTION_PRESETrJ �!_AI_BOT_PROTECTION_PRESET_DEFAULTr! )�raws rB �$_get_global_ai_bot_protection_presetrZ sF � �1��0����� 1� 1� 1�0�0�0�0�1�����C� � � s � �#�#�usernamec �� � t � � sdS t dd| �� � \ }}n# t $ r t � � cY S w xY w|t j k rt � � S t |� � S )NF� WORDPRESS�waf_enabled�r[ )rL r rJ rQ r �ROOTrH )r[ �value�sources rB �_is_waf_enabled_for_user_syncrc � s� � �"�$�$� ��u�"�0���� � � � ��v�v�� � "� "� "��!�!�!�!�!�"���� ������!�!�!���;�;�s �( �A�Ac � �p K � t j � � }|� dt | � � � d{V ��S )u3 Async wrapper — runs config file I/O in executor.N)�asyncio�get_running_loop�run_in_executorrc )r[ �loops rB �is_waf_enabled_for_userri � sR � � � ��#�%�%�D��%�%��+�X�� � � � � � � � rA c �r � t dd| �� � \ }}n# t $ r Y dS w xY w|t j k S )Nr] r^ r_ F)r rJ r r` )r[ �_rb s rB �$_user_has_explicit_waf_override_syncrl � sY � ��,���� � � � ��6�6�� � � � ��u�u������X�]�"�"s � � &�&zD/var/lib/cloudlinux-app-version-detector/components_versions.sqlite3�admin_configc � � t � � }|�*t � d� � t j dddfS || |� � S )z� Get user-specific schedule configuration with lazy import fallback. Returns default values if imav.malwarelib is not available. Nz@imav.malwarelib not available, returning default schedule configr � )rC �logger�debug�Interval�NONE)r[ rm r; s rB �_get_user_schedule_configrt � sU � � >�?�?���'����N� � � � �}�a��A�%�%�#�#�H�l�;�;�;rA �indexc � �� t | � � }|�dS t r|� � � D ] \ }}d|d<