1,23 → 1,5 |
<?php |
require('/etc/freeradius-web/config.php'); |
require_once('../lib/xlat.php'); |
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php")) |
include_once("../lib/sql/drivers/$config[sql_type]/functions.php"); |
else{ |
echo <<<EOM |
<title>Fermeture des sessions ouvertes pour l'utilisateur $login</title> |
<meta http-equiv="Content-Type" content="text/html; charset=$config[general_charset]"> |
<link rel="stylesheet" href="style.css"> |
</head> |
<body> |
<center> |
<b>Could not include SQL library functions. Aborting</b> |
</body> |
</html> |
EOM; |
exit(); |
} |
|
echo <<<EOM |
<html> |
<head> |
47,14 → 29,6 |
|
include("../html/user_toolbar.html.php"); |
|
$open_sessions = 0; |
|
$sql_extra_query = ''; |
if ($config[sql_accounting_extra_query] != ''){ |
$sql_extra_query = xlat($config[sql_accounting_extra_query],$login,$config); |
$sql_extra_query = da_sql_escape_string($sql_extra_query); |
} |
|
print <<<EOM |
</table> |
|
73,97 → 47,11 |
<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top> |
<tr><td> |
EOM; |
|
if ($drop_conns == 1){ |
$method = 'snmp'; |
$nastype = 'cisco'; |
if ($config[general_sessionclear_method] != '') |
$method = $config[general_sessionclear_method]; |
if ($config[general_nas_type] != '') |
$nastype = $config[general_nas_type]; |
if ($config[general_ld_library_path] != '') |
putenv("LD_LIBRARY_PATH=$config[general_ld_library_path]"); |
$nas_by_ip = array(); |
$meth_by_ip = array(); |
$nastype_by_ip = array(); |
foreach ($nas_list as $nas){ |
if ($nas[ip] != ''){ |
$ip = $nas[ip]; |
$nas_by_ip[$ip] = $nas[community]; |
$meth_by_ip[$ip] = $nas[sessionclear_method]; |
$nastype_by_ip[$ip] = $nas[nas_type]; |
} |
} |
|
$link = @da_sql_pconnect($config); |
if ($link){ |
$search = @da_sql_query($link,$config, |
"SELECT nasipaddress,acctsessionid FROM $config[sql_accounting_table] |
WHERE username = '$login' AND acctstoptime IS NULL;"); |
if ($search){ |
while($row = @da_sql_fetch_array($search,$config)){ |
$sessionid = $row[acctsessionid]; |
$sessionid = hexdec($sessionid); |
$nas = $row[nasipaddress]; |
$port = $row[nasportid]; |
$meth = $meth_by_ip[$nas]; |
$nastype = ($nastype_by_ip[$nas] != '') ? $nastype_by_ip[$nas] : $nastype; |
$comm = $nas_by_ip[$nas]; |
if ($meth == '') |
$meth = $method; |
if ($meth == 'snmp' && $comm != '') |
exec("$config[general_sessionclear_bin] $nas snmp $nastype $login $sessionid $comm"); |
if ($meth == 'telnet') |
exec("$config[general_sessionclear_bin] $nas telnet $nastype $login $sessionid $port"); |
} |
} |
else |
echo "<b>Database query failed: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Could not connect to SQL database</b><br>\n"; |
} |
if ($clear_sessions == 1) |
{ |
exec ("sudo /usr/local/sbin/alcasar-logout.sh $login"); |
$sql_servers = array(); |
if ($config[sql_extra_servers] != '') |
$sql_servers = explode(' ',$config[sql_extra_servers]); |
$quer = '= 0'; |
if ($config[sql_type] == 'pg') |
$quer = 'IS NULL'; |
$sql_servers[] = $config[sql_server]; |
foreach ($sql_servers as $server) |
{ |
$link = @da_sql_host_connect($server,$config); |
if ($link) |
{ |
$res = @da_sql_query($link,$config, |
"DELETE FROM $config[sql_accounting_table] |
WHERE username='$login' AND acctstoptime $quer $sql_extra_query;"); |
if ($res) |
echo "<b>La comptabilité des sessions pour cet usager a été arrétée</b><br>\n"; |
else |
echo "<b>Error deleting open sessions for user" . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Could not connect to SQL database</b><br>\n"; |
} |
} |
$link = @da_sql_pconnect($config); |
if ($link){ |
$search = @da_sql_query($link,$config, |
"SELECT COUNT(*) AS counter FROM $config[sql_accounting_table] |
WHERE username = '$login' AND acctstoptime IS NULL $sql_extra_query;"); |
if ($search){ |
if ($row = @da_sql_fetch_array($search,$config)) |
$open_sessions = $row[counter]; |
} |
else |
echo "<b>Database query failed: " . da_sql_error($link,$config) . "</b><br>\n"; |
} |
else |
echo "<b>Could not connect to SQL database</b><br>\n"; |
exec ("sudo /usr/sbin/chilli_query list|cut -d\" \" -f5,6|grep $login|grep ^1|wc -l" , $open_sessions); |
?> |
<form method=post> |
<input type=hidden name=login value=<?php print $login ?>> |
172,12 → 60,12 |
<tr> |
<td align=center> |
<? |
if ($open_sessions == 0) |
if ($open_sessions[0] == 0) |
{ |
echo "L'usager $login n'a pas de session ouverte"; |
} |
else { |
echo "L'usager $login a <i>$open_sessions</i> session(s) ouverte(s)<br><br>"; |
echo "L'usager $login a <i>$open_sessions[0]</i> session(s) ouverte(s)<br><br>"; |
echo "Êtes-vous certain de vouloir "; |
if ($open_sessions == 1) { echo "la"; } else {echo "les"; } |
echo " fermer ? "; |
186,7 → 74,6 |
?> |
</form> |
</td></tr></table> |
<!--<input type=submit class=button value="Oui, poubelliser les connexions" OnClick="this.form.drop_conns.value=1">--> |
</td></tr></table> |
</TD></TR></TABLE> |
</body> |