mirror of
https://github.com/Ground-Zerro/DomainMapper.git
synced 2025-12-10 01:47:18 +07:00
add mikrotik comment="" option
This commit is contained in:
@@ -106,6 +106,13 @@ keenetic =
|
||||
# укажите имя
|
||||
listname =
|
||||
|
||||
# комментарий - используется при сохранении IP-адресов в 'mikrotik' формате
|
||||
# опции:
|
||||
# пустое значение - оставить comment=%SERVICE_NAME% в строке
|
||||
# off - убрать comment=%SERVICE_NAME% из строки
|
||||
mk_comment =
|
||||
|
||||
|
||||
# Показывать сведения о загруженной конфигурации при запуске скрипта
|
||||
# опции:
|
||||
# yes или пустое значение - показывать
|
||||
|
||||
27
main.py
27
main.py
@@ -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Выполнение команды после завершения скрипта...")
|
||||
|
||||
Reference in New Issue
Block a user