summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Botelho <garga@FreeBSD.org>2013-09-14 10:54:08 -0300
committerRenato Botelho <garga@FreeBSD.org>2013-09-14 10:54:08 -0300
commit81ce28d87039d21c8b03986362d9f2ccffe6d407 (patch)
tree9b72f0fc3a08c742786060919f1b822016fe135c
parent01ba8ec63d4c99ed8fd1e3085c9fa960aa6d3a7b (diff)
downloadpfsense-81ce28d87039d21c8b03986362d9f2ccffe6d407.zip
pfsense-81ce28d87039d21c8b03986362d9f2ccffe6d407.tar.gz
Remove unecessary blockedmacs db and read it directly from config
-rw-r--r--etc/inc/captiveportal.inc44
-rwxr-xr-xusr/local/captiveportal/index.php5
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");
OpenPOWER on IntegriCloud