summaryrefslogtreecommitdiffstats
path: root/usr/local/www/services_captiveportal.php
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2013-02-13 18:49:57 +0000
committerErmal <eri@pfsense.org>2013-02-13 18:49:57 +0000
commit13e64b47aa969699c9d5a1fab5180925ac85ebe9 (patch)
treeaea03b4183e6f5266575a5dad864ce8d9cf3ecb7 /usr/local/www/services_captiveportal.php
parente6d5af4b003982b47a387be1a4a668ff5ce09b9e (diff)
downloadpfsense-13e64b47aa969699c9d5a1fab5180925ac85ebe9.zip
pfsense-13e64b47aa969699c9d5a1fab5180925ac85ebe9.tar.gz
Remove interfaces that have been unselected from CP config properly
Diffstat (limited to 'usr/local/www/services_captiveportal.php')
-rwxr-xr-xusr/local/www/services_captiveportal.php12
1 files changed, 11 insertions, 1 deletions
diff --git a/usr/local/www/services_captiveportal.php b/usr/local/www/services_captiveportal.php
index b465baa..8ac50c4 100755
--- a/usr/local/www/services_captiveportal.php
+++ b/usr/local/www/services_captiveportal.php
@@ -237,7 +237,7 @@ if ($_POST) {
if ($cp['zoneid'] == $newcp['zoneid'] && $keycpzone != $cpzone)
$newcp['zoneid'] += 2; /* Resreve space for SSL config if needed */
}
- $oldifaces = $newcp['interface'];
+ $oldifaces = explode(",", $newcp['interface']);
if (is_array($_POST['cinterface']))
$newcp['interface'] = implode(",", $_POST['cinterface']);
$newcp['maxproc'] = $_POST['maxproc'];
@@ -325,7 +325,17 @@ if ($_POST) {
write_config();
+ /* Clear up unselected interfaces */
+ $newifaces = explode(",", $newcp['interface']);
+ $toremove = array_diff($oldifaces, $newifaces);
+ if (!empty($toremove)) {
+ foreach ($toremove as $removeif) {
+ $removeif = get_real_interface($removeif);
+ mwexec("/usr/local/sbin/ipfw_context -d {$cpzone} -x {$removeif}");
+ }
+ }
captiveportal_configure_zone($newcp);
+ unset($newcp, $newifaces, $toremove);
filter_configure();
header("Location: services_captiveportal_zones.php");
exit;
OpenPOWER on IntegriCloud