This commit is contained in:
Sazonov Andrey 2026-03-20 17:19:23 +03:00
parent 6d2ca73c1c
commit d436c1808c
2 changed files with 19 additions and 4 deletions

View File

@ -6,4 +6,5 @@ rollback_script =
threads =
table =
gateway =
interface =
run =

View File

@ -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)