From e46584041bc01f48187147401bd6d5a6525cf281 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 5 Mar 2019 13:11:32 +0100 Subject: [PATCH] net/freeradius: add remote mysql support (#1201) --- net/freeradius/pkg-descr | 2 +- .../OPNsense/Freeradius/forms/general.xml | 42 +++++++++++++++++++ .../models/OPNsense/Freeradius/General.xml | 42 +++++++++++++++++++ .../OPNsense/Freeradius/mods-enabled-sql | 37 ++++++++++++++++ 4 files changed, 122 insertions(+), 1 deletion(-) diff --git a/net/freeradius/pkg-descr b/net/freeradius/pkg-descr index 5fb383d50..9f645c32a 100644 --- a/net/freeradius/pkg-descr +++ b/net/freeradius/pkg-descr @@ -18,7 +18,7 @@ Plugin Changelog 1.9.0 * Add DHCP support, serving only for DHCP relays - +* Allow usage of remote MySQL server WWW: https://www.freeradius.org diff --git a/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/general.xml b/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/general.xml index 85a119105..7f4de121b 100644 --- a/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/general.xml +++ b/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/general.xml @@ -83,4 +83,46 @@ text Set the IP address to listen on. + + general.mysql + + checkbox + true + This enables remote MySQL support. + + + general.mysqlserver + + text + true + Set the IP address of remote MySQL server. + + + general.mysqlport + + text + true + Set the port of remote MySQL server. + + + general.mysqluser + + text + true + Set the user of remote MySQL server. + + + general.mysqlpassword + + password + true + Set the password of remote MySQL server. + + + general.mysqldb + + text + true + Set database name of remote MySQL server. + diff --git a/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/General.xml b/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/General.xml index 07974c9ac..339c42e1d 100644 --- a/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/General.xml +++ b/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/General.xml @@ -30,6 +30,15 @@ 0 N + + + MySQL and SQLite can not be combined. + SingleSelectConstraint + + mysql + + + 0 @@ -80,5 +89,38 @@ + + 0 + N + + + MySQL and SQLite can not be combined. + SingleSelectConstraint + + sqlite + + + + + + 127.0.0.1 + Y + + + 3306 + Y + + + radius + Y + + + radpass + Y + + + radius + Y + diff --git a/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/mods-enabled-sql b/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/mods-enabled-sql index 08d7a9452..a999e7da5 100644 --- a/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/mods-enabled-sql +++ b/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/mods-enabled-sql @@ -42,5 +42,42 @@ sql { $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf } +{% endif %} +{% if helpers.exists('OPNsense.freeradius.general.mysql') and OPNsense.freeradius.general.mysql == '1' %} +sql sql1 { + database = "mysql" + driver = "rlm_sql_${database}" + dialect = "${database}" + server = "{{ OPNsense.freeradius.general.mysqlserver }}" + port = {{ OPNsense.freeradius.general.mysqlport }} + login = "{{ OPNsense.freeradius.general.mysqluser }}" + password = "{{ OPNsense.freeradius.general.mysqlpassword }}" + radius_db = "{{ OPNsense.freeradius.general.mysqldb }}" + acct_table1 = "radacct" + acct_table2 = "radacct" + postauth_table = "radpostauth" + authcheck_table = "radcheck" + authreply_table = "radreply" + groupcheck_table = "radgroupcheck" + groupreply_table = "radgroupreply" + usergroup_table = "radusergroup" + read_groups = yes + delete_stale_sessions = yes + logfile = ${logdir}/sqltrace.sql + read_clients = yes + client_table = "nas" + pool { + start = ${thread[pool].start_servers} + min = ${thread[pool].min_spare_servers} + max = 5 + spare = ${thread[pool].max_spare_servers} + uses = 0 + retry_delay = 60 + lifetime = 0 + idle_timeout = 60 + } + group_attribute = "${.:instance}-SQL-Group" + $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf +} {% endif %} {% endif %}