#  Rather than maintaining separate (GDBM) databases of
#  accounting info for each counter, this module uses the data
#  stored in the raddacct table by the sql modules. This
#  module NEVER does any database INSERTs or UPDATEs.  It is
#  totally dependent on the SQL module to process Accounting
#  packets.
#
#  The sql-module-instance' parameter holds the instance of the sql
#  module to use when querying the SQL database. Normally it
#  is just "sql".  If you define more and one SQL module
#  instance (usually for failover situations), you can
#  specify which module has access to the Accounting Data
#  (radacct table).
#
#  The 'reset' parameter defines when the counters are all
#  reset to zero.  It can be hourly, daily, weekly, monthly or
#  never.  It can also be user defined. It should be of the
#  form:
#  	num[hdwm] where:
#  	h: hours, d: days, w: weeks, m: months
#  	If the letter is ommited days will be assumed. In example:
#  	reset = 10h (reset every 10 hours)
#  	reset = 12  (reset every 12 days)
#
#  The 'key' parameter specifies the unique identifier for the
#  counter records (usually 'User-Name').
#
#  The 'query' parameter specifies the SQL query used to get
#  the current Counter value from the database. There are 2
#  parameters that can be used in the query:
#		%%b	unix time value of beginning of reset period
#		%%e	unix time value of end of reset period
#
#  The 'check_name' parameter is the name of the 'check'
#  attribute to use to access the counter in the 'users' file
#  or SQL radcheck or radcheckgroup tables.
#
#  DEFAULT  Max-Daily-Session > 3600, Auth-Type = Reject
#      Reply-Message = "You've used up more than one hour today"
#
#  The "dailycounter" (or any other sqlcounter module) should be added
#  to "post-auth" section.  It will then update the Session-Timeout
#  attribute in the reply.  If there is no Session-Timeout attribute,
#  the module will add one.  If there is an attribute, the sqlcounter
#  module will make sure that the value is no higher than the limit.
#
sqlcounter dailycounter {
	sql_module_instance = sql
	dialect = ${modules.sql.dialect}

	counter_name = Daily-Session-Time
	check_name = Max-Daily-Session
	reply_name = Session-Timeout

	key = User-Name
	reset = daily

	$INCLUDE ${modconfdir}/sql/counter/${dialect}/${.:instance}.conf
}

sqlcounter monthlycounter {
	sql_module_instance = sql
	dialect = ${modules.sql.dialect}

	counter_name = Monthly-Session-Time
	check_name = Max-Monthly-Session
	reply_name = Session-Timeout
	key = User-Name
	reset = monthly

	$INCLUDE ${modconfdir}/sql/counter/${dialect}/${.:instance}.conf
}

sqlcounter noresetcounter {
	sql_module_instance = sql
	dialect = ${modules.sql.dialect}

	counter_name = Max-All-Session-Time
	check_name = Max-All-Session
	key = User-Name
	reset = never

	$INCLUDE ${modconfdir}/sql/counter/${dialect}/${.:instance}.conf
}

#
#  Set an account to expire T seconds after first login.
#  Requires the Expire-After attribute to be set, in seconds.
#  You may need to edit raddb/dictionary to add the Expire-After
#  attribute.
sqlcounter expire_on_login {
	sql_module_instance = sql
	dialect = ${modules.sql.dialect}

	counter_name = Expire-After-Initial-Login
	check_name = Expire-After
	key = User-Name
	reset = never

	$INCLUDE ${modconfdir}/sql/counter/${dialect}/${.:instance}.conf
}
