From 600b4eeefe1e3f07b320350f3baf5c8fbef362b4 Mon Sep 17 00:00:00 2001 From: "a.chernenko" Date: Thu, 20 Nov 2025 17:27:13 +1000 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=20=D1=84?= =?UTF-8?q?=D0=BB=D0=B0=D0=B3=20=D1=81=D0=B6=D0=B0=D1=82=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8:=20compress=20=D0=BC=D0=BE=D0=B6=D0=B5=D1=82?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=BD=D0=B5=D0=BC=D0=B0=D1=82=D1=8C=20Tru?= =?UTF-8?q?e/False.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- download.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/download.py b/download.py index 79dbce4..9851bc2 100755 --- a/download.py +++ b/download.py @@ -87,7 +87,7 @@ def get_dict_groups(input:dict): return { bit_to_names[mask]: [ groups_communities[mask], set(groups[mask]) ] for mask in groups if "__" in bit_to_names[mask] } # метод получения списка ip адресов -def list_ip(c_dict: dict = []): +def list_ip(c_dict: dict = [], compress: bool = True): """ Метод получения списка ip адресов возвращает кортеж из 2-х списков: ipv4 и ipv6 @@ -127,8 +127,11 @@ def list_ip(c_dict: dict = []): # пополняем словарь ipv6_list ipv6_list.update(ipv6_find(str(c_list['static6']),ipv6)) + # если ключ не сжимать + if ipv4_list and not compress: + ipv4_list:str="\n".join([f"route {k} blackhole;" for k, v in ipv4_list.items() if isinstance(v, list)]) # сжимаем подсети ipv4 - if ipv4_list: + elif ipv4_list and compress: # строим дерево Root = net_tree.Node(net_tree.Net(0,0), 0) # пробегаем в цикле @@ -145,8 +148,11 @@ def list_ip(c_dict: dict = []): else: ipv4_list:bool=False + # если ключ не сжимать + if ipv6_list and not compress: + ipv6_list:str="\n".join([f"route {k} blackhole;" for k, v in ipv6_list.items() if isinstance(v, list)]) # сжимаем подсети ipv6 - if ipv6_list: + if ipv6_list and compress: None else: ipv6_list:bool=False @@ -225,7 +231,7 @@ if __name__ == "__main__": ipv6_count_old = sum(1 for line in open(ipv6_out_file)) if os.path.isfile(ipv6_out_file) else 0 # выполняем выгрузку print(f"Выгружаю список IP: {clist}") - ipv4_list, ipv6_list=list_ip(ip_list[clist]['list']) + ipv4_list, ipv6_list=list_ip(ip_list[clist]['list'],ip_list[clist].get('compress', True)) # сохраняем ipv4 if ipv4_list and len(ipv4_list.splitlines()) >= ipv4_count_old * 0.5: # сохраняем в файл