From: kkalev Date: Wed, 8 Dec 2004 15:06:25 +0000 (+0000) Subject: Also delete sessions from sql_extra_servers. Add the ability to disconnect X-Git-Url: https://git.entuzijast.net/?a=commitdiff_plain;h=98d69c59bbee9bb7352080abe31cf2bee90d9fdf;p=freeradius-dialup-admin.git Also delete sessions from sql_extra_servers. Add the ability to disconnect a user (using the AAA Session MIB of Cisco) --- diff --git a/htdocs/clear_opensessions.php3 b/htdocs/clear_opensessions.php3 index 979aa65..7670252 100644 --- a/htdocs/clear_opensessions.php3 +++ b/htdocs/clear_opensessions.php3 @@ -64,20 +64,57 @@ print << EOM; - -if ($clear_sessions == 1){ + +if ($drop_conns == 1){ + if ($config[general_ld_library_path] != '') + putenv("LD_LIBRARY_PATH=$config[general_ld_library_path]"); + foreach ($nas_list as $nas){ + if ($nas[ip] != ''){ + $ip = $nas[ip]; + $nas_by_ip[$ip] = $nas[community]; + } + } + $link = @da_sql_pconnect($config); if ($link){ - $res = @da_sql_query($link,$config, - "DELETE FROM $config[sql_accounting_table] - WHERE username='$login' AND acctstoptime = 0 $sql_extra_query;"); - if ($res) - echo "Deleted open sessions from accounting table
\n"; + $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]; + $comm = $nas_by_ip[$nas]; + if ($comm != '') + exec("$config[general_sessionclear_bin] $nas $comm $sessionid $login"); + } + } else - echo "Error deleting open sessions for user" . da_sql_error($link,$config) . "
\n"; - } + echo "Database query failed: " . da_sql_error($link,$config) . "
\n"; + } else echo "Could not connect to SQL database
\n"; +} +if ($clear_sessions == 1){ + $sql_servers = array(); + if ($config[sql_extra_servers] != '') + $sql_servers = explode(' ',$config[sql_extra_servers]); + $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 = 0 $sql_extra_query;"); + if ($res) + echo "Deleted open sessions from accounting table on server $server
\n"; + else + echo "Error deleting open sessions for user" . da_sql_error($link,$config) . "
\n"; + } + else + echo "Could not connect to SQL database
\n"; + } echo << @@ -100,7 +137,7 @@ else{ } else echo "Database query failed: " . da_sql_error($link,$config) . "
\n"; - } + } else echo "Could not connect to SQL database
\n"; } @@ -118,6 +155,8 @@ Are you sure you want to clear all open user sessions?
+

+