Temps de connexion avec freeradius

Fermé
yaobo84 Messages postés 91 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 1 novembre 2012 - Modifié par yaobo84 le 21/09/2012 à 19:48
Jakscoreur74 Messages postés 44 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 17 juin 2013 - 31 mai 2013 à 16:40
bonjour,
j'ai un portail captif tournant sous coova-chilli et freeradius (je n'utilise pas les outils genre phpmyprepaid ou daloradius....). Je voudrais donc deconnecter authomatiquement mes utilisateur apres X heures.
voici mon fichier /etc/freeradius/sql/mysql/conunter.conf
sqlcounter dailycounter {
	counter-name = Daily-Session-Time
	check-name = Max-Daily-Session
	reply-name = Session-Timeout
	sqlmod-inst = sql
	key = User-Name
	reset = daily

	# This query properly handles calls that span from the
	# previous reset period into the current period but
	# involves more work for the SQL server than those
	# below
	query = "SELECT SUM(acctsessiontime - \
                 GREATEST((%b - UNIX_TIMESTAMP(acctstarttime)), 0)) \
                 FROM radacct WHERE username = '%{%k}' AND \
                 UNIX_TIMESTAMP(acctstarttime) + acctsessiontime > '%b'"

	# This query ignores calls that started in a previous
	# reset period and continue into into this one. But it
	# is a little easier on the SQL server
#	query = "SELECT SUM(acctsessiontime) FROM radacct WHERE \
#                username = '%{%k}' AND acctstarttime > FROM_UNIXTIME('%b')"

	# This query is the same as above, but demonstrates an
	# additional counter parameter '%e' which is the
	# timestamp for the end of the period
#	query = "SELECT SUM(acctsessiontime) FROM radacct \
#                WHERE username = '%{%k}' AND acctstarttime BETWEEN \
#                FROM_UNIXTIME('%b') AND FROM_UNIXTIME('%e')"
}

sqlcounter monthlycounter {
	counter-name = Monthly-Session-Time
		check-name = Max-Monthly-Session
		reply-name = Session-Timeout
		sqlmod-inst = sql
		key = User-Name
		reset = monthly

	# This query properly handles calls that span from the
	# previous reset period into the current period but
	# involves more work for the SQL server than those
	# below
	query = "SELECT SUM(acctsessiontime - \
                 GREATEST((%b - UNIX_TIMESTAMP(acctstarttime)), 0)) \
                 FROM radacct WHERE username='%{%k}' AND \
                 UNIX_TIMESTAMP(acctstarttime) + acctsessiontime > '%b'"

	# This query ignores calls that started in a previous
	# reset period and continue into into this one. But it
	# is a little easier on the SQL server
#	query = "SELECT SUM(acctsessiontime) FROM radacct WHERE \
#                username='%{%k}' AND acctstarttime > FROM_UNIXTIME('%b')"

	# This query is the same as above, but demonstrates an
	# additional counter parameter '%e' which is the
	# timestamp for the end of the period
#	query = "SELECT SUM(acctsessiontime) FROM radacct \
#                WHERE username='%{%k}' AND acctstarttime BETWEEN \
#                FROM_UNIXTIME('%b') AND FROM_UNIXTIME('%e')"
}

sqlcounter noresetcounter {
        counter-name = Max-All-Session-Time 
                check-name = Max-All-Session 
                sqlmod-inst = sql 
                key = User-Name 
                reset = never 
        query = "SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName='%{%k}'" 
} 


voici celui de /etc/freeradius/modules/counter
counter daily {
	filename = ${db_dir}/db.daily
	key = User-Name
	count-attribute = Acct-Session-Time
	reset = daily
	counter-name = Daily-Session-Time
	check-name = Max-Daily-Session
	reply-name = Session-Timeout
	allowed-servicetype = Framed-User
	cache-size = 5000
}

Le preobleme c'est que les utilisateurs ne sont jamais deconnectés. Quelqu"un comprend comment faire?
A voir également:

1 réponse

Jakscoreur74 Messages postés 44 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 17 juin 2013 23
31 mai 2013 à 16:40
Bonjour Yaobo84,

Comme tu utilise Coovachilli, je te conseille simplement d'utiliser une de ses fonctionnalité de déconnexion dans le fichier /etc/chilli/config
la ligne (a dé-commenter):
- HS_DEFIDLETIMEOUT= 3600 te permet de déconnecter tes utilisateurs au bout d'une heure (3600sec).
Tu peux évidemment utiliser le module Counter de freeradius mais c'est ici bien plus compliqué car tu dois jouer sur plusieurs entrées de la table Radius...
Voila voila :)
0