diff options
Diffstat (limited to 'usr/local/www/services_captiveportal_mac.php')
-rwxr-xr-x | usr/local/www/services_captiveportal_mac.php | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/usr/local/www/services_captiveportal_mac.php b/usr/local/www/services_captiveportal_mac.php index a98138a..bb68a36 100755 --- a/usr/local/www/services_captiveportal_mac.php +++ b/usr/local/www/services_captiveportal_mac.php @@ -48,7 +48,7 @@ $cpzone = $_GET['zone']; if (isset($_POST['zone'])) $cpzone = $_POST['zone']; -if (empty($cpzone)) { +if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) { header("Location: services_captiveportal_zones.php"); exit; } @@ -104,9 +104,14 @@ if ($_POST) { if ($found == true) { $ruleno = captiveportal_get_ipfw_passthru_ruleno($_POST['delmac']); if ($ruleno) { - captiveportal_free_ipfw_ruleno($ruleno, true); - captiveportal_ipfw_set_context($cpzone); - mwexec("/sbin/ipfw delete {$ruleno}; /sbin/ipfw delete " . ++$ruleno); + captiveportal_free_ipfw_ruleno($ruleno); + $pipeno = captiveportal_get_dn_passthru_ruleno($_POST['delmac']); + if ($pipeno) + captiveportal_free_dn_ruleno($pipeno); + if (!empty($pipeno)) + mwexec("/sbin/ipfw -x {$cpzone} -q delete {$ruleno}; /sbin/ipfw -x {$cpzone} -q delete " . ++$ruleno . "; /sbin/ipfw -q pipe delete {$pipeno}; /sbin/ipfw -q pipe delete " . (++$pipeno)); + else + mwexec("/sbin/ipfw -x {$cpzone} -q delete {$ruleno}; /sbin/ipfw -x {$cpzone} -q delete " . ++$ruleno); } unset($a_passthrumacs[$idx]); write_config(); @@ -123,9 +128,14 @@ if ($_GET['act'] == "del") { if ($a_passthrumacs[$_GET['id']]) { $ruleno = captiveportal_get_ipfw_passthru_ruleno($a_passthrumacs[$_GET['id']]['mac']); if ($ruleno) { - captiveportal_ipfw_set_context($cpzone); captiveportal_free_ipfw_ruleno($ruleno); - mwexec("/sbin/ipfw delete {$ruleno}; /sbin/ipfw delete " . ++$ruleno); + $pipeno = captiveportal_get_dn_passthru_ruleno($a_passthrumacs[$_GET['id']]['mac']); + if ($pipeno) + captiveportal_free_dn_ruleno($pipeno); + if (!empty($pipeno)) + mwexec("/sbin/ipfw -x {$cpzone} -q delete {$ruleno}; /sbin/ipfw -x {$cpzone} -q delete " . ++$ruleno . "; /sbin/ipfw -q pipe delete {$pipeno}; /sbin/ipfw -q pipe delete " . (++$pipeno)); + else + mwexec("/sbin/ipfw -x {$cpzone} -q delete {$ruleno}; /sbin/ipfw -x {$cpzone} -q delete " . ++$ruleno); } unset($a_passthrumacs[$_GET['id']]); write_config(); |