From d436c1808c3941f94ab87aa25efeb35c9a97d72e Mon Sep 17 00:00:00 2001 From: Sazonov Andrey Date: Fri, 20 Mar 2026 17:19:23 +0300 Subject: [PATCH] fixik --- config.ini.example | 1 + redirector.py | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/config.ini.example b/config.ini.example index 26e0f4d..a2463b8 100644 --- a/config.ini.example +++ b/config.ini.example @@ -6,4 +6,5 @@ rollback_script = threads = table = gateway = +interface = run = diff --git a/redirector.py b/redirector.py index f5bb209..d158773 100644 --- a/redirector.py +++ b/redirector.py @@ -58,6 +58,7 @@ def read_config(cfg_file, section=None): "rollback_script": os.path.join(BASE_DIR, cfg.get("rollback_script", "forced_vpn_OFF.sh")), "exclude_cloudflare": cfg.get("exclude_cloudflare", "no").lower() in ["yes", "y"], "gateway": cfg.get("gateway", ""), + "interface": cfg.get("gateway", ""), "table": cfg.get("table", "1010"), "run": cfg.get("run", "") } @@ -209,6 +210,18 @@ async def main(): for ip in sorted(all_ips): f.write(ip + "\n") + gateway = "" + interface = "" + if cfg["gateway"]: + gateway = cfg["gateway"] + + if cfg["interface"]: + interface = cfg["interface"] + + if not gateway and not interface: + logging.error("Не указан Gateway и Interface, выход.") + exit(1) + with open(cfg["script"], "w") as f: f.write( f'#!/bin/bash\n\n' @@ -222,13 +235,14 @@ async def main(): if "/" in ip: if cfg["gateway"]: f.write(f'ip route replace {ip} via {cfg["gateway"]} table {cfg["table"]}\n') - else: - f.write(f'ip route replace {ip} table {cfg["table"]}\n') + elif cfg["interface"]: + f.write(f'ip route replace {ip} dev {cfg["interface"]} table {cfg["table"]}\n') + else: if cfg["gateway"]: f.write(f'ip route replace {ip}/32 via {cfg["gateway"]} table {cfg["table"]}\n') - else: - f.write(f'ip route replace {ip}/32 table {cfg["table"]}\n') + elif cfg["interface"]: + f.write(f'ip route replace {ip}/32 dev {cfg["interface"]} table {cfg["table"]}\n') os.chmod(cfg["script"], 0o755)