summaryrefslogtreecommitdiffstats
path: root/src/etc/inc/captiveportal.inc
diff options
context:
space:
mode:
Diffstat (limited to 'src/etc/inc/captiveportal.inc')
-rw-r--r--src/etc/inc/captiveportal.inc26
1 files changed, 26 insertions, 0 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;
OpenPOWER on IntegriCloud