sane-vpn: fix to provide bunpen with the gateway address for "sane-vpn do none ..."
This commit is contained in:
@@ -175,6 +175,26 @@ def get_dns_resolvers_for_dev(dev: str) -> list[str]:
|
||||
|
||||
return nameservers
|
||||
|
||||
def get_addr_v4_for_dev(dev: str) -> str | None:
|
||||
# output looks like IP4.ADDRESS[1]:192.168.1.72
|
||||
nmcli_stdout = subprocess.check_output([
|
||||
"nmcli", "-t", "-f", "IP4.ADDRESS", "device", "show", dev
|
||||
]).decode("utf-8")
|
||||
addrs = []
|
||||
for line in nmcli_stdout.splitlines():
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
_fname, addr = line.split(":")
|
||||
if not addr:
|
||||
continue
|
||||
if "/" in addr:
|
||||
addr, _subnet = addr.split("/")
|
||||
if not addr:
|
||||
continue
|
||||
addrs.append(addr)
|
||||
|
||||
return addrs[0] if len(addrs) else None
|
||||
|
||||
def get_connected_networks() -> list[str]:
|
||||
# output looks like:
|
||||
@@ -215,8 +235,9 @@ def get_vpn(vpn_name: str) -> VpnConfig:
|
||||
return load_vpns()[vpn_name]
|
||||
elif vpn_name == "none":
|
||||
dev = get_default_dev()
|
||||
addr_v4 = get_addr_v4_for_dev(dev)
|
||||
dns = get_dns_resolvers_for_dev(dev)
|
||||
return VpnConfig(dev=dev or "all", dns=dns)
|
||||
return VpnConfig(dev=dev or "all", addr_v4=addr_v4, dns=dns)
|
||||
elif vpn_name == "unmetered":
|
||||
for dev in get_connected_networks():
|
||||
dns = get_dns_resolvers_for_dev(dev)
|
||||
|
Reference in New Issue
Block a user