#!/bin/sh

. /lib/functions.sh

add_dot1x_port() {
	local sid="$1"
	local ifname
	config_get ifname "$1" "ifname"
	[ -n "$ifname" ] || return

	local no_vlans="$(uci_get "dot1x" "$1" "no_vlans")"
	[ -n "$no_vlans" ] && return

	local role="$(uci_get "dot1x" "$1" "role")"
	local enabled="$(uci_get "dot1x" "$1" "enabled")"

	uci -q batch <<-EOF
		set dot1x.$sid='port'
		set dot1x.$sid.radius='example'
		set dot1x.$sid.role='${role:-'server'}'
		set dot1x.$sid.enabled='${enabled:-'0'}'
		set dot1x.$sid.no_vlans=1
		set dot1x.$sid.iface="$ifname"
	EOF
}

generate_dot1x_server() {
	touch /etc/config/dot1x
	config_load "network"
	config_foreach "add_dot1x_port" "port"

	uci show dot1x.example > /dev/null 2>&1 && return
	uci -q batch <<-EOF
		set dot1x.example='radius'
		set dot1x.example.port='1812'
		set dot1x.example.secret='-'
		set dot1x.example.address='0.0.0.0'
		set dot1x.example.name='example'
	EOF
}

conf_register_hook generate_dot1x_server