.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
##|+PRIV
##|*IDENT=page-status-captiveportal
##|*NAME=Status: Captive Portal
##|*DESCR=Allow access to the 'Status: Captive Portal' page.
##|*MATCH=status_captiveportal.php*
##|-PRIV
require_once("guiconfig.inc");
require_once("functions.inc");
require_once("filter.inc");
require_once("shaper.inc");
require_once("captiveportal.inc");
function print_details($cpent) {
global $config, $cpzone, $cpzoneid;
printf("", convert_seconds_to_dhms($session_time));
/* print the time left before session timeout or session terminate time or the closer of the two if both are set */
if (!empty($cpent[7]) && !empty($cpent[9])) {
$session_time_left = min($cpent[0] + $cpent[7] - time(),$cpent[9] - time());
printf(gettext("Session time left: %s") . "
", convert_seconds_to_dhms($session_time_left));
} elseif (!empty($cpent[7]) && empty($cpent[9])) {
$session_time_left = $cpent[0] + $cpent[7] - time();
printf(gettext("Session time left: %s") . "
", convert_seconds_to_dhms($session_time_left));
} elseif (empty($cpent[7]) && !empty($cpent[9])) {
$session_time_left = $cpent[9] - time();
printf(gettext("Session time left: %s") . "
", convert_seconds_to_dhms($session_time_left));
}
/* print idle time and time left before disconnection if idle timeout is set */
if ($_GET['showact']) {
$last_act = captiveportal_get_last_activity($cpent[2], $cpent[3]);
/* if the user never sent traffic, set last activity time to the login time */
$last_act = $last_act ? $last_act : $cpent[0];
$idle_time = time() - $last_act;
printf(gettext("Idle time: %s") . "
", convert_seconds_to_dhms($idle_time));
if (!empty($cpent[8])) {
$idle_time_left = $last_act + $cpent[8] - time();
printf(gettext("Idle time left: %s") . "
", convert_seconds_to_dhms($idle_time_left));
}
}
/* print bytes sent and received, invert the values if reverse accounting is enabled */
$volume = getVolume($cpent[2], $cpent[3]);
$reverse = isset($config['captiveportal'][$cpzone]['reverseacct']) ? true : false;
if ($reverse) {
printf(gettext("Bytes sent: %s") . "
" . gettext("Bytes received: %s") . "\" data-html=\"true\">", format_bytes($volume['output_bytes']), format_bytes($volume['input_bytes']));
} else {
printf(gettext("Bytes sent: %s") . "
" . gettext("Bytes received: %s") . "\" data-html=\"true\">", format_bytes($volume['input_bytes']), format_bytes($volume['output_bytes']));
}
/* print username */
printf("%s", htmlspecialchars($cpent[4]));
}
$cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
$cpzone = strtolower($cpzone);
if (!is_array($config['captiveportal'])) {
$config['captiveportal'] = array();
}
$a_cp =& $config['captiveportal'];
if (count($a_cp) == 1) {
$cpzone = current(array_keys($a_cp));
}
/* If the zone does not exist, do not display the invalid zone */
if (!array_key_exists($cpzone, $a_cp)) {
$cpzone = "";
}
if (isset($cpzone) && !empty($cpzone) && isset($a_cp[$cpzone]['zoneid'])) {
$cpzoneid = $a_cp[$cpzone]['zoneid'];
}
if ($_GET['act'] == "del" && !empty($cpzone) && isset($cpzoneid) && isset($_GET['id'])) {
captiveportal_disconnect_client($_GET['id'], 6);
/* keep displaying last activity times */
if ($_GET['showact']) {
header("Location: status_captiveportal.php?zone={$cpzone}&showact=1");
} else {
header("Location: status_captiveportal.php?zone={$cpzone}");
}
exit;
}
if ($_GET['deleteall'] && !empty($cpzone) && isset($cpzoneid)) {
captiveportal_disconnect_all();
header("Location: status_captiveportal.php?zone={$cpzone}");
exit;
}
$pgtitle = array(gettext("Status"), gettext("Captive Portal"));
$pglinks = array("", "status_captiveportal.php");
if (!empty($cpzone)) {
$cpdb = captiveportal_read_db();
$pgtitle[] = htmlspecialchars($a_cp[$cpzone]['zone']);
$pglinks[] = "status_captiveportal.php?zone=" . $cpzone;
if (isset($config['voucher'][$cpzone]['enable'])) {
$pgtitle[] = gettext("Active Users");
$pglinks[] = "status_captiveportal.php?zone=" . $cpzone;
}
}
$shortcut_section = "captiveportal";
include("head.inc");
if (!empty($cpzone) && isset($config['voucher'][$cpzone]['enable'])):
$tab_array = array();
$tab_array[] = array(gettext("Active Users"), true, "status_captiveportal.php?zone=" . htmlspecialchars($cpzone));
$tab_array[] = array(gettext("Active Vouchers"), false, "status_captiveportal_vouchers.php?zone=" . htmlspecialchars($cpzone));
$tab_array[] = array(gettext("Voucher Rolls"), false, "status_captiveportal_voucher_rolls.php?zone=" . htmlspecialchars($cpzone));
$tab_array[] = array(gettext("Test Vouchers"), false, "status_captiveportal_test.php?zone=" . htmlspecialchars($cpzone));
$tab_array[] = array(gettext("Expire Vouchers"), false, "status_captiveportal_expire.php?zone=" . htmlspecialchars($cpzone));
display_top_tabs($tab_array);
endif;
// Load MAC-Manufacturer table
$mac_man = load_mac_manufacturer_table();
if (count($a_cp) > 1) {
$form = new Form(false);
$section = new Form_Section('Captive Portal Zone');
$zonelist = array("" => 'None');
foreach ($a_cp as $cpkey => $cp) {
$zonelist[$cpkey] = $cp['zone'];
}
$section->addInput(new Form_Select(
'zone',
'Display Zone',
$cpzone,
$zonelist
))->setOnchange('this.form.submit()');
$form->add($section);
print($form);
}
if (!empty($cpzone)): ?>
=gettext("IP address")?> | =gettext("MAC address")?> | =gettext("Username")?> | =gettext("Session start")?> | =gettext("Last activity")?> | =gettext("Actions")?> | |
---|---|---|---|---|---|---|
=htmlspecialchars($cpent[2])?> | " . htmlspecialchars($mac_man[$mac_hi]) . ""; } } ?> | =htmlspecialchars(date("m/d/Y H:i:s", $cpent[0]))?> | =htmlspecialchars(date("m/d/Y H:i:s", $cpent[0]))?> | "> |