From 18562c546ed128c0ddfc40601bf6236fb4976c41 Mon Sep 17 00:00:00 2001 From: Ground-Zerro Date: Sat, 24 Aug 2024 18:08:17 +1100 Subject: [PATCH] update --- config.ini | 1 + main.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/config.ini b/config.ini index 83923ec..a7213ff 100644 --- a/config.ini +++ b/config.ini @@ -63,6 +63,7 @@ threads = # cidr - IP/32 # win - rote add %IP% mask 255.255.255.255 %gateway% # mikrotik - /ip/firewall/address-list add list=%LIST_NAME% comment=%SERVICE_NAME% address=%IP%/32 +# ovpn - push "route IP 255.255.255.255" filetype = # адрес шлюза - используется при сохранении IP-адресов в 'win' или 'unix' формате diff --git a/main.py b/main.py index 2e917bc..9f94132 100644 --- a/main.py +++ b/main.py @@ -56,7 +56,7 @@ def read_config(filename): print(f"{Style.BRIGHT}Количество одновременных запросов к одному DNS серверу:{Style.RESET_ALL} {request_limit}") print(f"{Style.BRIGHT}Фильтр IP-адресов Cloudflare:{Style.RESET_ALL} {'включен' if cloudflare == 'yes' else 'выключен' if cloudflare == 'no' else 'спросить у пользователя'}") print(f"{Style.BRIGHT}Сохранить результаты в файл:{Style.RESET_ALL} {filename}") - print(f"{Style.BRIGHT}Формат сохранения:{Style.RESET_ALL} {'только IP' if filetype == 'ip' else 'Linux route' if filetype == 'unix' else 'CIDR-нотация' if filetype == 'cidr' else 'Windows route' if filetype == 'win' else 'CLI Mikrotik firewall' if filetype == 'mikrotik' else 'спросить у пользователя'}") + print(f"{Style.BRIGHT}Формат сохранения:{Style.RESET_ALL} {'только IP' if filetype == 'ip' else 'Linux route' if filetype == 'unix' else 'CIDR-нотация' if filetype == 'cidr' else 'Windows route' if filetype == 'win' else 'CLI Mikrotik firewall' if filetype == 'mikrotik' else 'open vpn' if filetype == 'ovpn' else 'спросить у пользователя'}") print(f"{Style.BRIGHT}Шлюз/Имя интерфейса для маршрутов:{Style.RESET_ALL} {gateway if gateway else 'спросить у пользователя'}") print(f"{Style.BRIGHT}Имя списка для Mikrotik firewall:{Style.RESET_ALL} {mk_list_name if mk_list_name else 'спросить у пользователя'}") print(f"{Style.BRIGHT}Выполнить по завершению:{Style.RESET_ALL} {run_command if run_command else 'не указано'}") @@ -312,6 +312,7 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n {green('unix')} - ip route {cyan('IP')}/32 {cyan('GATEWAY')} {green('cidr')} - {cyan('IP')}/32 {green('mikrotik')} - /ip/firewall/address-list add list={cyan("LIST_NAME")} comment="{mk_comment(selected_service)}" address={cyan("IP")}/32 +{green('ovpn')} - push "route {cyan('IP')} 255.255.255.255" {green('Enter')} - {cyan('IP')} Ваш выбор: """) @@ -345,6 +346,18 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n for ip in ips: file.write(f"{ip.strip()}/32\n") + elif filetype.lower() == 'ovpn': + try: + with open(filename, 'r', encoding='utf-8-sig') as file: + ips = file.readlines() + except Exception as e: + print(f"Ошибка чтения файла: {e}") + return + if ips: + with open(filename, 'w', encoding='utf-8-sig') as file: + for ip in ips: + file.write(f'push "route {ip.strip()} 255.255.255.255"\n') + elif filetype.lower() == 'mikrotik': mk_list_name = mk_list_name_input(mk_list_name) @@ -424,7 +437,7 @@ async def main(): print(f"\n{yellow('Проверка завершена.')}") print(f"{Style.BRIGHT}Использовались DNS сервера:{Style.RESET_ALL} " + ', '.join( [f'{pair[0]} ({", ".join(pair[1])})' for pair in selected_dns_servers])) - print(f"{Style.BRIGHT}Всего обработано DNS имен:{Style.RESET_ALL} {total_domains_processed[0]}.") + print(f"{Style.BRIGHT}Всего обработано DNS имен:{Style.RESET_ALL} {total_domains_processed[0]}") if include_cloudflare: print(f"{Style.BRIGHT}Исключено IP-адресов Cloudflare:{Style.RESET_ALL} {cloudflare_ips_count[0]}") print(f"{Style.BRIGHT}Исключено IP-адресов 'заглушек':{Style.RESET_ALL} {null_ips_count[0]}")