diff options
author | Ermal <eri@pfsense.org> | 2012-12-17 11:41:24 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2012-12-17 11:41:24 +0000 |
commit | 1744a05823b73add76bf8fd1a4222a2626d2c400 (patch) | |
tree | b436b94178ca8794ba947664e6fbb532c52deedd | |
parent | 1272429c1b2b95a16be8af0469cac855cdbc1887 (diff) | |
download | pfsense-1744a05823b73add76bf8fd1a4222a2626d2c400.zip pfsense-1744a05823b73add76bf8fd1a4222a2626d2c400.tar.gz |
Cleanup the pipes as well when removing or operating on tables for hostnames/ips/mac
-rwxr-xr-x | usr/local/www/services_captiveportal_hostname.php | 4 | ||||
-rwxr-xr-x | usr/local/www/services_captiveportal_ip.php | 10 | ||||
-rwxr-xr-x | usr/local/www/services_captiveportal_ip_edit.php | 13 |
3 files changed, 19 insertions, 8 deletions
diff --git a/usr/local/www/services_captiveportal_hostname.php b/usr/local/www/services_captiveportal_hostname.php index b575b29..679e562 100755 --- a/usr/local/www/services_captiveportal_hostname.php +++ b/usr/local/www/services_captiveportal_hostname.php @@ -74,14 +74,14 @@ if ($_GET['act'] == "del" && !empty($cpzone)) { $ip = gethostbyname($ipent['ip']); if(is_ipaddr($ip)) { captiveportal_ipfw_set_context($zone); - mwexec("/sbin/ipfw table 3 delete {$ip}"); - mwexec("/sbin/ipfw table 4 delete {$ip}"); $ipfw = pfSense_ipfw_getTablestats($cpzone, 3, $ip); if (is_array($ipfw)) { captiveportal_free_dn_ruleno($ipfw['dnpipe']); pfSense_pipe_action("pipe delete {$ipfw['dnpipe']}"); pfSense_pipe_action("pipe delete " . ($ipfw['dnpipe']+1)); } + pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_DEL, 3, $ip); + pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_DEL, 4, $ip); } } diff --git a/usr/local/www/services_captiveportal_ip.php b/usr/local/www/services_captiveportal_ip.php index ee1b463..4d895cd 100755 --- a/usr/local/www/services_captiveportal_ip.php +++ b/usr/local/www/services_captiveportal_ip.php @@ -70,8 +70,14 @@ if ($_GET['act'] == "del") { if (!empty($ipent['sn'])) $ipent['ip'] .= "/{$ipent['sn']}"; captiveportal_ipfw_set_context($cpzone); - mwexec("/sbin/ipfw table 3 delete " . $ipent['ip']); - mwexec("/sbin/ipfw table 4 delete " . $ipent['ip']); + $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']}"); + pfSense_pipe_action("pipe delete " . ($ipfw['dnpipe']+1)); + } + pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_DEL, 3, $ipent['ip']); + pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_DEL, 4, $ipent['ip']); } unset($a_allowedips[$_GET['id']]); diff --git a/usr/local/www/services_captiveportal_ip_edit.php b/usr/local/www/services_captiveportal_ip_edit.php index 92642b8..763ca90 100755 --- a/usr/local/www/services_captiveportal_ip_edit.php +++ b/usr/local/www/services_captiveportal_ip_edit.php @@ -144,11 +144,16 @@ if ($_POST) { write_config(); if (isset($a_cp[$cpzone]['enable']) && is_module_loaded("ipfw.ko")) { - $rules = ""; - for ($i = 3; $i < 10; $i++) - $rules .= "table {$i} delete {$oldip}\n"; + $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']}"; + $rules .= "pipe delete " . ($ipfw['dnpipe']+1); + } $rules .= captiveportal_allowedip_configure_entry($ip); - file_put_contents("{$g['tmp_path']}/{$cpzone}_allowedip_tmp{$id}", $rules); + @file_put_contents("{$g['tmp_path']}/{$cpzone}_allowedip_tmp{$id}", $rules); captiveportal_ipfw_set_context($cpzone); mwexec("/sbin/ipfw -q {$g['tmp_path']}/{$cpzone}_allowedip_tmp{$id}"); @unlink("{$g['tmp_path']}/{$cpzone}_allowedip_tmp{$id}"); |