Edit File: sync.cpython-311.opt-1.pyc
� �ghDV � �L � d Z ddlZddlZddlZddlZddlmZmZ ddlm Z ddl mZmZm Z mZmZmZmZmZ ddlmZ ddlmZmZ ddlmZmZmZ dd lmZmZ dd l m!Z! ddl"m#Z#m$Z$m%Z%m&Z& ddl'm(Z( dd l)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 e e1� � Z2g d�Z3 ed� � Z4 ed� � Z5 G d� dee�� � Z6 G d� de6� � Z7 G d� de6� � Z8 G d� de6� � Z9 G d� de6� � Z: G d� de.� � Z; G d � d!e� � Z< G d"� d#e� � Z=d$e>fd%�Z?d$e>fd&�Z@dS )'z�Define ipsets/iptables rules for DEF-16003 synclists. i.e. for ip network blocks/unblocks received from /api/sync/v1/iplist correlation server endpoint. The expected behavior (requirements) is defined in src/handbook/message_processing/server_sync.py � N)�ABCMeta�abstractmethod)� getLogger)�AbstractSet�Dict� FrozenSet�Iterable�Iterator�List�Set�TypeVar)� Webshield)� FirewallRules�rules)�IPSetAtomicRestoreBase�IPSetCollectionResetMixin�libipset)�IPSetCmdBuilder�IPSetRestoreCmd)�FirewallRule)�IPListID� IPListPurpose�IPListRecord�Purpose)� webshield)�IP� IPVersion� )� IP_SET_PREFIX� AbstractIPSet� IPSetCount�get_ipset_family)�IPSetSyncCaptcha� IPSetSyncDrop�IPSetSyncIPListPurpose�IPSetSyncSplashscreen�IPSetSyncWhite�Args�Tc �0 � e Zd ZdZdZeedefd�� � � � Zde de e fd�Zede de dee fd�� � Zdde defd �Zde de fd �Zde defd�Zde dee fd�Zde dee fd �Zde dee fd�Zde dee fd�ZdS )� IPSetSyncz�Abstract class responsible for iptables rules for *sync ipsets. It mimics .ip.BaseIPSet just enough for .ip.IPSet.get_rules() to work. N�returnc � � t ��N��NotImplementedError��selfs �T/opt/imunify360/venv/lib/python3.11/site-packages/im360/internals/core/ipset/sync.py�purposezIPSetSync.purposeC s � � "�!� � ip_versionc � � | � |� � }t t j | � ||�� � � � S )z%To be called by .ip.IPSet.get_rules()�r6 )�gen_ipset_name_for_ip_version�map�dataclasses�asdict�_rules�r2 r6 � ipset_names r3 �create_ruleszIPSetSync.create_rulesH s? � ��7�7� �C�C� �������J�:�� N� N� � � r5 r? c � � t �r. r/ �r2 r? r6 s r3 r= zIPSetSync._rulesO s � � "�!r5 c � � dS )z.Whether it makes sense to call *create_rules*.T� �r2 r6 s r3 � is_enabledzIPSetSync.is_enabledU s � ��tr5 c �: � | j pt � d|� d| j � d�S )N�.z.sync)�custom_ipset_namer r4 rE s r3 r9 z'IPSetSync.gen_ipset_name_for_ip_versionY s1 � ��"� C��B�B�*�B�B�t�|�B�B�B� r5 c � � K � dS )z.ip.BaseIPSet method.r rD rE s r3 �get_db_countzIPSetSync.get_db_count_ s � � � � �qr5 c �� � t ddt t � |� � � � z � � }| � |� � }t j ||�� � gS )N� � )�size)�max�len�IPSetSyncIPListRecords� all_ipsetsr9 r �get_create_list_set_cmd)r2 r6 rO �names r3 �gen_ipset_create_opszIPSetSync.gen_ipset_create_opsd sY � ��2�q�3�5�@�@��L�L�M�M�M�N�N���1�1�*�=�=���7��4�H�H�H�I�Ir5 c �V � | � |� � }t j |� � gS r. )r9 r �get_destroy_cmdr>