Исправлена ошибка в сворочивание сетей с маский /32, /128 для ipv4, ipv6 соответственно.
This commit is contained in:
59
download.py
59
download.py
@@ -123,7 +123,7 @@ def list_ip(c_list: list = []):
|
||||
|
||||
# пробегаем словарь выгрузки
|
||||
for c_dict in c_list:
|
||||
# если есть источник ссылка
|
||||
# # если есть источник ссылка
|
||||
if 'url' in list(c_dict):
|
||||
# бежим весь список ссылок пока не код 200
|
||||
for c_url in c_dict['url']:
|
||||
@@ -150,48 +150,37 @@ def list_ip(c_list: list = []):
|
||||
# пополняем словарь ipv6_list
|
||||
ipv6_list.update(ipv6_find(str(c_dict['static6']),ipv6))
|
||||
|
||||
# если ключ не сжимать
|
||||
if ipv4_list and not compress:
|
||||
ipv4_list:str="".join([f"route {k} blackhole;\n" for k, v in ipv4_list.items() if isinstance(v, list)])
|
||||
# сжимаем подсети ipv4
|
||||
elif ipv4_list and compress:
|
||||
# строим дерево
|
||||
Root = net_tree.Node(net_tree.Net(0, 0), 0)
|
||||
# пробегаем в цикле
|
||||
for c in ipv4_list.values():
|
||||
# добавляем запись в дерево
|
||||
Root.addSubnet(net_tree.Node(net_tree.Net(c[0], c[1]), 1))
|
||||
Root.finishTreeFirst()
|
||||
# жесткое сжатие в размер 30000 записей
|
||||
#Root.collapseRoot(Root.real_ip_records_count - 30000)
|
||||
# более мягкое сжатие
|
||||
Root.collapse(1,Root.real_ip_records_count)
|
||||
# возвращаем результат
|
||||
ipv4_list:str=Root.returnCollapsedTree('route {addr}/{masklen} blackhole;')
|
||||
if ipv4_list:
|
||||
# создаем дерево
|
||||
Root = net_tree.Node(net_tree.Net(0, 0, 4))
|
||||
# добавляем IPv4 подсети
|
||||
for ip_int, mask in sorted(ipv4_list.values(), key=lambda x: x[0]):
|
||||
Root.insert(net_tree.Net(ip_int, mask, 4))
|
||||
# считаем статистику
|
||||
Root.finalize()
|
||||
# сжатие по CIDR, если ключ сжимать
|
||||
if compress: Root.collapse()
|
||||
# получаем результат
|
||||
ipv4_list = Root.export('route {addr}/{masklen} blackhole;')
|
||||
else:
|
||||
ipv4_list:bool=False
|
||||
|
||||
# если ключ не сжимать
|
||||
if ipv6_list and not compress:
|
||||
ipv6_list:str="".join([f"route {k} blackhole;\n" for k, v in ipv6_list.items() if isinstance(v, list)])
|
||||
# сжимаем подсети ipv6
|
||||
elif ipv6_list and compress:
|
||||
if ipv6_list:
|
||||
# строим дерево
|
||||
Root = net_tree.Node(net_tree.Net(1 << 127, 0), 0)
|
||||
# пробегаем в цикле
|
||||
for c in ipv6_list.values():
|
||||
# добавляем запись в дерево
|
||||
Root.addSubnet(net_tree.Node(net_tree.Net(c[0], c[1]), 1))
|
||||
Root.finishTreeFirst()
|
||||
# жесткое сжатие в размер 30000 записей
|
||||
#Root.collapseRoot(Root.real_ip_records_count - 30000)
|
||||
# более мягкое сжатие
|
||||
Root.collapse(1,Root.real_ip_records_count)
|
||||
# возвращаем результат
|
||||
ipv6_list:str=Root.returnCollapsedTree('route {addr}/{masklen} blackhole;')
|
||||
Root = net_tree.Node(net_tree.Net(1 << 127, 0, 6))
|
||||
# добавляем IPv4 подсети
|
||||
for ip_int, mask in sorted(ipv6_list.values(), key=lambda x: x[0]):
|
||||
Root.insert(net_tree.Net(ip_int, mask, 6))
|
||||
# считаем статистику
|
||||
Root.finalize()
|
||||
# сжатие по CIDR, если ключ сжимать
|
||||
if compress: Root.collapse()
|
||||
# получаем результат
|
||||
ipv6_list = Root.export('route {addr}/{masklen} blackhole;')
|
||||
else:
|
||||
ipv6_list:bool=False
|
||||
|
||||
# возвращаем 2 списка маршрутов
|
||||
return ipv4_list, ipv6_list
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user