diff options
-rw-r--r-- | etc/inc/captiveportal.inc | 44 | ||||
-rwxr-xr-x | usr/local/captiveportal/index.php | 5 |
2 files changed, 12 insertions, 37 deletions
diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc index 3e888c7..0a7cd62 100644 --- a/etc/inc/captiveportal.inc +++ b/etc/inc/captiveportal.inc @@ -953,10 +953,6 @@ function captiveportal_passthrumac_configure_entry($macent) { $rules = "add {$ruleno} pipe {$pipeup} ip from any to any MAC any {$macent['mac']}\n"; $ruleno++; $rules .= "add {$ruleno} pipe {$pipedown} ip from any to any MAC {$macent['mac']} any\n"; - } else { - $blockedmacs = captiveportal_read_blockedmacs_db(); - $blockedmacs[] = $macent['mac']; - captiveportal_write_blockedmacs_db($blockedmacs); } return $rules; @@ -983,12 +979,6 @@ function captiveportal_passthrumac_delete_entry($macent) { $rules .= "pipe delete " . $pipeno . "\n"; $rules .= "pipe delete " . ++$pipeno . "\n"; } - } else { - $blockedmacs = captiveportal_read_blockedmacs_db(); - foreach ($blockedmacs as $idx => $blockedmac) - if ($blockedmac == $macent['mac']) - unset($blockedmacs[$idx]); - captiveportal_write_blockedmacs_db($blockedmacs); } return $rules; @@ -999,7 +989,6 @@ function captiveportal_passthrumac_configure($lock = false) { $rules = ""; - captiveportal_zap_blockedmacs_db(); if (is_array($config['captiveportal'][$cpzone]['passthrumac'])) foreach ($config['captiveportal'][$cpzone]['passthrumac'] as $macent) $rules .= captiveportal_passthrumac_configure_entry($macent); @@ -2097,33 +2086,22 @@ function captiveportal_write_usedmacs_db($usedmacs) { unlock($cpumaclck); } -function captiveportal_read_blockedmacs_db() { - global $g, $cpzone; - - $cpumaclck = lock("captiveblockedmacs{$cpzone}"); - if (file_exists("{$g['vardb_path']}/captiveportal_blockedmacs_{$cpzone}.db")) { - $blockedmacs = file("{$g['vardb_path']}/captiveportal_blockedmacs_{$cpzone}.db", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - if (!$blockedmacs) - $blockedmacs = array(); - } else - $blockedmacs = array(); +function captiveportal_blocked_mac($mac) { + global $config, $g, $cpzone; - unlock($cpumaclck); - return $blockedmacs; -} + if (empty($mac) || !is_macaddr($mac)) + return false; -function captiveportal_write_blockedmacs_db($blockedmacs) { - global $g, $cpzone; + if (!is_array($config['captiveportal'][$cpzone]['passthrumac'])) + return false; - $cpumaclck = lock("captiveblockedmacs{$cpzone}", LOCK_EX); - @file_put_contents("{$g['vardb_path']}/captiveportal_blockedmacs_{$cpzone}.db", implode("\n", $blockedmacs)); - unlock($cpumaclck); -} + foreach ($config['captiveportal'][$cpzone]['passthrumac'] as $passthrumac) + if (($passthrumac['action'] == 'block') && + ($passthrumac['mac'] == strtolower($mac))) + return true; -function captiveportal_zap_blockedmacs_db() { - global $g, $cpzone; + return false; - @unlink_if_exists("{$g['vardb_path']}/captiveportal_blockedmacs_{$cpzone}.db"); } function captiveportal_send_server_accounting($off = false) { diff --git a/usr/local/captiveportal/index.php b/usr/local/captiveportal/index.php index b7c708c..a97c33b 100755 --- a/usr/local/captiveportal/index.php +++ b/usr/local/captiveportal/index.php @@ -105,9 +105,6 @@ if ($macfilter || $passthrumac) { unset($tmpres); } -/* Get blocked macs */ -$blockedmacs = array_flip(captiveportal_read_blockedmacs_db()); - /* find out if we need RADIUS + RADIUSMAC or not */ if (file_exists("{$g['vardb_path']}/captiveportal_radius_{$cpzone}.db")) { $radius_enable = TRUE; @@ -139,7 +136,7 @@ setTimeout('window.close();',5000) ; EOD; captiveportal_disconnect_client($_POST['logout_id']); -} else if ($macfilter && $clientmac && isset($blockedmacs[$clientmac])) { +} else if ($macfilter && $clientmac && captiveportal_blocked_mac($clientmac)) { captiveportal_logportalauth($clientmac,$clientmac,$clientip,"Blocked MAC address"); if (!empty($cpcfg['blockedmacsurl'])) portal_reply_page($cpcfg['blockedmacsurl'], "redir"); |