mirror of
https://github.com/Ground-Zerro/DomainMapper.git
synced 2025-12-10 01:47:18 +07:00
Update convert.py
This commit is contained in:
@@ -94,7 +94,7 @@ def mk_list_name_input(mk_list_name):
|
|||||||
|
|
||||||
|
|
||||||
# Уплотняем имена сервисов
|
# Уплотняем имена сервисов
|
||||||
def mk_comment(selected_service):
|
def comment(selected_service):
|
||||||
return ",".join(["".join(word.title() for word in s.split()) for s in selected_service])
|
return ",".join(["".join(word.title() for word in s.split()) for s in selected_service])
|
||||||
|
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ def subnet_input(subnet):
|
|||||||
# Агрегация маршрутов
|
# Агрегация маршрутов
|
||||||
def group_ips_in_subnets(filename, subnet):
|
def group_ips_in_subnets(filename, subnet):
|
||||||
try:
|
try:
|
||||||
with open(filename, 'r', encoding='utf-8-sig') as file:
|
with open(filename, 'r', encoding='utf-8') as file:
|
||||||
ips = {line.strip() for line in file if line.strip()} # Собираем уникальные IP адреса
|
ips = {line.strip() for line in file if line.strip()} # Собираем уникальные IP адреса
|
||||||
|
|
||||||
subnets = set()
|
subnets = set()
|
||||||
@@ -156,7 +156,7 @@ def group_ips_in_subnets(filename, subnet):
|
|||||||
subnets.update(network_24) # Базовые IP для /24 подсетей
|
subnets.update(network_24) # Базовые IP для /24 подсетей
|
||||||
print(f"{Style.BRIGHT}IP-адреса агрегированы до масок /24 и /32{Style.RESET_ALL}")
|
print(f"{Style.BRIGHT}IP-адреса агрегированы до масок /24 и /32{Style.RESET_ALL}")
|
||||||
|
|
||||||
with open(filename, 'w', encoding='utf-8-sig') as file:
|
with open(filename, 'w', encoding='utf-8') as file:
|
||||||
for subnet in sorted(subnets):
|
for subnet in sorted(subnets):
|
||||||
file.write(subnet + '\n')
|
file.write(subnet + '\n')
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ def group_ips_in_subnets(filename, subnet):
|
|||||||
def process_file_format(filename, filetype, gateway, selected_service, mk_list_name, subnet, ken_gateway):
|
def process_file_format(filename, filetype, gateway, selected_service, mk_list_name, subnet, ken_gateway):
|
||||||
def read_file(filename):
|
def read_file(filename):
|
||||||
try:
|
try:
|
||||||
with open(filename, 'r', encoding='utf-8-sig') as file:
|
with open(filename, 'r', encoding='utf-8') as file:
|
||||||
return file.readlines()
|
return file.readlines()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Ошибка чтения файла: {e}")
|
print(f"Ошибка чтения файла: {e}")
|
||||||
@@ -176,7 +176,7 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n
|
|||||||
|
|
||||||
def write_file(filename, ips, formatter):
|
def write_file(filename, ips, formatter):
|
||||||
formatted_ips = [formatter(ip.strip()) for ip in ips]
|
formatted_ips = [formatter(ip.strip()) for ip in ips]
|
||||||
with open(filename, 'w', encoding='utf-8-sig') as file:
|
with open(filename, 'w', encoding='utf-8') as file:
|
||||||
if filetype.lower() == 'wireguard':
|
if filetype.lower() == 'wireguard':
|
||||||
file.write(', '.join(formatted_ips))
|
file.write(', '.join(formatted_ips))
|
||||||
else:
|
else:
|
||||||
@@ -190,9 +190,9 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n
|
|||||||
{yellow('В каком формате сохранить файл?')}
|
{yellow('В каком формате сохранить файл?')}
|
||||||
{green('win')} - route add {cyan('IP')} mask {net_mask} {cyan('GATEWAY')}
|
{green('win')} - route add {cyan('IP')} mask {net_mask} {cyan('GATEWAY')}
|
||||||
{green('unix')} - ip route {cyan('IP')}/{subnet} {cyan('GATEWAY')}
|
{green('unix')} - ip route {cyan('IP')}/{subnet} {cyan('GATEWAY')}
|
||||||
{green('keenetic')} - ip route {cyan('IP')}/{subnet} {cyan('GATEWAY GATEWAY_NAME')} auto !{mk_comment(selected_service)}
|
{green('keenetic')} - ip route {cyan('IP')}/{subnet} {cyan('GATEWAY GATEWAY_NAME')} auto !{comment(selected_service)}
|
||||||
{green('cidr')} - {cyan('IP')}/{subnet}
|
{green('cidr')} - {cyan('IP')}/{subnet}
|
||||||
{green('mikrotik')} - /ip/firewall/address-list add list={cyan("LIST_NAME")} comment="{mk_comment(selected_service)}" address={cyan("IP")}/{subnet}
|
{green('mikrotik')} - /ip/firewall/address-list add list={cyan("LIST_NAME")} comment="{comment(selected_service)}" address={cyan("IP")}/{subnet}
|
||||||
{green('ovpn')} - push "route {cyan('IP')} {net_mask}"
|
{green('ovpn')} - push "route {cyan('IP')} {net_mask}"
|
||||||
{green('wireguard')} - {cyan('IP')}/{subnet}, {cyan('IP')}/{subnet}, и т.д...
|
{green('wireguard')} - {cyan('IP')}/{subnet}, {cyan('IP')}/{subnet}, и т.д...
|
||||||
{green('Enter')} - {cyan('IP')}
|
{green('Enter')} - {cyan('IP')}
|
||||||
@@ -214,11 +214,11 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n
|
|||||||
formatters = {
|
formatters = {
|
||||||
'win': lambda ip: f"route add {ip} mask {net_mask} {gateway}",
|
'win': lambda ip: f"route add {ip} mask {net_mask} {gateway}",
|
||||||
'unix': lambda ip: f"ip route {ip}/{subnet} {gateway}",
|
'unix': lambda ip: f"ip route {ip}/{subnet} {gateway}",
|
||||||
'keenetic': lambda ip: f"ip route {ip}/{subnet} {ken_gateway} auto !{mk_comment(selected_service)}",
|
'keenetic': lambda ip: f"ip route {ip}/{subnet} {ken_gateway} auto !{comment(selected_service)}",
|
||||||
'cidr': lambda ip: f"{ip}/{subnet}",
|
'cidr': lambda ip: f"{ip}/{subnet}",
|
||||||
'ovpn': lambda ip: f'push "route {ip} {net_mask}"',
|
'ovpn': lambda ip: f'push "route {ip} {net_mask}"',
|
||||||
'mikrotik': lambda
|
'mikrotik': lambda
|
||||||
ip: f'/ip/firewall/address-list add list={mk_list_name} comment="{mk_comment(selected_service)}" address={ip}/{subnet}',
|
ip: f'/ip/firewall/address-list add list={mk_list_name} comment="{comment(selected_service)}" address={ip}/{subnet}',
|
||||||
'wireguard': lambda ip: f"{ip}/{subnet}"
|
'wireguard': lambda ip: f"{ip}/{subnet}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,11 +236,10 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n
|
|||||||
formatters.update({
|
formatters.update({
|
||||||
'win': lambda ip: f"route add {mix_formatter(ip)} {gateway}",
|
'win': lambda ip: f"route add {mix_formatter(ip)} {gateway}",
|
||||||
'unix': lambda ip: f"ip route {mix_formatter(ip)} {gateway}",
|
'unix': lambda ip: f"ip route {mix_formatter(ip)} {gateway}",
|
||||||
'keenetic': lambda ip: f"ip route {mix_formatter(ip)} {ken_gateway} auto !{mk_comment(selected_service)}",
|
'keenetic': lambda ip: f"ip route {mix_formatter(ip)} {ken_gateway} auto !{comment(selected_service)}",
|
||||||
'cidr': lambda ip: f"{mix_formatter(ip)}",
|
'cidr': lambda ip: f"{mix_formatter(ip)}",
|
||||||
'ovpn': lambda ip: f'push "route {mix_formatter(ip)}"',
|
'ovpn': lambda ip: f'push "route {mix_formatter(ip)}"',
|
||||||
'mikrotik': lambda
|
'mikrotik': lambda ip: f'/ip/firewall/address-list add list={mk_list_name} comment="{comment(selected_service)}" address={mix_formatter(ip)}',
|
||||||
ip: f'/ip/firewall/address-list add list={mk_list_name} comment="{mk_comment(selected_service)}" address={mix_formatter(ip)}',
|
|
||||||
'wireguard': lambda ip: f"{mix_formatter(ip)}"
|
'wireguard': lambda ip: f"{mix_formatter(ip)}"
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -256,7 +255,7 @@ async def main():
|
|||||||
subnet = None
|
subnet = None
|
||||||
filetype = None
|
filetype = None
|
||||||
gateway = None
|
gateway = None
|
||||||
selected_services = ["service1", "service2"] # Пример данных
|
selected_services = ["Service"]
|
||||||
mk_list_name = None
|
mk_list_name = None
|
||||||
ken_gateway = None
|
ken_gateway = None
|
||||||
|
|
||||||
@@ -284,7 +283,7 @@ async def main():
|
|||||||
# Удаляем IP-адреса Cloudflare
|
# Удаляем IP-адреса Cloudflare
|
||||||
ips -= cloudflare_ips
|
ips -= cloudflare_ips
|
||||||
|
|
||||||
with open(filename, 'w', encoding='utf-8-sig') as file:
|
with open(filename, 'w', encoding='utf-8') as file:
|
||||||
for ip in sorted(ips):
|
for ip in sorted(ips):
|
||||||
file.write(ip + '\n')
|
file.write(ip + '\n')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user