# -*- text -*-
##
##  OPTIONAL — look up RADIUS clients in the SimpliFi "nas" table per packet instead
##  of loading them at start-up (read_clients). New routers then work without a
##  FreeRADIUS restart. Use either this file or the cron reload script, not both.
##
##  Install:
##      cp deploy/freeradius/sites-available/simplifi-dynamic-clients /etc/freeradius/3.0/sites-available/
##      ln -sf ../sites-available/simplifi-dynamic-clients /etc/freeradius/3.0/sites-enabled/
##      and add the "client simplifi_dynamic" block below to /etc/freeradius/3.0/clients.conf
##      (keep localhost there for radtest).
##
##  Based on the stock raddb/sites-available/dynamic-clients example.
##
##  --- add to clients.conf ---------------------------------------------------
##  client simplifi_dynamic {
##      ipaddr = 0.0.0.0/0
##      dynamic_clients = simplifi_dynamic_clients
##      lifetime = 600
##  }
##  ----------------------------------------------------------------------------
##

server simplifi_dynamic_clients {
	authorize {
		#  Only define the client when SimpliFi knows this source address.
		if ("%{sql: SELECT COUNT(*) FROM nas WHERE nasname = '%{Packet-Src-IP-Address}'}" > 0) {
			update control {
				&FreeRADIUS-Client-IP-Address = "%{Packet-Src-IP-Address}"
				&FreeRADIUS-Client-Shortname = "%{sql: SELECT shortname FROM nas WHERE nasname = '%{Packet-Src-IP-Address}' LIMIT 1}"
				&FreeRADIUS-Client-Secret = "%{sql: SELECT secret FROM nas WHERE nasname = '%{Packet-Src-IP-Address}' LIMIT 1}"
				&FreeRADIUS-Client-NAS-Type = "other"
				&FreeRADIUS-Client-Virtual-Server = "simplifi"
			}
			ok
		}
	}
}
