From fe7e987e36951d4a96640ba2790c21911e21b957 Mon Sep 17 00:00:00 2001 From: Ermal Date: Wed, 19 Dec 2012 22:16:47 +0000 Subject: Various fixes to removal of pipes --- etc/inc/captiveportal.inc | 12 ++++-------- usr/local/www/services_captiveportal_ip.php | 6 ++++-- usr/local/www/services_captiveportal_ip_edit.php | 13 ++++++++++--- usr/local/www/services_captiveportal_mac.php | 2 +- usr/local/www/services_captiveportal_mac_edit.php | 2 +- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc index 7f54121..25cea38 100644 --- a/etc/inc/captiveportal.inc +++ b/etc/inc/captiveportal.inc @@ -1371,15 +1371,11 @@ function captiveportal_free_dn_ruleno($ruleno) { } function captiveportal_get_dn_passthru_ruleno($value) { - global $config, $g, $cpzone; - - $cpcfg = $config['captiveportal'][$cpzone]; - if(!isset($cpcfg['enable'])) - return NULL; + global $config, $g; - $cpruleslck = lock("captiveportalrules{$cpzone}", LOCK_EX); - if (file_exists("{$g['vardb_path']}/captiveportal_{$cpzone}.rules")) { - $rules = unserialize(file_get_contents("{$g['vardb_path']}/captiveportal_{$cpzone}.rules")); + $cpruleslck = lock("captiveportalrulesdn", LOCK_EX); + if (file_exists("{$g['vardb_path']}/captiveportaldn.rules")) { + $rules = unserialize(file_get_contents("{$g['vardb_path']}/captiveportaldn.rules")); captiveportal_ipfw_set_context($cpzone); $ruleno = intval(`/sbin/ipfw show | /usr/bin/grep {$value} | /usr/bin/grep -v grep | /usr/bin/cut -d " " -f 5 | /usr/bin/head -n 1`); if ($rules[$ruleno]) { diff --git a/usr/local/www/services_captiveportal_ip.php b/usr/local/www/services_captiveportal_ip.php index 4d895cd..4aadde5 100755 --- a/usr/local/www/services_captiveportal_ip.php +++ b/usr/local/www/services_captiveportal_ip.php @@ -67,10 +67,12 @@ if ($_GET['act'] == "del") { $ipent = $a_allowedips[$_GET['id']]; if (isset($config['captiveportal'][$cpzone]['enable'])) { - if (!empty($ipent['sn'])) + if (!empty($ipent['sn'])) { + $ipfw = pfSense_ipfw_getTablestats($cpzone, 3, $ipent['ip'], $ipent['sn']); $ipent['ip'] .= "/{$ipent['sn']}"; + } else + $ipfw = pfSense_ipfw_getTablestats($cpzone, 3, $ipent['ip']); captiveportal_ipfw_set_context($cpzone); - $ipfw = pfSense_ipfw_getTablestats($cpzone, 3, $ipent['ip']); if (is_array($ipfw)) { captiveportal_free_dn_ruleno($ipfw['dnpipe']); pfSense_pipe_action("pipe delete {$ipfw['dnpipe']}"); diff --git a/usr/local/www/services_captiveportal_ip_edit.php b/usr/local/www/services_captiveportal_ip_edit.php index 763ca90..2b86051 100755 --- a/usr/local/www/services_captiveportal_ip_edit.php +++ b/usr/local/www/services_captiveportal_ip_edit.php @@ -128,15 +128,16 @@ if ($_POST) { $ip['bw_up'] = $_POST['bw_up']; if ($_POST['bw_down']) $ip['bw_down'] = $_POST['bw_down']; + $oldmask = ""; if (isset($id) && $a_allowedips[$id]) { $oldip = $a_allowedips[$id]['ip']; if (!empty($a_allowedips[$id]['sn'])) - $oldip .= "/{$a_allowedips[$id]['sn']}"; + $oldmask .= "/{$a_allowedips[$id]['sn']}"; $a_allowedips[$id] = $ip; } else { $oldip = $ip['ip']; if (!empty($ip['sn'])) - $oldip .= "/{$ip['sn']}"; + $oldmask .= "/{$ip['sn']}"; $a_allowedips[] = $ip; } allowedips_sort(); @@ -144,9 +145,15 @@ if ($_POST) { write_config(); if (isset($a_cp[$cpzone]['enable']) && is_module_loaded("ipfw.ko")) { + captiveportal_ipfw_set_context($cpzone); + if (is_ipaddr($oldip)) { + if (!empty($oldmask)) + $ipfw = pfSense_ipfw_getTablestats($cpzone, 3, $oldip, $oldmask); + else + $ipfw = pfSense_ipfw_getTablestats($cpzone, 3, $oldip); + } $rules = "table 3 delete {$oldip}"; $rules .= "table 4 delete {$oldip}"; - $ipfw = pfSense_ipfw_getTablestats($cpzone, 3, $oldip); if (is_array($ipfw)) { captiveportal_free_dn_ruleno($ipfw['dnpipe']); $rules .= "pipe delete {$ipfw['dnpipe']}"; diff --git a/usr/local/www/services_captiveportal_mac.php b/usr/local/www/services_captiveportal_mac.php index b9a8938..be4edae 100755 --- a/usr/local/www/services_captiveportal_mac.php +++ b/usr/local/www/services_captiveportal_mac.php @@ -130,7 +130,7 @@ if ($_GET['act'] == "del") { $ruleno = captiveportal_get_ipfw_passthru_ruleno($a_passthrumacs[$_GET['id']]['mac']); if ($ruleno) { captiveportal_free_ipfw_ruleno($ruleno); - $pipeno = captiveportal_get_dn_passthru_ruleno($_POST['delmac']); + $pipeno = captiveportal_get_dn_passthru_ruleno($a_passthrumacs[$_GET['id']]['mac']); if ($pipeno) captiveportal_free_dn_ruleno($pipeno); captiveportal_ipfw_set_context($cpzone); diff --git a/usr/local/www/services_captiveportal_mac_edit.php b/usr/local/www/services_captiveportal_mac_edit.php index 90c2ee9..1ab89c1 100755 --- a/usr/local/www/services_captiveportal_mac_edit.php +++ b/usr/local/www/services_captiveportal_mac_edit.php @@ -144,7 +144,7 @@ if ($_POST) { $ruleno = captiveportal_get_ipfw_passthru_ruleno($oldmac); if ($ruleno) { captiveportal_free_ipfw_ruleno($ruleno); - $pipeno = captiveportal_get_dn_passthru_ruleno($_POST['delmac']); + $pipeno = captiveportal_get_dn_passthru_ruleno($oldmac); if ($pipeno) { captiveportal_free_dn_ruleno($pipeno); $rules .= "pipe delete {$pipeno}\n"; -- cgit v1.1