This commit is contained in:
Ground-Zerro
2024-08-24 18:08:17 +11:00
parent a316e9c1ca
commit 18562c546e
2 changed files with 16 additions and 2 deletions

View File

@@ -63,6 +63,7 @@ threads =
# cidr - IP/32 # cidr - IP/32
# win - rote add %IP% mask 255.255.255.255 %gateway% # 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 # mikrotik - /ip/firewall/address-list add list=%LIST_NAME% comment=%SERVICE_NAME% address=%IP%/32
# ovpn - push "route IP 255.255.255.255"
filetype = filetype =
# адрес шлюза - используется при сохранении IP-адресов в 'win' или 'unix' формате # адрес шлюза - используется при сохранении IP-адресов в 'win' или 'unix' формате

17
main.py
View File

@@ -56,7 +56,7 @@ def read_config(filename):
print(f"{Style.BRIGHT}Количество одновременных запросов к одному DNS серверу:{Style.RESET_ALL} {request_limit}") 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}Фильтр 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} {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}Шлюз/Имя интерфейса для маршрутов:{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}Имя списка для 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 'не указано'}") 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('unix')} - ip route {cyan('IP')}/32 {cyan('GATEWAY')}
{green('cidr')} - {cyan('IP')}/32 {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('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')} {green('Enter')} - {cyan('IP')}
Ваш выбор: """) Ваш выбор: """)
@@ -345,6 +346,18 @@ def process_file_format(filename, filetype, gateway, selected_service, mk_list_n
for ip in ips: for ip in ips:
file.write(f"{ip.strip()}/32\n") 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': elif filetype.lower() == 'mikrotik':
mk_list_name = mk_list_name_input(mk_list_name) mk_list_name = mk_list_name_input(mk_list_name)
@@ -424,7 +437,7 @@ async def main():
print(f"\n{yellow('Проверка завершена.')}") print(f"\n{yellow('Проверка завершена.')}")
print(f"{Style.BRIGHT}Использовались DNS сервера:{Style.RESET_ALL} " + ', '.join( print(f"{Style.BRIGHT}Использовались DNS сервера:{Style.RESET_ALL} " + ', '.join(
[f'{pair[0]} ({", ".join(pair[1])})' for pair in selected_dns_servers])) [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: if include_cloudflare:
print(f"{Style.BRIGHT}Исключено IP-адресов Cloudflare:{Style.RESET_ALL} {cloudflare_ips_count[0]}") 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]}") print(f"{Style.BRIGHT}Исключено IP-адресов 'заглушек':{Style.RESET_ALL} {null_ips_count[0]}")