diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/etc/inc/captiveportal.inc | 26 | ||||
-rw-r--r-- | src/usr/local/www/status_captiveportal.php | 39 |
2 files changed, 51 insertions, 14 deletions
diff --git a/src/etc/inc/captiveportal.inc b/src/etc/inc/captiveportal.inc index 0cb84bb..b35dc57 100644 --- a/src/etc/inc/captiveportal.inc +++ b/src/etc/inc/captiveportal.inc @@ -995,6 +995,32 @@ function captiveportal_disconnect_client($sessionid, $term_cause = 1, $logoutRea } } +/* remove all clients */ +function captiveportal_disconnect_all($term_cause = 6, $logoutReason = "DISCONNECT") { + global $g, $config, $cpzone, $cpzoneid; + + $radiussrvs = captiveportal_get_radius_servers(); + $cpdb = captiveportal_read_db(); + + $unsetindexes = array(); + + foreach ($cpdb as $cpentry) { + if (empty($cpentry[11])) { + $cpentry[11] = 'first'; + } + $radiusservers = $radiussrvs[$cpentry[11]]; + + captiveportal_disconnect($cpentry, $radiusservers, $term_cause); + captiveportal_logportalauth($cpentry[4], $cpentry[3], $cpentry[2], $logoutReason); + $unsetindexes[] = $cpentry[5]; + } + unset($cpdb); + + if (!empty($unsetindexes)) { + captiveportal_remove_entries($unsetindexes); + } +} + /* send RADIUS acct stop for all current clients */ function captiveportal_radius_stop_all() { global $config, $cpzone; diff --git a/src/usr/local/www/status_captiveportal.php b/src/usr/local/www/status_captiveportal.php index 2d636be..2bc6733 100644 --- a/src/usr/local/www/status_captiveportal.php +++ b/src/usr/local/www/status_captiveportal.php @@ -144,6 +144,17 @@ if (isset($cpzone) && !empty($cpzone) && isset($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; } @@ -291,30 +302,30 @@ else: endif; ?> - -<form action="status_captiveportal.php" method="get" style="margin: 14px;"> +<nav class="action-buttons"> <?php if (!empty($cpzone)): if ($_GET['showact']): ?> - <input type="hidden" name="showact" value="0" /> - <button type="submit" class="btn btn-info" value="<?=gettext("Don't show last activity")?>"> - <i class="fa fa-minus-circle icon-embed-btn"></i> - <?=gettext("Hide Last Activity")?> - </button> + <a href="status_captiveportal.php?zone=<?=htmlspecialchars($cpzone)?>&showact=0" role="button" class="btn btn-info" title="<?=gettext("Don't show last activity")?>"> + <i class="fa fa-minus-circle icon-embed-btn"></i> + <?=gettext("Hide Last Activity")?> + </a> <?php else: ?> - <input type="hidden" name="showact" value="1" /> - <button type="submit" class="btn btn-info" value="<?=gettext("Show last activity")?>"> - <i class="fa fa-plus-circle icon-embed-btn"></i> - <?=gettext("Show Last Activity")?> - </button> + <a href="status_captiveportal.php?zone=<?=htmlspecialchars($cpzone)?>&showact=1" role="button" class="btn btn-info" title="<?=gettext("Show last activity")?>"> + <i class="fa fa-plus-circle icon-embed-btn"></i> + <?=gettext("Show Last Activity")?> + </a> <?php endif; ?> - <input type="hidden" name="zone" value="<?=htmlspecialchars($cpzone)?>" /> + <a href="status_captiveportal.php?zone=<?=htmlspecialchars($cpzone)?>&deleteall=1" role="button" class="btn btn-danger" title="<?=gettext("Disconnect all active users")?>"> + <i class="fa fa-trash icon-embed-btn"></i> + <?=gettext("Disconnect All Users")?> + </a> <?php endif; ?> -</form> +</nav> <?php include("foot.inc"); |