add mikrotik comment="" option

This commit is contained in:
Ground-Zerro
2024-11-10 10:53:02 +11:00
parent ebc21747a6
commit 00f72e5690
2 changed files with 20 additions and 14 deletions

27
main.py
View File

@@ -60,6 +60,7 @@ def read_config(cfg_file):
ken_gateway = config.get('keenetic') or ''
localplatform = config.get('localplatform') or ''
localdns = config.get('localdns') or ''
mk_comment = config.get('mk_comment') or ''
if cfginfo in ['yes', 'y']:
print(f"{yellow(f'Загружена конфигурация из {cfg_file}:')}")
@@ -94,7 +95,7 @@ def read_config(cfg_file):
print(
f"{Style.BRIGHT}Список DNS серверов будет загружен из:{Style.RESET_ALL} {'файла dnsdb' if localdns in ['yes', 'y'] else 'сети'}")
return service, request_limit, filename, cloudflare, filetype, gateway, run_command, dns_server_indices, mk_list_name, subnet, ken_gateway, localplatform, localdns
return service, request_limit, filename, cloudflare, filetype, gateway, run_command, dns_server_indices, mk_list_name, subnet, ken_gateway, localplatform, localdns, mk_comment
except Exception as e:
print(
@@ -394,7 +395,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])
@@ -465,7 +466,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, mk_comment, subnet, ken_gateway):
def read_file(filename):
try:
with open(filename, 'r', encoding='utf-8') as file:
@@ -490,9 +491,9 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n
{yellow('В каком формате сохранить файл?')}
{green('win')} - route add {cyan('IP')} mask {net_mask} {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('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")}{f' comment="{comment(selected_service)}"' if mk_comment != "off" else ""} address={cyan("IP")}/{subnet}
{green('ovpn')} - push "route {cyan('IP')} {net_mask}"
{green('wireguard')} - {cyan('IP')}/{subnet}, {cyan('IP')}/{subnet}, и т.д...
{green('Enter')} - {cyan('IP')}
@@ -514,11 +515,10 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n
formatters = {
'win': lambda ip: f"route add {ip} mask {net_mask} {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}",
'ovpn': lambda ip: f'push "route {ip} {net_mask}"',
'mikrotik': lambda
ip: f'/ip/firewall/address-list add list={mk_list_name} comment="{mk_comment(selected_service)}" address={ip}/{subnet}',
'mikrotik': lambda ip: f'/ip/firewall/address-list add list={mk_list_name}{f' comment="{comment(selected_service)}"' if mk_comment != "off" else ""} address={ip}/{subnet}',
'wireguard': lambda ip: f"{ip}/{subnet}"
}
@@ -536,11 +536,10 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n
formatters.update({
'win': lambda ip: f"route add {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)}",
'ovpn': lambda ip: f'push "route {mix_formatter(ip)}"',
'mikrotik': lambda
ip: f'/ip/firewall/address-list add list={mk_list_name} comment="{mk_comment(selected_service)}" address={mix_formatter(ip)}',
'mikrotik': lambda ip: f'/ip/firewall/address-list add list={mk_list_name}{f' comment="{comment(selected_service)}"' if mk_comment != "off" else ""} address={mix_formatter(ip)}',
'wireguard': lambda ip: f"{mix_formatter(ip)}"
})
@@ -563,8 +562,8 @@ async def main():
# Инициализация настроек из переданного конфигурационного файла
config_file = args.config
service, request_limit, filename, cloudflare, filetype, gateway, run_command, dns_server_indices, mk_list_name, subnet, ken_gateway, localplatform, localdns = read_config(
config_file)
(service, request_limit, filename, cloudflare, filetype, gateway, run_command, dns_server_indices, mk_list_name,
subnet, ken_gateway, localplatform, localdns, mk_comment) = read_config(config_file)
# Загрузка списка платформ
if localplatform in ['yes', 'y']:
@@ -641,7 +640,7 @@ async def main():
if subnet != '32': # Если не '32', вызываем функцию для агрегации
group_ips_in_subnets(filename, subnet)
process_file_format(filename, filetype, gateway, selected_services, mk_list_name, subnet, ken_gateway)
process_file_format(filename, filetype, gateway, selected_services, mk_list_name, mk_comment, subnet, ken_gateway)
if run_command:
print("\nВыполнение команды после завершения скрипта...")