Development
This commit is contained in:
parent
d0cfffac52
commit
adcfe55c7c
24 changed files with 405 additions and 359 deletions
|
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
core.py -- Apply core.json to systemd-networkd, per-VLAN dnsmasq instances, and nftables.
|
||||
core.py -- Apply config.json to systemd-networkd, per-VLAN dnsmasq instances, and nftables.
|
||||
|
||||
Each VLAN defined in core.json gets its own dnsmasq instance that handles
|
||||
Each VLAN defined in config.json gets its own dnsmasq instance that handles
|
||||
both DHCP and DNS for that VLAN. WireGuard VLANs get a DNS-only instance
|
||||
(no DHCP, since peers have statically assigned IPs).
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ from validation import (
|
|||
PRODUCT_NAME = "routlin"
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
CONFIG_FILE = SCRIPT_DIR / "core.json"
|
||||
CONFIG_FILE = SCRIPT_DIR / "config.json"
|
||||
BLOCKLIST_DIR = SCRIPT_DIR / "blocklists"
|
||||
METRICS_FILE = SCRIPT_DIR / ".dns-metrics"
|
||||
DNSMASQ_CONF_DIR = Path(f"/etc/dnsmasq-{PRODUCT_NAME}")
|
||||
|
|
@ -260,7 +260,7 @@ def load_config():
|
|||
with open(CONFIG_FILE) as f:
|
||||
data = json.load(f)
|
||||
if not data.get("vlans"):
|
||||
die("No vlans defined in core.json.")
|
||||
die("No vlans defined in config.json.")
|
||||
return data
|
||||
|
||||
# ===================================================================
|
||||
|
|
@ -270,7 +270,7 @@ def load_config():
|
|||
def build_netdev(vlan, vid, iface):
|
||||
return "\n".join([
|
||||
"# Generated by core.py -- do not edit manually.",
|
||||
"# Edit core.json and re-run: sudo python3 core.py --apply",
|
||||
"# Edit config.json and re-run: sudo python3 core.py --apply",
|
||||
"",
|
||||
"[NetDev]",
|
||||
f"Name={iface}",
|
||||
|
|
@ -286,7 +286,7 @@ def build_network(vlan, vid, iface, all_vlan_ids):
|
|||
prefix = network.prefixlen
|
||||
lines = [
|
||||
"# Generated by core.py -- do not edit manually.",
|
||||
"# Edit core.json and re-run: sudo python3 core.py --apply",
|
||||
"# Edit config.json and re-run: sudo python3 core.py --apply",
|
||||
"",
|
||||
"[Match]",
|
||||
f"Name={iface}",
|
||||
|
|
@ -452,7 +452,7 @@ def build_vlan_dnsmasq_conf(vlan, data, iface):
|
|||
L.append(s)
|
||||
|
||||
line("# Generated by core.py -- do not edit manually.")
|
||||
line("# Edit core.json and re-run: sudo python3 core.py --apply")
|
||||
line("# Edit config.json and re-run: sudo python3 core.py --apply")
|
||||
line(f"# VLAN: {name} (vlan_id={derive_vlan_id(vlan.get('subnet', ''), vlan.get('subnet_mask', 24))})")
|
||||
line()
|
||||
line(f"pid-file={vlan_pid_file(vlan)}")
|
||||
|
|
@ -772,7 +772,7 @@ def generate_wg_server_key(iface):
|
|||
return private
|
||||
|
||||
def build_wg_server_conf(vlan, server_private_key, iface):
|
||||
"""Build the /etc/wireguard/<iface>.conf content from core.json peers."""
|
||||
"""Build the /etc/wireguard/<iface>.conf content from config.json peers."""
|
||||
info = vlan["vpn_information"]
|
||||
gateway = resolve_vlan_options(vlan)["gateway"]
|
||||
network = network_for(vlan)
|
||||
|
|
@ -1158,7 +1158,7 @@ def install_ddns_timer(data):
|
|||
"",
|
||||
"[Service]",
|
||||
"Type=oneshot",
|
||||
f"ExecStart=/usr/bin/python3 {script_path} --apply",
|
||||
f"ExecStart=/usr/bin/python3 {script_path} --update",
|
||||
"",
|
||||
])
|
||||
timer_content = "\n".join([
|
||||
|
|
@ -1387,7 +1387,7 @@ def build_nft_config(data, dry_run=False):
|
|||
L.append(s)
|
||||
|
||||
line("# Generated by core.py -- do not edit manually.")
|
||||
line("# Edit core.json and re-run: sudo python3 core.py --apply")
|
||||
line("# Edit config.json and re-run: sudo python3 core.py --apply")
|
||||
line()
|
||||
|
||||
# ==========================================================================
|
||||
|
|
@ -1829,7 +1829,7 @@ def build_radius_clients_conf(data, secret):
|
|||
"""Generate freeradius clients.conf from reservations with radius_client: true."""
|
||||
lines = [
|
||||
"# Generated by core.py -- do not edit manually.",
|
||||
"# Edit core.json and re-run: sudo python3 core.py --apply",
|
||||
"# Edit config.json and re-run: sudo python3 core.py --apply",
|
||||
"",
|
||||
"# localhost (required)",
|
||||
"client localhost {",
|
||||
|
|
@ -1867,7 +1867,7 @@ def build_radius_users(data):
|
|||
|
||||
lines = [
|
||||
"# Generated by core.py -- do not edit manually.",
|
||||
"# Edit core.json and re-run: sudo python3 core.py --apply",
|
||||
"# Edit config.json and re-run: sudo python3 core.py --apply",
|
||||
"",
|
||||
]
|
||||
|
||||
|
|
@ -3028,7 +3028,7 @@ def cmd_apply(data, dry_run=False):
|
|||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Apply core.json to systemd-networkd, per-VLAN dnsmasq instances, and nftables",
|
||||
description="Apply config.json to systemd-networkd, per-VLAN dnsmasq instances, and nftables",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog=(
|
||||
"examples:\n"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue