This does not work…
if ($_POST['logout_id']) {
echo << <eod<br><title>Disconnecting…</title>
You have been disconnected.
EOD;
register_shutdown_function(disconnect_client,$_POST['logout_id']);
exit;
–-
As stated before the only thing that I have been able to make work is this...
--- index.php 2011-02-06 16:24:13.000000000 +0000
+++ index.php.new 2011-02-06 16:16:27.000000000 +0000
@@ -412,29 +412,7 @@
*/
function disconnect_client($sessionid, $logoutReason = "LOGOUT", $term_cause = 1) {
global $g, $config;
$cplock = lock('captiveportal');
/* read database */
$cpdb = captiveportal_read_db();
$radiusservers = captiveportal_get_radius_servers();
/* find entry */
for ($i = 0; $i < count($cpdb); $i++) {
if ($cpdb[$i][5] == $sessionid) {
captiveportal_disconnect($cpdb[$i],$radiusservers, $term_cause);
captiveportal_logportalauth($cpdb[$i][4],$cpdb[$i][3],$cpdb[$i][2],$logoutReason);
unset($cpdb[$i]);
break;
}
}
/* write database */
captiveportal_write_db($cpdb);
unlock($cplock);
mwexec_bg("/usr/local/captiveportal/captiveportal-disconnect.php $sessionid $logoutReason $term_cause");
}
Where /usr/local/www/captiveportal/captiveportal-disconnect.php contains the following
–-
#!/usr/local/bin/php -f
require_once("functions.inc");
global $g, $config;
$sessionid = $argv[1];
$logoutReason = $argv[2];
$term_cause = $argv[3];
if ( $argc != 4 || $sessionid == "" || logoutReason == "" || $term_cause == "" )
exit;
echo "$sessionid $logoutReason $term_cause";
$cplock = lock('captiveportal');
/* read database */
$cpdb = captiveportal_read_db();
$radiusservers = captiveportal_get_radius_servers();
/* find entry */
for ($i = 0; $i < count($cpdb); $i++) {
if ($cpdb[$i][5] == $sessionid) {
captiveportal_disconnect($cpdb[$i],$radiusservers, $term_cause);
captiveportal_logportalauth($cpdb[$i][4],$cpdb[$i][3],$cpdb[$i][2],$logoutReason);
unset($cpdb[$i]);
break;
}
}
/* write database */
captiveportal_write_db($cpdb);
unlock($cplock);
?>
–-</eod<br>