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: # сохраняем в файл