Edit File: webshield.cpython-311.pyc
� �gh� � � � d Z ddlmZmZmZ ddlmZ ddlmZ ddl m Z ddlmZm Z ddlmZ dd lmZ dd lmZmZ deded edee fd�Zdededeeef dee d edee fd�Zdedee dee fd�ZdS )z!Webshield related iptables rules.� )�AbstractSet�Iterator�Mapping)�firewall)� FirewallRules)� webshield)�get_module_based_ports�Mode)� IPVersion� )�redirect_port_rules)�FirewallRule�WebshieldRuleBuilder� ipset_name� ip_version� gray_rules�returnc # �< K � t j � � }t j |� � r8t j � � }t j |� � t |� � z }nt � � }d� |D � � }t | ||||� � E d{V �� t j |� � sMt j |� � r|� | � � E d{V �� n|� | � � E d{V �� dS t j |� � rJ|� | � � E d{V �� t | ||t j t j � � E d{V �� dS t | ||t j t j � � E d{V �� |� | � � E d{V �� dS )z�Yield iptables *ip_version* rules for *ipset_name* using *gray_rules* builder. This is intended for ipsets that require webshield to implement their behavior e.g., to show captcha, splashscreen to the ips from the ipset c � � i | ]}||��S � r )�.0�ports �Y/opt/imunify360/venv/lib/python3.11/site-packages/im360/internals/core/rules/webshield.py� <dictcomp>zrules.<locals>.<dictcomp>$ s � �:�:�:�t��d�:�:�:� N)� WebshieldMode�get�wants_redirectr �port_redirect_map�redirected_to_webshield_ports�setr �_redirect_rulesr �is_nat_available�logdrop_chain_rules�drop_tproxy_rulesr r �NAT�redirect_to_captcha�MANGLE�redirect_to_captcha_via_tproxy)r r r �current_mode�redirect_map� dest_portss r �rulesr- s3 � � � � !�$�&�&�L��#�L�1�1� ;� �2�4�4���<�� � ������ � � ,�-�-� �:�:�z�:�:�:����J��j�*�� � � � � � � � � �'��5�5� ��$�Z�0�0� @�!�5�5�j�A�A�A�A�A�A�A�A�A�A�!�3�3�J�?�?�?�?�?�?�?�?�?���� ��,�,� <��1�1�*�=�=�=�=�=�=�=�=�=�&�������-� � � � � � � � � � � � '����� ��8� � � � � � � � � � �/�/� �;�;�;�;�;�;�;�;�;�;�;r r+ r, c # �8 �K � t j � � }t j |� � r�t | t �fd�|D � � � � � � E d{V �� |� |� � E d{V �� |� �|� � E d{V �� |� |� � E d{V �� |t j k rt � � }nt � � }t t j | t �fd�|D � � � � |z � � �� � V � dS )z&Yield rules for to-be-redirected portsc 3 �( �K � | ]}�| V � � d S �Nr �r �pr+ s �r � <genexpr>z"_redirect_rules.<locals>.<genexpr>W s'