Development

This commit is contained in:
Matthew Grotke 2026-06-05 21:28:05 -04:00
parent a6031616df
commit 47b0e98e31
9 changed files with 304 additions and 0 deletions

View file

@ -8,9 +8,12 @@ from auth import require_level
from config_utils import load_config, record_group, diff_fields, verify_config_hash
import sanitize
import mod_validation as validate
import license
_PAGE = Path(__file__).parent.name
PRO_LICENSE = license.is_pro()
bp = Blueprint(_PAGE, __name__)
@ -46,11 +49,16 @@ def vlans_addedit():
radius_default = 'radius_default' in request.form
mdns_reflection = 'mdns_reflection' in request.form
dnsmasq_log_queries = 'dnsmasq_log_queries' in request.form
restricted_vlan = 'restricted_vlan' in request.form
use_blocklists = sanitize.filterlist(
request.form.getlist('use_blocklists'),
{b.get('name') for b in load_config().get('dns_blocking', {}).get('blocklists', [])},
)
if restricted_vlan and not PRO_LICENSE:
flash('Restricted VLAN requires a Routlin Pro license.', 'error')
return redirect(f'/{_PAGE}')
if not name:
flash('Name is required.', 'error')
return redirect(f'/{_PAGE}')
@ -261,6 +269,8 @@ def vlans_addedit():
'use_blocklists': use_blocklists,
'server_identities': new_identities,
})
if PRO_LICENSE:
existing['restricted_vlan'] = restricted_vlan
if dhcp_info:
existing['dhcp_information'] = dhcp_info
else:
@ -318,6 +328,8 @@ def vlans_addedit():
'mdns_reflection': mdns_reflection,
'server_identities': new_identities,
}
if PRO_LICENSE:
entry['restricted_vlan'] = restricted_vlan
if dhcp_info:
entry['dhcp_information'] = dhcp_info
if is_vpn: