summaryrefslogtreecommitdiffstats
path: root/usr
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2006-04-20 18:14:23 +0000
committerScott Ullrich <sullrich@pfsense.org>2006-04-20 18:14:23 +0000
commit82d0dfc4609f27e691e29e8a379fe8f43beff328 (patch)
tree704e143d4335921b384fabe75ea67318f47551a0 /usr
parent89c8e6d646a56ab8dad39327361113b41556d569 (diff)
downloadpfsense-82d0dfc4609f27e691e29e8a379fe8f43beff328.zip
pfsense-82d0dfc4609f27e691e29e8a379fe8f43beff328.tar.gz
MFC 11291
Ticket #893 Also address "bugs/features" in the new XML parser (should be safe to MFC - needs testing before commiting to RELENG_1 though, works in HEAD perfectly)
Diffstat (limited to 'usr')
-rwxr-xr-xusr/local/www/firewall_nat_out.php123
1 files changed, 61 insertions, 62 deletions
diff --git a/usr/local/www/firewall_nat_out.php b/usr/local/www/firewall_nat_out.php
index d3700ef..4320a9d 100755
--- a/usr/local/www/firewall_nat_out.php
+++ b/usr/local/www/firewall_nat_out.php
@@ -34,19 +34,15 @@
require("guiconfig.inc");
if (!is_array($config['nat']['advancedoutbound']['rule']))
- $config['nat']['advancedoutbound']['rule'] = array();
+ $config['nat']['advancedoutbound']['rule'] = array();
$a_out = &$config['nat']['advancedoutbound']['rule'];
-if ($_POST) {
- $pconfig = $_POST;
+if ($_POST['apply']) {
+ write_config();
- if ($_POST['apply']) {
-
- write_config();
-
- $retval = 0;
+ $retval = 0;
config_lock();
$retval |= filter_configure();
@@ -57,65 +53,61 @@ if ($_POST) {
else
$savemsg = $retval;
- if ($retval == 0) {
- if (file_exists($d_natconfdirty_path))
- unlink($d_natconfdirty_path);
- if (file_exists($d_filterconfdirty_path))
- unlink($d_filterconfdirty_path);
+ if ($retval == 0) {
+ unlink_if_exists($d_natconfdirty_path);
+ unlink_if_exists($d_filterconfdirty_path);
}
- }
}
-if (isset($_POST['save'])) {
- $was_enabled = isset($config['nat']['advancedoutbound']['enable']);
+if (isset($_POST['save']) && $_POST['save'] == "Save") {
/* mutually exclusive settings - if user wants advanced NAT, we don't help with IPSec */
- if ($_POST['ipsecpassthru'] == true) {
- $config['nat']['ipsecpassthru']['enable'] = true;
- $config['nat']['advancedoutbound']['enable'] = false;
- }
- if ($_POST['advancedoutbound'] == true) {
- $config['nat']['advancedoutbound']['enable'] = true;
- $config['nat']['ipsecpassthru']['enable'] = false;
- }
- if ($_POST['ipsecpassthru'] == false)
- $config['nat']['ipsecpassthru']['enable'] = false;
- if ($_POST['advancedoutbound'] == false)
- $config['nat']['advancedoutbound']['enable'] = false;
- if($was_enabled == false and $_POST['advancedoutbound'] <> "") {
- /*
- * user has enabled advanced outbound nat -- lets automatically create entries
- * for all of the interfaces to make life easier on the pip-o-chap
- */
- $a_out = &$config['nat']['advancedoutbound']['rule'];
- $ifdescrs = array('lan');
- for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++)
- $ifdescrs[] = "opt" . $j;
- foreach($ifdescrs as $if) {
- if($if <> "lan" and $if <> "wan") {
- /* interface is an optional. is it enabled? */
- if(!isset($config['interfaces'][$if]['enabled'])) {
- continue;
+ switch ($_POST['advancedoripsec']) {
+ case "ipsecpassthru":
+ $config['nat']['ipsecpassthru']['enable'] = true;
+ unset($config['nat']['advancedoutbound']['enable']);
+ if(count($config['nat']['advancedoutbound']['rule']) == 0)
+ unset($config['nat']['advancedoutbound']['rule']);
+ break;
+ case "advancedoutboundnat":
+ $was_enabled = isset($config['nat']['advancedoutbound']['enable']);
+ $config['nat']['advancedoutbound']['enable'] = true;
+ unset($config['nat']['ipsecpassthru']['enable']);
+ if($was_enabled == false) {
+ /*
+ * user has enabled advanced outbound nat -- lets automatically create entries
+ * for all of the interfaces to make life easier on the pip-o-chap
+ */
+ $ifdescrs = array('lan');
+ for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++)
+ $ifdescrs[] = "opt" . $j;
+ foreach($ifdescrs as $if) {
+ if($if <> "lan" and $if <> "wan") {
+ /* interface is an optional. is it enabled? */
+ if(!isset($config['interfaces'][$if]['enabled'])) {
+ continue;
+ }
}
+ $natent = array();
+ $osn = gen_subnet($config['interfaces'][$if]['ipaddr'],
+ $config['interfaces'][$if]['subnet']);
+ $natent['source']['network'] = $osn . "/" . $config['interfaces'][$if]['subnet'];
+ $natent['sourceport'] = "";
+ $int_description = $config['interfaces'][$if]['descr'];
+ if($if == "lan")
+ $int_description = "LAN";
+ $natent['descr'] = "Auto created rule for {$int_description}";
+ $natent['target'] = "";
+ $natent['interface'] = "wan";
+ $natent['destination']['any'] = true;
+ $natent['natport'] = "";
+ $a_out[] = $natent;
}
- $natent = array();
- $osn = gen_subnet($config['interfaces'][$if]['ipaddr'],
- $config['interfaces'][$if]['subnet']);
- $natent['source']['network'] = $osn . "/" . $config['interfaces'][$if]['subnet'];
- $natent['sourceport'] = "";
- $int_description = $config['interfaces'][$if]['descr'];
- if($if == "lan")
- $int_description = "LAN";
- $natent['descr'] = "Auto created rule for {$int_description}";
- $natent['target'] = "";
- $natent['interface'] = "wan";
- $natent['destination']['any'] = true;
- $natent['natport'] = "";
- $a_out[] = $natent;
- }
- $savemsg = "Default rules for each interface have been created.";
- }
+ $savemsg = "Default rules for each interface have been created.";
+ }
+ break;
+ }
write_config();
touch($d_natconfdirty_path);
header("Location: firewall_nat_out.php");
@@ -128,6 +120,9 @@ if (isset($_POST['del_x'])) {
foreach ($_POST['rule'] as $rulei) {
unset($a_out[$rulei]);
}
+ if (count($a_out) == 0)
+ unset($config['nat']['advancedoutbound']);
+
write_config();
touch($d_natconfdirty_path);
header("Location: firewall_nat_out.php");
@@ -170,7 +165,11 @@ if (isset($_POST['del_x'])) {
if (!in_array($i, $_POST['rule']))
$a_out_new[] = $a_out[$i];
}
- $a_out = $a_out_new;
+ if (count($a_out_new) > 0)
+ $a_out = $a_out_new;
+ else
+ unset($config['nat']['advancedoutbound']);
+
write_config();
touch($d_natconfdirty_path);
header("Location: firewall_nat_out.php");
@@ -208,13 +207,13 @@ include("head.inc");
<table class="tabcont" width="100%" border="0" cellpadding="6" cellspacing="0">
<tr>
<td class="vtable"><p>
- <input name="ipsecpassthru" type="checkbox" id="ipsecpassthru" value="yes" onClick="document.iform.advancedoutbound.checked=false" <?php if (isset($config['nat']['ipsecpassthru']['enable'])) echo "checked";?>>
+ <input name="advancedoripsec" type="radio" id="ipsecpassthru" value="ipsecpassthru" <?php if (isset($config['nat']['ipsecpassthru']['enable'])) echo "checked";?>>
<strong>Enable IPSec passthru</strong></p>
</td>
</tr>
<tr>
<td class="vtable"><p>
- <input name="advancedoutbound" type="checkbox" id="advancedoutbound" value="yes" onClick="document.iform.ipsecpassthru.checked=false" <?php if (isset($config['nat']['advancedoutbound']['enable'])) echo "checked";?>>
+ <input name="advancedoripsec" type="radio" id="advancedoutbound" value="advancedoutboundnat" <?php if (isset($config['nat']['advancedoutbound']['enable'])) echo "checked";?>>
<strong>Enable advanced outbound NAT</strong></p></td>
</tr>
<tr>
OpenPOWER on IntegriCloud