diff options
author | Renato Botelho <garga@FreeBSD.org> | 2013-11-12 17:46:43 -0200 |
---|---|---|
committer | Renato Botelho <garga@FreeBSD.org> | 2013-11-12 17:46:43 -0200 |
commit | 858f313d76e0003ecc940056e5c2f9a1fbb681eb (patch) | |
tree | e879226da07f97bb54a0521ddef892cbd3c7de0f /usr/local/www/firewall_nat_out.php | |
parent | 7facbef711159b67ae6666c8cd44f21c45c8102b (diff) | |
download | pfsense-858f313d76e0003ecc940056e5c2f9a1fbb681eb.zip pfsense-858f313d76e0003ecc940056e5c2f9a1fbb681eb.tar.gz |
Fix indent, whitespaces and a close a couple of unbalanced tags
Diffstat (limited to 'usr/local/www/firewall_nat_out.php')
-rwxr-xr-x | usr/local/www/firewall_nat_out.php | 604 |
1 files changed, 336 insertions, 268 deletions
diff --git a/usr/local/www/firewall_nat_out.php b/usr/local/www/firewall_nat_out.php index 191ba1a..d70e3da 100755 --- a/usr/local/www/firewall_nat_out.php +++ b/usr/local/www/firewall_nat_out.php @@ -1,34 +1,34 @@ <?php /* $Id$ */ /* - firewall_nat_out.php - Copyright (C) 2004 Scott Ullrich - All rights reserved. - - originally part of m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. + firewall_nat_out.php + Copyright (C) 2004 Scott Ullrich + All rights reserved. + + originally part of m0n0wall (http://m0n0.ch/wall) + Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ /* pfSense_MODULE: nat @@ -68,20 +68,18 @@ if ($_POST['apply']) { if ($retval == 0) { clear_subsystem_dirty('natconf'); clear_subsystem_dirty('filter'); - } + } } - - if (isset($_POST['save']) && $_POST['save'] == "Save") { /* mutually exclusive settings - if user wants advanced NAT, we don't generate automatic rules */ switch ($_POST['advancedoripsec']) { case "ipsecpassthru": - $config['nat']['ipsecpassthru']['enable'] = true; - unset($config['nat']['advancedoutbound']['enable']); + $config['nat']['ipsecpassthru']['enable'] = true; + unset($config['nat']['advancedoutbound']['enable']); break; case "advancedoutboundnat": - if (!isset($config['nat']['advancedoutbound']['enable'])) { + if (!isset($config['nat']['advancedoutbound']['enable'])) { $config['nat']['advancedoutbound']['enable'] = true; // if there are already AON rules configured, don't generate default ones if(!empty($a_out)) @@ -92,7 +90,7 @@ if (isset($_POST['save']) && $_POST['save'] == "Save") { * for all of the interfaces to make life easier on the pip-o-chap */ $ifdescrs = get_configured_interface_with_descr(); - + foreach($ifdescrs as $if => $ifdesc) { if (!interface_has_gateway($if)) continue; @@ -223,8 +221,8 @@ if (isset($_POST['save']) && $_POST['save'] == "Save") { } if (write_config()) mark_subsystem_dirty('natconf'); - header("Location: firewall_nat_out.php"); - exit; + header("Location: firewall_nat_out.php"); + exit; } if ($_GET['act'] == "del") { @@ -238,16 +236,16 @@ if ($_GET['act'] == "del") { } if (isset($_POST['del_x'])) { - /* delete selected rules */ - if (is_array($_POST['rule']) && count($_POST['rule'])) { - foreach ($_POST['rule'] as $rulei) { - unset($a_out[$rulei]); - } + /* delete selected rules */ + if (is_array($_POST['rule']) && count($_POST['rule'])) { + foreach ($_POST['rule'] as $rulei) { + unset($a_out[$rulei]); + } if (write_config()) mark_subsystem_dirty('natconf'); - header("Location: firewall_nat_out.php"); - exit; - } + header("Location: firewall_nat_out.php"); + exit; + } } else if ($_GET['act'] == "toggle") { if ($a_out[$_GET['id']]) { @@ -261,54 +259,53 @@ if (isset($_POST['del_x'])) { exit; } } else { - /* yuck - IE won't send value attributes for image buttons, while Mozilla does - so we use .x/.y to find move button clicks instead... */ - unset($movebtn); - foreach ($_POST as $pn => $pd) { - if (preg_match("/move_(\d+)_x/", $pn, $matches)) { - $movebtn = $matches[1]; - break; - } - } - /* move selected rules before this rule */ - if (isset($movebtn) && is_array($_POST['rule']) && count($_POST['rule'])) { - $a_out_new = array(); - - /* copy all rules < $movebtn and not selected */ - for ($i = 0; $i < $movebtn; $i++) { - if (!in_array($i, $_POST['rule'])) - $a_out_new[] = $a_out[$i]; - } + /* yuck - IE won't send value attributes for image buttons, while Mozilla does - so we use .x/.y to find move button clicks instead... */ + unset($movebtn); + foreach ($_POST as $pn => $pd) { + if (preg_match("/move_(\d+)_x/", $pn, $matches)) { + $movebtn = $matches[1]; + break; + } + } + /* move selected rules before this rule */ + if (isset($movebtn) && is_array($_POST['rule']) && count($_POST['rule'])) { + $a_out_new = array(); + + /* copy all rules < $movebtn and not selected */ + for ($i = 0; $i < $movebtn; $i++) { + if (!in_array($i, $_POST['rule'])) + $a_out_new[] = $a_out[$i]; + } - /* copy all selected rules */ - for ($i = 0; $i < count($a_out); $i++) { - if ($i == $movebtn) - continue; - if (in_array($i, $_POST['rule'])) - $a_out_new[] = $a_out[$i]; - } + /* copy all selected rules */ + for ($i = 0; $i < count($a_out); $i++) { + if ($i == $movebtn) + continue; + if (in_array($i, $_POST['rule'])) + $a_out_new[] = $a_out[$i]; + } - /* copy $movebtn rule */ - if ($movebtn < count($a_out)) - $a_out_new[] = $a_out[$movebtn]; + /* copy $movebtn rule */ + if ($movebtn < count($a_out)) + $a_out_new[] = $a_out[$movebtn]; - /* copy all rules > $movebtn and not selected */ - for ($i = $movebtn+1; $i < count($a_out); $i++) { - if (!in_array($i, $_POST['rule'])) - $a_out_new[] = $a_out[$i]; - } - if (count($a_out_new) > 0) + /* copy all rules > $movebtn and not selected */ + for ($i = $movebtn+1; $i < count($a_out); $i++) { + if (!in_array($i, $_POST['rule'])) + $a_out_new[] = $a_out[$i]; + } + if (count($a_out_new) > 0) $a_out = $a_out_new; else unset($config['nat']['advancedoutbound']); if (write_config()) mark_subsystem_dirty('natconf'); - header("Location: firewall_nat_out.php"); - exit; - } + header("Location: firewall_nat_out.php"); + exit; + } } - $pgtitle = array(gettext("Firewall"),gettext("NAT"),gettext("Outbound")); include("head.inc"); @@ -317,38 +314,51 @@ include("head.inc"); <?php include("fbegin.inc"); ?> <form action="firewall_nat_out.php" method="post" name="iform"> <script type="text/javascript" language="javascript" src="/javascript/row_toggle.js"></script> -<?php if ($savemsg) print_info_box($savemsg); ?> -<?php if (is_subsystem_dirty('natconf')): ?> -<?php print_info_box_np(gettext("The NAT configuration has been changed.")."<br/>".gettext("You must apply the changes in order for them to take effect."));?><br/> -<?php endif; ?> -<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="firwall nat outbound"> <tr><td> <?php - $tab_array = array(); - $tab_array[] = array(gettext("Port Forward"), false, "firewall_nat.php"); - $tab_array[] = array(gettext("1:1"), false, "firewall_nat_1to1.php"); - $tab_array[] = array(gettext("Outbound"), true, "firewall_nat_out.php"); - $tab_array[] = array(gettext("NPt"), false, "firewall_nat_npt.php"); - display_top_tabs($tab_array); +if ($savemsg) + print_info_box($savemsg); +if (is_subsystem_dirty('natconf')) + print_info_box_np(gettext("The NAT configuration has been changed.")."<br/>".gettext("You must apply the changes in order for them to take effect.")); ?> - </td></tr> - <tr> - <td> - <div id="mainarea"> - <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0" summary="main area"> - <tr><td align="right"><b><?=gettext("Mode:"); ?></b></td> - <td> - <input name="advancedoripsec" type="radio" id="ipsecpassthru" value="ipsecpassthru" <?php if (isset($config['nat']['ipsecpassthru']['enable'])) echo "checked=\"checked\"";?> /> - <strong><?=gettext("Automatic outbound NAT rule generation"); ?><br/> <?=gettext("(IPsec passthrough included)");?></strong> - </td> - - <td> - <input name="advancedoripsec" type="radio" id="advancedoutbound" value="advancedoutboundnat" <?php if (isset($config['nat']['advancedoutbound']['enable'])) echo "checked=\"checked\"";?> /> - <strong><?=gettext("Manual Outbound NAT rule generation") . "<br/> " . gettext("(AON - Advanced Outbound NAT)");?></strong></td> - <td valign="middle" align="left"> - <input name="save" type="submit" class="formbtn" value="<?=gettext("Save");?>" /> - <br/> - </td> - </tr> +<br/> +<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="firwall nat outbound"> + <tr><td> +<?php + $tab_array = array(); + $tab_array[] = array(gettext("Port Forward"), false, "firewall_nat.php"); + $tab_array[] = array(gettext("1:1"), false, "firewall_nat_1to1.php"); + $tab_array[] = array(gettext("Outbound"), true, "firewall_nat_out.php"); + $tab_array[] = array(gettext("NPt"), false, "firewall_nat_npt.php"); + display_top_tabs($tab_array); +?> + </td></tr> + <tr> + <td> + <div id="mainarea"> + <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0" summary="main area"> + <tr> + <td align="right"><b><?=gettext("Mode:"); ?></b></td> + <td> + + <input name="advancedoripsec" type="radio" id="ipsecpassthru" value="ipsecpassthru" <?php if (isset($config['nat']['ipsecpassthru']['enable'])) echo "checked=\"checked\"";?> /> + <strong> + <?=gettext("Automatic outbound NAT rule generation"); ?><br/> + <?=gettext("(IPsec passthrough included)");?> + </strong> + </td> + <td> + + <input name="advancedoripsec" type="radio" id="advancedoutbound" value="advancedoutboundnat" <?php if (isset($config['nat']['advancedoutbound']['enable'])) echo "checked=\"checked\"";?> /> + <strong> + <?=gettext("Manual Outbound NAT rule generation"); ?><br/> + <?=gettext("(AON - Advanced Outbound NAT)");?> + </strong> + </td> + <td valign="middle" align="left"> + <input name="save" type="submit" class="formbtn" value="<?=gettext("Save");?>" /> + <br/> + </td> + </tr> <tr> <td colspan="5"> @@ -359,165 +369,223 @@ include("head.inc"); </td> </tr> - </table> - <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0" summary="mappings"> + </table> + <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0" summary="mappings"> <tr><td colspan="5"><b> <?=gettext("Mappings:"); ?></b></td></tr> <tr><td> </td></tr> - <tr id="frheader"> - <td width="3%" class="list"> </td> - <td width="3%" class="list"> </td> - <td width="10%" class="listhdrr"><?=gettext("Interface");?></td> - <td width="15%" class="listhdrr"><?=gettext("Source");?></td> - <td width="10%" class="listhdrr"><?=gettext("Source Port");?></td> - <td width="15%" class="listhdrr"><?=gettext("Destination");?></td> - <td width="10%" class="listhdrr"><?=gettext("Destination Port");?></td> - <td width="15%" class="listhdrr"><?=gettext("NAT Address");?></td> - <td width="10%" class="listhdrr"><?=gettext("NAT Port");?></td> - <td width="10%" class="listhdrr"><?=gettext("Static Port");?></td> - <td width="25%" class="listhdr"><?=gettext("Description");?></td> - <td width="5%" class="list"> - <table border="0" cellspacing="0" cellpadding="1" summary="add"> - <tr> - <td width="17"></td> - <td><a href="firewall_nat_out_edit.php?after=-1"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new mapping");?>" alt="add" /></a></td> - </tr> - </table> - </td> - </tr> - <?php $nnats = $i = 0; foreach ($a_out as $natent): ?> - <tr valign="top" id="fr<?=$nnats;?>"> - <td class="listt"><input type="checkbox" id="frc<?=$nnats;?>" name="rule[]" value="<?=$i;?>" onclick="fr_bgcolor('<?=$nnats;?>')" style="margin: 0; padding: 0; width: 15px; height: 15px;" /></td> - <td class="listt" align="center"> - <?php - $iconfn = "pass"; - if (isset($natent['disabled'])) { - $textss = "<span class=\"gray\">"; - $textse = "</span>"; - $iconfn .= "_d"; - } else { - $textss = $textse = ""; - } - ?> - <a href="?act=toggle&id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_<?=$iconfn;?>.gif" width="11" height="11" border="0" title="<?=gettext("click to toggle enabled/disabled status");?>" alt="icon" /></a> - </td> - <td class="listlr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> - <?php echo htmlspecialchars(convert_friendly_interface_to_friendly_descr($natent['interface'])); ?> - - </td> - <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> - <?=$natent['source']['network'];?> - </td> - <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> - <?php - echo ($natent['protocol']) ? $natent['protocol'] . '/' : "" ; - if (!$natent['sourceport']) - echo "*"; - else - echo $natent['sourceport']; - ?> - </td> - <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> - <?php - if (isset($natent['destination']['any'])) - echo "*"; - else { - if (isset($natent['destination']['not'])) - echo "! "; - echo $natent['destination']['address']; - } - ?> - </td> - <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> - <?php - echo ($natent['protocol']) ? $natent['protocol'] . '/' : "" ; - if (!$natent['dstport']) - echo "*"; - else - echo $natent['dstport']; - ?> - </td> - <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> - <?php - if (isset($natent['nonat'])) - echo '<I>NO NAT</I>'; - elseif (!$natent['target']) - echo htmlspecialchars(convert_friendly_interface_to_friendly_descr($natent['interface'])) . " address"; - elseif ($natent['target'] == "other-subnet") - echo $natent['targetip'] . '/' . $natent['targetip_subnet']; - else - echo $natent['target']; - ?> - </td> - <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> - <?php - if (!$natent['natport']) - echo "*"; - else - echo $natent['natport']; - ?> - </td> - <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';" align="center"> - <?php - if(isset($natent['staticnatport'])) - echo gettext("YES"); - else - echo gettext("NO"); - ?> - </td> - <td class="listbg" onclick="fr_toggle(<?=$nnats;?>)" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> - <?=htmlspecialchars($natent['descr']);?> - </td> - <td class="list nowrap" valign="middle"> - <table border="0" cellspacing="0" cellpadding="1" summary="move"> - <tr> - <td><input onmouseover="fr_insline(<?=$nnats;?>, true)" onmouseout="fr_insline(<?=$nnats;?>, false)" name="move_<?=$i;?>" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" title="<?=gettext("move selected rules before this rule");?>" type="image" style="height:17;width:17;border:0" /></td> - <td><a href="firewall_nat_out_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" title="<?=gettext("edit mapping");?>" alt="edit" /></a></td> - </tr> - <tr> - <td align="center" valign="middle"><a href="firewall_nat_out.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this rule?");?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete rule");?>" alt="delete" /></a></td> - <td><a href="firewall_nat_out_edit.php?dup=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add a new NAT based on this one");?>" width="17" height="17" border="0" alt="duplicate" /></a></td> - </tr> - </table> - <?php $i++; $nnats++; endforeach; ?> - <tr> - <td class="list" colspan="11"></td> - <td class="list nowrap" valign="middle"> - <table border="0" cellspacing="0" cellpadding="1" summary="edit"> - <tr> - <td><?php if ($nnats == 0): ?><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected mappings to end");?>" border="0" alt="move" /><?php else: ?><input name="move_<?=$i;?>" type="image" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" style="width:17;height:17;border:0" title="<?=gettext("move selected mappings to end");?>" /><?php endif; ?></td> - <td><a href="firewall_nat_out_edit.php"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new mapping");?>" alt="add" /></a></td> - </tr> - <tr> - <td><?php if ($nnats == 0): ?><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected rules");?>" border="0" alt="delete" /><?php else: ?><input name="del" type="image" src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" style="width:17;height:17" title="<?=gettext("delete selected mappings");?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected mappings?");?>')" /><?php endif; ?></td> - </tr> - </table></td> - </tr> - <tr> - <td colspan="12"> - <p><span class="vexpl"><span class="red"><strong><?=gettext("Note:"); ?><br/> - </strong></span> - <?=gettext("With automatic outbound NAT enabled, a mapping is automatically created " . - "for each interface's subnet (except WAN-type connections) and the rules " . - "on this page are ignored.<br/><br/> " . - "If manual outbound NAT is enabled, outbound NAT rules will not be " . - "automatically generated and only the mappings you specify on this page " . - "will be used. <br/><br/> " . - "If a target address other than a WAN-type interface's IP address is used, " . - "then depending on the way the WAN connection is setup, a "); ?> - <a href="firewall_virtual_ip.php"><?=gettext("Virtual IP"); ?></a> - <?= gettext(" may also be required.") ?> - <br/><br/> - <?= gettext("To completely disable outbound NAT, switch to Manual Outbound NAT then delete any " . - "NAT rules that appear in the list.") ?></span></p> - </td> - </tr> - - </table> - </div> -</td> - </tr> + <tr id="frheader"> + <td width="3%" class="list"> </td> + <td width="3%" class="list"> </td> + <td width="10%" class="listhdrr"><?=gettext("Interface");?></td> + <td width="15%" class="listhdrr"><?=gettext("Source");?></td> + <td width="10%" class="listhdrr"><?=gettext("Source Port");?></td> + <td width="15%" class="listhdrr"><?=gettext("Destination");?></td> + <td width="10%" class="listhdrr"><?=gettext("Destination Port");?></td> + <td width="15%" class="listhdrr"><?=gettext("NAT Address");?></td> + <td width="10%" class="listhdrr"><?=gettext("NAT Port");?></td> + <td width="10%" class="listhdrr"><?=gettext("Static Port");?></td> + <td width="25%" class="listhdr"><?=gettext("Description");?></td> + <td width="5%" class="list"> + <table border="0" cellspacing="0" cellpadding="1" summary="add"> + <tr> + <td width="17"></td> + <td> + <a href="firewall_nat_out_edit.php?after=-1"> + <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new mapping");?>" alt="add" /> + </a> + </td> + </tr> + </table> + </td> + </tr> +<?php + $nnats = $i = 0; + foreach ($a_out as $natent): +?> + <tr valign="top" id="fr<?=$nnats;?>"> + <td class="listt"> + <input type="checkbox" id="frc<?=$nnats;?>" name="rule[]" value="<?=$i;?>" onclick="fr_bgcolor('<?=$nnats;?>')" style="margin: 0; padding: 0; width: 15px; height: 15px;" /> + </td> + <td class="listt" align="center"> +<?php + $iconfn = "pass"; + if (isset($natent['disabled'])) { + $textss = "<span class=\"gray\">"; + $textse = "</span>"; + $iconfn .= "_d"; + } else { + $textss = $textse = ""; + } +?> + <a href="?act=toggle&id=<?=$i;?>"> + <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_<?=$iconfn;?>.gif" width="11" height="11" border="0" title="<?=gettext("click to toggle enabled/disabled status");?>" alt="icon" /> + </a> + </td> + <td class="listlr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> + <?php echo htmlspecialchars(convert_friendly_interface_to_friendly_descr($natent['interface'])); ?> + + </td> + <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> + <?=$natent['source']['network'];?> + </td> + <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> +<?php + echo ($natent['protocol']) ? $natent['protocol'] . '/' : "" ; + if (!$natent['sourceport']) + echo "*"; + else + echo $natent['sourceport']; +?> + </td> + <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> +<?php + if (isset($natent['destination']['any'])) + echo "*"; + else { + if (isset($natent['destination']['not'])) + echo "! "; + echo $natent['destination']['address']; + } +?> + </td> + <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> +<?php + echo ($natent['protocol']) ? $natent['protocol'] . '/' : "" ; + if (!$natent['dstport']) + echo "*"; + else + echo $natent['dstport']; +?> + </td> + <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> +<?php + if (isset($natent['nonat'])) + echo '<I>NO NAT</I>'; + elseif (!$natent['target']) + echo htmlspecialchars(convert_friendly_interface_to_friendly_descr($natent['interface'])) . " address"; + elseif ($natent['target'] == "other-subnet") + echo $natent['targetip'] . '/' . $natent['targetip_subnet']; + else + echo $natent['target']; +?> + </td> + <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> +<?php + if (!$natent['natport']) + echo "*"; + else + echo $natent['natport']; +?> + </td> + <td class="listr" onclick="fr_toggle(<?=$nnats;?>)" id="frd<?=$nnats;?>" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';" align="center"> +<?php + if(isset($natent['staticnatport'])) + echo gettext("YES"); + else + echo gettext("NO"); +?> + </td> + <td class="listbg" onclick="fr_toggle(<?=$nnats;?>)" ondblclick="document.location='firewall_nat_out_edit.php?id=<?=$nnats;?>';"> + <?=htmlspecialchars($natent['descr']);?> + </td> + <td class="list nowrap" valign="middle"> + <table border="0" cellspacing="0" cellpadding="1" summary="move"> + <tr> + <td><input onmouseover="fr_insline(<?=$nnats;?>, true)" onmouseout="fr_insline(<?=$nnats;?>, false)" name="move_<?=$i;?>" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" title="<?=gettext("move selected rules before this rule");?>" type="image" style="height:17;width:17;border:0" /></td> + <td> + <a href="firewall_nat_out_edit.php?id=<?=$i;?>"> + <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" title="<?=gettext("edit mapping");?>" alt="edit" /> + </a> + </td> + </tr> + <tr> + <td align="center" valign="middle"> + <a href="firewall_nat_out.php?act=del&id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this rule?");?>')"> + <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="<?=gettext("delete rule");?>" alt="delete" /> + </a> + </td> + <td> + <a href="firewall_nat_out_edit.php?dup=<?=$i;?>"> + <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title="<?=gettext("add a new NAT based on this one");?>" width="17" height="17" border="0" alt="duplicate" /> + </a> + </td> + </tr> + </table> + </td> + </tr> +<?php + $i++; + $nnats++; + endforeach; +?> + <tr> + <td class="list" colspan="11"></td> + <td class="list nowrap" valign="middle"> + <table border="0" cellspacing="0" cellpadding="1" summary="edit"> + <tr> + <td> +<?php + if ($nnats == 0): +?> + <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_left_d.gif" width="17" height="17" title="<?=gettext("move selected mappings to end");?>" border="0" alt="move" /> +<?php + else: +?> + <input name="move_<?=$i;?>" type="image" src="/themes/<?= $g['theme']; ?>/images/icons/icon_left.gif" style="width:17;height:17;border:0" title="<?=gettext("move selected mappings to end");?>" /> +<?php + endif; +?> + </td> + <td> + <a href="firewall_nat_out_edit.php"> + <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="<?=gettext("add new mapping");?>" alt="add" /> + </a> + </td> + </tr> + <tr> + <td> +<?php + if ($nnats == 0): +?> + <img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x_d.gif" width="17" height="17" title="<?=gettext("delete selected rules");?>" border="0" alt="delete" /> +<?php + else: +?> + <input name="del" type="image" src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" style="width:17;height:17" title="<?=gettext("delete selected mappings");?>" onclick="return confirm('<?=gettext("Do you really want to delete the selected mappings?");?>')" /> +<?php + endif; +?> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td colspan="12"> + <p><span class="vexpl"> + <span class="red"><strong><?=gettext("Note:"); ?><br/></strong></span> + <?=gettext("With automatic outbound NAT enabled, a mapping is automatically created " . + "for each interface's subnet (except WAN-type connections) and the rules " . + "on this page are ignored.<br/><br/> " . + "If manual outbound NAT is enabled, outbound NAT rules will not be " . + "automatically generated and only the mappings you specify on this page " . + "will be used. <br/><br/> " . + "If a target address other than a WAN-type interface's IP address is used, " . + "then depending on the way the WAN connection is setup, a "); ?> + <a href="firewall_virtual_ip.php"><?=gettext("Virtual IP"); ?></a> + <?= gettext(" may also be required.") ?> + <br/><br/> + <?= gettext("To completely disable outbound NAT, switch to Manual Outbound NAT then delete any " . + "NAT rules that appear in the list.") ?> + </span></p> + </td> + </tr> + </table> + </div> + </td> + </tr> </table> - </form> +</form> <?php include("fend.inc"); ?> </body> </html> |