393 lines
12 KiB
Text
393 lines
12 KiB
Text
{# Managed by Ansible — do not edit manually. #}
|
|
# -*- text -*-
|
|
#
|
|
# main/mysql/queries.conf -- MySQL configuration for default schema (schema.sql)
|
|
#
|
|
# $Id: b31ae9c3a1bf41f030a2112d31bf3a678e76f23c $
|
|
|
|
safe_characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /"
|
|
|
|
sql_user_name = "%{User-Name}"
|
|
|
|
event_timestamp_epoch = "%{%{integer:Event-Timestamp}:-%l}"
|
|
event_timestamp = "FROM_UNIXTIME(${event_timestamp_epoch})"
|
|
|
|
class {
|
|
column_name = # ", class"
|
|
packet_xlat = # ", '%{Class}'"
|
|
reply_xlat = # ", '%{reply:Class}'"
|
|
}
|
|
|
|
client_query = "\
|
|
SELECT id, nasname, shortname, type, secret, server \
|
|
FROM ${client_table}"
|
|
|
|
authorize_check_query = "\
|
|
SELECT id, username, attribute, value, op \
|
|
FROM ${authcheck_table} \
|
|
WHERE username = '%{SQL-User-Name}' \
|
|
ORDER BY id"
|
|
|
|
authorize_reply_query = "\
|
|
SELECT id, username, attribute, value, op \
|
|
FROM ${authreply_table} \
|
|
WHERE username = '%{SQL-User-Name}' \
|
|
ORDER BY id"
|
|
|
|
group_membership_query = "\
|
|
SELECT groupname \
|
|
FROM ${usergroup_table} \
|
|
WHERE username = '%{SQL-User-Name}' \
|
|
ORDER BY priority"
|
|
|
|
authorize_group_check_query = "\
|
|
SELECT id, groupname, attribute, \
|
|
Value, op \
|
|
FROM ${groupcheck_table} \
|
|
WHERE groupname = '%{${group_attribute}}' \
|
|
ORDER BY id"
|
|
|
|
authorize_group_reply_query = "\
|
|
SELECT id, groupname, attribute, \
|
|
value, op \
|
|
FROM ${groupreply_table} \
|
|
WHERE groupname = '%{${group_attribute}}' \
|
|
ORDER BY id"
|
|
|
|
simul_count_query = "\
|
|
SELECT COUNT(*) \
|
|
FROM ${acct_table1} a \
|
|
LEFT OUTER JOIN nasreload n USING (nasipaddress) \
|
|
WHERE username = '%{SQL-User-Name}' \
|
|
AND acctstoptime IS NULL \
|
|
AND (a.acctstarttime > n.reloadtime OR n.reloadtime IS NULL)"
|
|
|
|
simul_verify_query = "\
|
|
SELECT \
|
|
radacctid, acctsessionid, username, nasipaddress, nasportid, framedipaddress, \
|
|
callingstationid, framedprotocol \
|
|
FROM ${acct_table1} a \
|
|
LEFT OUTER JOIN nasreload n USING (nasipaddress) \
|
|
WHERE username = '%{SQL-User-Name}' \
|
|
AND acctstoptime IS NULL \
|
|
AND (a.acctstarttime > n.reloadtime OR n.reloadtime IS NULL)"
|
|
|
|
accounting {
|
|
reference = "%{tolower:type.%{%{Acct-Status-Type}:-%{Request-Processing-Stage}}.query}"
|
|
|
|
column_list = "\
|
|
acctsessionid, acctuniqueid, username, \
|
|
realm, nasipaddress, nasportid, \
|
|
nasporttype, acctstarttime, acctupdatetime, \
|
|
acctstoptime, acctsessiontime, acctauthentic, \
|
|
connectinfo_start, connectinfo_stop, acctinputoctets, \
|
|
acctoutputoctets, calledstationid, callingstationid, \
|
|
acctterminatecause, servicetype, framedprotocol, \
|
|
framedipaddress, framedipv6address, framedipv6prefix, \
|
|
framedinterfaceid, delegatedipv6prefix ${..class.column_name}"
|
|
|
|
type {
|
|
accounting-on {
|
|
query = "\
|
|
UPDATE ${....acct_table1} \
|
|
SET \
|
|
acctstoptime = ${....event_timestamp}, \
|
|
acctsessiontime = '${....event_timestamp_epoch}' \
|
|
- UNIX_TIMESTAMP(acctstarttime), \
|
|
acctterminatecause = '%{%{Acct-Terminate-Cause}:-NAS-Reboot}' \
|
|
WHERE acctstoptime IS NULL \
|
|
AND nasipaddress = '%{NAS-IP-Address}' \
|
|
AND acctstarttime <= ${....event_timestamp}"
|
|
|
|
-query = "\
|
|
INSERT INTO nasreload \
|
|
SET \
|
|
nasipaddress = '%{NAS-IP-Address}', \
|
|
reloadtime = ${....event_timestamp} \
|
|
ON DUPLICATE KEY UPDATE reloadtime = ${....event_timestamp}"
|
|
}
|
|
|
|
accounting-off {
|
|
query = "${..accounting-on.query}"
|
|
}
|
|
|
|
post-auth {
|
|
query = "\
|
|
INSERT INTO ${....acct_table1} \
|
|
(${...column_list}) \
|
|
VALUES(\
|
|
'%{Acct-Session-Id}', \
|
|
'%{Acct-Unique-Session-Id}', \
|
|
'%{SQL-User-Name}', \
|
|
'%{Realm}', \
|
|
'%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}', \
|
|
NULLIF('%{%{NAS-Port-ID}:-%{NAS-Port}}', ''), \
|
|
'%{NAS-Port-Type}', \
|
|
${....event_timestamp}, \
|
|
${....event_timestamp}, \
|
|
NULL, \
|
|
0, \
|
|
'', \
|
|
'%{Connect-Info}', \
|
|
NULL, \
|
|
0, \
|
|
0, \
|
|
'%{Called-Station-Id}', \
|
|
'%{Calling-Station-Id}', \
|
|
'', \
|
|
'%{Service-Type}', \
|
|
NULL, \
|
|
'', \
|
|
'', \
|
|
'', \
|
|
'', \
|
|
'' \
|
|
${....class.packet_xlat})"
|
|
|
|
query = "\
|
|
UPDATE ${....acct_table1} SET \
|
|
AcctStartTime = ${....event_timestamp}, \
|
|
AcctUpdateTime = ${....event_timestamp}, \
|
|
ConnectInfo_start = '%{Connect-Info}', \
|
|
AcctSessionId = '%{Acct-Session-Id}' \
|
|
WHERE UserName = '%{SQL-User-Name}' \
|
|
AND NASIPAddress = '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
|
|
AND NASPortId = '%{%{NAS-Port-ID}:-%{NAS-Port}}' \
|
|
AND NASPortType = '%{NAS-Port-Type}' \
|
|
AND AcctStopTime IS NULL"
|
|
}
|
|
|
|
start {
|
|
query = "\
|
|
INSERT INTO ${....acct_table1} \
|
|
(${...column_list}) \
|
|
VALUES \
|
|
('%{Acct-Session-Id}', \
|
|
'%{Acct-Unique-Session-Id}', \
|
|
'%{SQL-User-Name}', \
|
|
'%{Realm}', \
|
|
'%{NAS-IP-Address}', \
|
|
'%{%{NAS-Port-ID}:-%{NAS-Port}}', \
|
|
'%{NAS-Port-Type}', \
|
|
${....event_timestamp}, \
|
|
${....event_timestamp}, \
|
|
NULL, \
|
|
'0', \
|
|
'%{Acct-Authentic}', \
|
|
'%{Connect-Info}', \
|
|
'', \
|
|
'0', \
|
|
'0', \
|
|
'%{Called-Station-Id}', \
|
|
'%{Calling-Station-Id}', \
|
|
'', \
|
|
'%{Service-Type}', \
|
|
'%{Framed-Protocol}', \
|
|
'%{Framed-IP-Address}', \
|
|
'%{Framed-IPv6-Address}', \
|
|
'%{Framed-IPv6-Prefix}', \
|
|
'%{Framed-Interface-Id}', \
|
|
'%{Delegated-IPv6-Prefix}' \
|
|
${....class.packet_xlat})"
|
|
|
|
-query = "\
|
|
UPDATE ${....acct_table1} \
|
|
SET \
|
|
AcctSessionId = '%{Acct-Session-Id}', \
|
|
AcctUniqueId = '%{Acct-Unique-Session-Id}', \
|
|
AcctAuthentic = '%{Acct-Authentic}', \
|
|
ConnectInfo_start = '%{Connect-Info}', \
|
|
ServiceType = '%{Service-Type}', \
|
|
FramedProtocol = '%{Framed-Protocol}', \
|
|
framedipaddress = '%{Framed-IP-Address}', \
|
|
framedipv6address = '%{Framed-IPv6-Address}', \
|
|
framedipv6prefix = '%{Framed-IPv6-Prefix}', \
|
|
framedinterfaceid = '%{Framed-Interface-Id}', \
|
|
delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \
|
|
AcctStartTime = ${....event_timestamp}, \
|
|
AcctUpdateTime = ${....event_timestamp} \
|
|
WHERE UserName = '%{SQL-User-Name}' \
|
|
AND NASIPAddress = '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
|
|
AND NASPortId = '%{%{NAS-Port-ID}:-%{NAS-Port}}' \
|
|
AND NASPortType = '%{NAS-Port-Type}' \
|
|
AND AcctStopTime IS NULL"
|
|
|
|
query = "\
|
|
UPDATE ${....acct_table1} SET \
|
|
acctstarttime = ${....event_timestamp}, \
|
|
acctupdatetime = ${....event_timestamp}, \
|
|
connectinfo_start = '%{Connect-Info}' \
|
|
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
|
|
}
|
|
|
|
interim-update {
|
|
query = "\
|
|
UPDATE ${....acct_table1} \
|
|
SET \
|
|
acctupdatetime = (@acctupdatetime_old:=acctupdatetime), \
|
|
acctupdatetime = ${....event_timestamp}, \
|
|
acctinterval = ${....event_timestamp_epoch} - \
|
|
UNIX_TIMESTAMP(@acctupdatetime_old), \
|
|
framedipaddress = '%{Framed-IP-Address}', \
|
|
framedipv6address = '%{Framed-IPv6-Address}', \
|
|
framedipv6prefix = '%{Framed-IPv6-Prefix}', \
|
|
framedinterfaceid = '%{Framed-Interface-Id}', \
|
|
delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \
|
|
acctsessiontime = %{%{Acct-Session-Time}:-NULL}, \
|
|
acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' \
|
|
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
|
|
acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' \
|
|
<< 32 | '%{%{Acct-Output-Octets}:-0}' \
|
|
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
|
|
|
|
query = "\
|
|
INSERT INTO ${....acct_table1} \
|
|
(${...column_list}) \
|
|
VALUES \
|
|
('%{Acct-Session-Id}', \
|
|
'%{Acct-Unique-Session-Id}', \
|
|
'%{SQL-User-Name}', \
|
|
'%{Realm}', \
|
|
'%{NAS-IP-Address}', \
|
|
'%{%{NAS-Port-ID}:-%{NAS-Port}}', \
|
|
'%{NAS-Port-Type}', \
|
|
FROM_UNIXTIME(${....event_timestamp_epoch} - %{%{Acct-Session-Time}:-0}), \
|
|
${....event_timestamp}, \
|
|
NULL, \
|
|
%{%{Acct-Session-Time}:-NULL}, \
|
|
'%{Acct-Authentic}', \
|
|
'%{Connect-Info}', \
|
|
'', \
|
|
'%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', \
|
|
'%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}', \
|
|
'%{Called-Station-Id}', \
|
|
'%{Calling-Station-Id}', \
|
|
'', \
|
|
'%{Service-Type}', \
|
|
'%{Framed-Protocol}', \
|
|
'%{Framed-IP-Address}', \
|
|
'%{Framed-IPv6-Address}', \
|
|
'%{Framed-IPv6-Prefix}', \
|
|
'%{Framed-Interface-Id}', \
|
|
'%{Delegated-IPv6-Prefix}' \
|
|
${....class.packet_xlat})"
|
|
|
|
-query = "\
|
|
UPDATE ${....acct_table1} \
|
|
SET \
|
|
AcctSessionId = '%{Acct-Session-Id}', \
|
|
AcctUniqueId = '%{Acct-Unique-Session-Id}', \
|
|
AcctAuthentic = '%{Acct-Authentic}', \
|
|
ConnectInfo_start = '%{Connect-Info}', \
|
|
ServiceType = '%{Service-Type}', \
|
|
FramedProtocol = '%{Framed-Protocol}', \
|
|
framedipaddress = '%{Framed-IP-Address}', \
|
|
framedipv6address = '%{Framed-IPv6-Address}', \
|
|
framedipv6prefix = '%{Framed-IPv6-Prefix}', \
|
|
framedinterfaceid = '%{Framed-Interface-Id}', \
|
|
delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \
|
|
AcctUpdateTime = ${....event_timestamp}, \
|
|
AcctSessionTime = %{%{Acct-Session-Time}:-NULL}, \
|
|
AcctInputOctets = '%{%{Acct-Input-Gigawords}:-0}' \
|
|
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
|
|
AcctOutputOctets = '%{%{Acct-Output-Gigawords}:-0}' \
|
|
<< 32 | '%{%{Acct-Output-Octets}:-0}' \
|
|
WHERE UserName = '%{SQL-User-Name}' \
|
|
AND NASIPAddress = '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
|
|
AND NASPortId = '%{%{NAS-Port-ID}:-%{NAS-Port}}' \
|
|
AND NASPortType = '%{NAS-Port-Type}' \
|
|
AND AcctStopTime IS NULL"
|
|
}
|
|
|
|
stop {
|
|
query = "\
|
|
UPDATE ${....acct_table2} SET \
|
|
acctstoptime = ${....event_timestamp}, \
|
|
acctsessiontime = %{%{Acct-Session-Time}:-NULL}, \
|
|
acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' \
|
|
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
|
|
acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' \
|
|
<< 32 | '%{%{Acct-Output-Octets}:-0}', \
|
|
acctterminatecause = '%{Acct-Terminate-Cause}', \
|
|
connectinfo_stop = '%{Connect-Info}' \
|
|
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
|
|
|
|
query = "\
|
|
INSERT INTO ${....acct_table2} \
|
|
(${...column_list}) \
|
|
VALUES \
|
|
('%{Acct-Session-Id}', \
|
|
'%{Acct-Unique-Session-Id}', \
|
|
'%{SQL-User-Name}', \
|
|
'%{Realm}', \
|
|
'%{NAS-IP-Address}', \
|
|
'%{%{NAS-Port-ID}:-%{NAS-Port}}', \
|
|
'%{NAS-Port-Type}', \
|
|
FROM_UNIXTIME(${....event_timestamp_epoch} - %{%{Acct-Session-Time}:-0}), \
|
|
${....event_timestamp}, \
|
|
${....event_timestamp}, \
|
|
%{%{Acct-Session-Time}:-NULL}, \
|
|
'%{Acct-Authentic}', \
|
|
'', \
|
|
'%{Connect-Info}', \
|
|
'%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', \
|
|
'%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}', \
|
|
'%{Called-Station-Id}', \
|
|
'%{Calling-Station-Id}', \
|
|
'%{Acct-Terminate-Cause}', \
|
|
'%{Service-Type}', \
|
|
'%{Framed-Protocol}', \
|
|
'%{Framed-IP-Address}', \
|
|
'%{Framed-IPv6-Address}', \
|
|
'%{Framed-IPv6-Prefix}', \
|
|
'%{Framed-Interface-Id}', \
|
|
'%{Delegated-IPv6-Prefix}' \
|
|
${....class.packet_xlat})"
|
|
|
|
-query = "\
|
|
UPDATE ${....acct_table1} \
|
|
SET \
|
|
AcctSessionId = '%{Acct-Session-Id}', \
|
|
AcctUniqueId = '%{Acct-Unique-Session-Id}', \
|
|
AcctAuthentic = '%{Acct-Authentic}', \
|
|
ConnectInfo_start = '%{Connect-Info}', \
|
|
ServiceType = '%{Service-Type}', \
|
|
FramedProtocol = '%{Framed-Protocol}', \
|
|
framedipaddress = '%{Framed-IP-Address}', \
|
|
framedipv6address = '%{Framed-IPv6-Address}', \
|
|
framedipv6prefix = '%{Framed-IPv6-Prefix}', \
|
|
framedinterfaceid = '%{Framed-Interface-Id}', \
|
|
delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \
|
|
AcctStopTime = ${....event_timestamp}, \
|
|
AcctUpdateTime = ${....event_timestamp}, \
|
|
AcctSessionTime = %{Acct-Session-Time}, \
|
|
AcctInputOctets = '%{%{Acct-Input-Gigawords}:-0}' \
|
|
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
|
|
AcctOutputOctets = '%{%{Acct-Output-Gigawords}:-0}' \
|
|
<< 32 | '%{%{Acct-Output-Octets}:-0}', \
|
|
AcctTerminateCause = '%{Acct-Terminate-Cause}', \
|
|
ConnectInfo_stop = '%{Connect-Info}' \
|
|
WHERE UserName = '%{SQL-User-Name}' \
|
|
AND NASIPAddress = '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
|
|
AND NASPortId = '%{%{NAS-Port-ID}:-%{NAS-Port}}' \
|
|
AND NASPortType = '%{NAS-Port-Type}' \
|
|
AND AcctStopTime IS NULL"
|
|
}
|
|
|
|
accounting {
|
|
query = "SELECT true"
|
|
}
|
|
}
|
|
}
|
|
|
|
post-auth {
|
|
query = "\
|
|
INSERT INTO ${..postauth_table} \
|
|
(username, pass, reply, authdate ${..class.column_name}) \
|
|
VALUES ( \
|
|
'%{SQL-User-Name}', \
|
|
'%{%{User-Password}:-%{Chap-Password}}', \
|
|
'%{reply:Packet-Type}', \
|
|
'%S.%M' \
|
|
${..class.reply_xlat})"
|
|
}
|