diff --git a/src/www/vpn_ipsec.php b/src/www/vpn_ipsec.php
index 501c26bbb..b92b36a79 100644
--- a/src/www/vpn_ipsec.php
+++ b/src/www/vpn_ipsec.php
@@ -26,7 +26,6 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
-
require_once("guiconfig.inc");
require_once("filter.inc");
require_once("vpn.inc");
@@ -34,201 +33,198 @@ require_once("services.inc");
require_once("pfsense-utils.inc");
require_once("interfaces.inc");
-if (!is_array($config['ipsec'])) {
+if (!isset($config['ipsec'])) {
$config['ipsec'] = array();
}
-
-if (!is_array($config['ipsec']['phase1'])) {
+if (!isset($config['ipsec']['phase1'])) {
$config['ipsec']['phase1'] = array();
}
-
-if (!is_array($config['ipsec']['phase2'])) {
+if (!isset($config['ipsec']['phase2'])) {
$config['ipsec']['phase2'] = array();
}
-$a_phase1 = &$config['ipsec']['phase1'];
-$a_phase2 = &$config['ipsec']['phase2'];
-
-$pconfig['enable'] = isset($config['ipsec']['enable']);
-
-if ($_POST) {
- if ($_POST['apply']) {
- $retval = 0;
- $retval = vpn_ipsec_configure();
- /* reload the filter in the background */
- filter_configure();
- $savemsg = get_std_save_message($retval);
- if ($retval >= 0) {
- if (is_subsystem_dirty('ipsec')) {
- clear_subsystem_dirty('ipsec');
- }
- }
- } elseif ($_POST['submit']) {
- $pconfig = $_POST;
-
- $config['ipsec']['enable'] = $_POST['enable'] ? true : false;
-
- write_config();
-
- $retval = vpn_ipsec_configure();
- } elseif (isset($_POST['del_x'])) {
- /* delete selected p1 entries */
- if (is_array($_POST['p1entry']) && count($_POST['p1entry'])) {
- foreach ($_POST['p1entry'] as $p1entrydel) {
- unset($a_phase1[$p1entrydel]);
- }
- if (write_config()) {
- mark_subsystem_dirty('ipsec');
- }
- }
- } elseif (isset($_POST['delp2_x'])) {
- /* delete selected p2 entries */
- if (is_array($_POST['p2entry']) && count($_POST['p2entry'])) {
- foreach ($_POST['p2entry'] as $p2entrydel) {
- unset($a_phase2[$p2entrydel]);
- }
- if (write_config()) {
- mark_subsystem_dirty('ipsec');
- }
- }
- } 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($delbtn, $delbtnp2, $movebtn, $movebtnp2, $togglebtn, $togglebtnp2);
- foreach ($_POST as $pn => $pd) {
- if (preg_match("/del_(\d+)_x/", $pn, $matches)) {
- $delbtn = $matches[1];
- } elseif (preg_match("/delp2_(\d+)_x/", $pn, $matches)) {
- $delbtnp2 = $matches[1];
- } elseif (preg_match("/move_(\d+)_x/", $pn, $matches)) {
- $movebtn = $matches[1];
- } elseif (preg_match("/movep2_(\d+)_x/", $pn, $matches)) {
- $movebtnp2 = $matches[1];
- } elseif (preg_match("/toggle_(\d+)_x/", $pn, $matches)) {
- $togglebtn = $matches[1];
- } elseif (preg_match("/togglep2_(\d+)_x/", $pn, $matches)) {
- $togglebtnp2 = $matches[1];
- }
- }
-
- $save = 1;
-
- /* move selected p1 entries before this */
- if (isset($movebtn) && is_array($_POST['p1entry']) && count($_POST['p1entry'])) {
- $a_phase1_new = array();
-
- /* copy all p1 entries < $movebtn and not selected */
- for ($i = 0; $i < $movebtn; $i++) {
- if (!in_array($i, $_POST['p1entry'])) {
- $a_phase1_new[] = $a_phase1[$i];
- }
- }
-
- /* copy all selected p1 entries */
- for ($i = 0; $i < count($a_phase1); $i++) {
- if ($i == $movebtn) {
- continue;
- }
- if (in_array($i, $_POST['p1entry'])) {
- $a_phase1_new[] = $a_phase1[$i];
- }
- }
-
- /* copy $movebtn p1 entry */
- if ($movebtn < count($a_phase1)) {
- $a_phase1_new[] = $a_phase1[$movebtn];
- }
-
- /* copy all p1 entries > $movebtn and not selected */
- for ($i = $movebtn+1; $i < count($a_phase1); $i++) {
- if (!in_array($i, $_POST['p1entry'])) {
- $a_phase1_new[] = $a_phase1[$i];
- }
- }
- if (count($a_phase1_new) > 0) {
- $a_phase1 = $a_phase1_new;
- }
-
- } elseif (isset($movebtnp2) && is_array($_POST['p2entry']) && count($_POST['p2entry'])) {
- /* move selected p2 entries before this */
- $a_phase2_new = array();
-
- /* copy all p2 entries < $movebtnp2 and not selected */
- for ($i = 0; $i < $movebtnp2; $i++) {
- if (!in_array($i, $_POST['p2entry'])) {
- $a_phase2_new[] = $a_phase2[$i];
- }
- }
-
- /* copy all selected p2 entries */
- for ($i = 0; $i < count($a_phase2); $i++) {
- if ($i == $movebtnp2) {
- continue;
- }
- if (in_array($i, $_POST['p2entry'])) {
- $a_phase2_new[] = $a_phase2[$i];
- }
- }
-
- /* copy $movebtnp2 p2 entry */
- if ($movebtnp2 < count($a_phase2)) {
- $a_phase2_new[] = $a_phase2[$movebtnp2];
- }
-
- /* copy all p2 entries > $movebtnp2 and not selected */
- for ($i = $movebtnp2+1; $i < count($a_phase2); $i++) {
- if (!in_array($i, $_POST['p2entry'])) {
- $a_phase2_new[] = $a_phase2[$i];
- }
- }
- if (count($a_phase2_new) > 0) {
- $a_phase2 = $a_phase2_new;
- }
-
- } elseif (isset($togglebtn)) {
- if (isset($a_phase1[$togglebtn]['disabled'])) {
- unset($a_phase1[$togglebtn]['disabled']);
- } else {
- $a_phase1[$togglebtn]['disabled'] = true;
- }
-
- } elseif (isset($togglebtnp2)) {
- if (isset($a_phase2[$togglebtnp2]['disabled'])) {
- unset($a_phase2[$togglebtnp2]['disabled']);
- } else {
- $a_phase2[$togglebtnp2]['disabled'] = true;
- }
-
- } elseif (isset($delbtn)) {
- /* remove static route if interface is not WAN */
- if ($a_phase1[$delbtn]['interface'] <> "wan") {
- mwexec("/sbin/route delete -host {$a_phase1[$delbtn]['remote-gateway']}");
- }
-
- /* remove all phase2 entries that match the ikeid */
- $ikeid = $a_phase1[$delbtn]['ikeid'];
- foreach ($a_phase2 as $p2index => $ph2tmp) {
- if ($ph2tmp['ikeid'] == $ikeid) {
- unset($a_phase2[$p2index]);
- }
- }
-
- unset($a_phase1[$delbtn]);
-
- } elseif (isset($delbtnp2)) {
- unset($a_phase2[$delbtnp2]);
-
- } else {
- $save = 0;
- }
-
- if ($save === 1) {
- if (write_config()) {
- mark_subsystem_dirty('ipsec');
- }
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+ $a_phase1 = &$config['ipsec']['phase1'];
+ $a_phase2 = &$config['ipsec']['phase2'];
+ if (isset($_POST['apply'])) {
+ $retval = vpn_ipsec_configure();
+ /* reload the filter in the background */
+ filter_configure();
+ $savemsg = get_std_save_message($retval);
+ if ($retval >= 0) {
+ if (is_subsystem_dirty('ipsec')) {
+ clear_subsystem_dirty('ipsec');
+ }
+ }
+ } elseif (isset($_POST['submit'])) {
+ $config['ipsec']['enable'] = !empty($_POST['enable']) ? true : false;
+ write_config();
+ vpn_ipsec_configure();
+ } elseif (isset($_POST['del_x'])) {
+ /* delete selected p1 entries */
+ if (isset($_POST['p1entry']) && count($_POST['p1entry'])) {
+ foreach ($_POST['p1entry'] as $p1entrydel) {
+ unset($config['ipsec']['phase1'][$p1entrydel]);
+ }
+ if (write_config()) {
+ mark_subsystem_dirty('ipsec');
+ }
+ }
+ } elseif (isset($_POST['delp2_x'])) {
+ /* delete selected p2 entries */
+ if (isset($_POST['p2entry']) && count($_POST['p2entry'])) {
+ foreach ($_POST['p2entry'] as $p2entrydel) {
+ unset($config['ipsec']['phase2'][$p2entrydel]);
+ }
+ if (write_config()) {
+ mark_subsystem_dirty('ipsec');
+ }
+ }
+ } else {
+ // move, delete, toggle items by id.
+ //
+ /* 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($delbtn, $delbtnp2, $movebtn, $movebtnp2, $togglebtn, $togglebtnp2);
+ foreach ($_POST as $pn => $pd) {
+ if (preg_match("/del_(\d+)_x/", $pn, $matches)) {
+ $delbtn = $matches[1];
+ } elseif (preg_match("/delp2_(\d+)_x/", $pn, $matches)) {
+ $delbtnp2 = $matches[1];
+ } elseif (preg_match("/move_(\d+)_x/", $pn, $matches)) {
+ $movebtn = $matches[1];
+ } elseif (preg_match("/movep2_(\d+)_x/", $pn, $matches)) {
+ $movebtnp2 = $matches[1];
+ } elseif (preg_match("/toggle_(\d+)_x/", $pn, $matches)) {
+ $togglebtn = $matches[1];
+ } elseif (preg_match("/togglep2_(\d+)_x/", $pn, $matches)) {
+ $togglebtnp2 = $matches[1];
}
}
+ $save = 1;
+
+ /* move selected p1 entries before this */
+ if (isset($movebtn) && isset($_POST['p1entry']) && count($_POST['p1entry'])) {
+ $a_phase1_new = array();
+
+ /* copy all p1 entries < $movebtn and not selected */
+ for ($i = 0; $i < $movebtn; $i++) {
+ if (!in_array($i, $_POST['p1entry'])) {
+ $a_phase1_new[] = $a_phase1[$i];
+ }
+ }
+
+ /* copy all selected p1 entries */
+ for ($i = 0; $i < count($a_phase1); $i++) {
+ if ($i == $movebtn) {
+ continue;
+ }
+ if (in_array($i, $_POST['p1entry'])) {
+ $a_phase1_new[] = $a_phase1[$i];
+ }
+ }
+
+ /* copy $movebtn p1 entry */
+ if ($movebtn < count($a_phase1)) {
+ $a_phase1_new[] = $a_phase1[$movebtn];
+ }
+
+ /* copy all p1 entries > $movebtn and not selected */
+ for ($i = $movebtn+1; $i < count($a_phase1); $i++) {
+ if (!in_array($i, $_POST['p1entry'])) {
+ $a_phase1_new[] = $a_phase1[$i];
+ }
+ }
+ if (count($a_phase1_new) > 0) {
+ $a_phase1 = $a_phase1_new;
+ }
+
+ } elseif (isset($movebtnp2) && isset($_POST['p2entry']) && count($_POST['p2entry'])) {
+ /* move selected p2 entries before this */
+ $a_phase2_new = array();
+
+ /* copy all p2 entries < $movebtnp2 and not selected */
+ for ($i = 0; $i < $movebtnp2; $i++) {
+ if (!in_array($i, $_POST['p2entry'])) {
+ $a_phase2_new[] = $a_phase2[$i];
+ }
+ }
+
+ /* copy all selected p2 entries */
+ for ($i = 0; $i < count($a_phase2); $i++) {
+ if ($i == $movebtnp2) {
+ continue;
+ }
+ if (in_array($i, $_POST['p2entry'])) {
+ $a_phase2_new[] = $a_phase2[$i];
+ }
+ }
+
+ /* copy $movebtnp2 p2 entry */
+ if ($movebtnp2 < count($a_phase2)) {
+ $a_phase2_new[] = $a_phase2[$movebtnp2];
+ }
+
+ /* copy all p2 entries > $movebtnp2 and not selected */
+ for ($i = $movebtnp2+1; $i < count($a_phase2); $i++) {
+ if (!in_array($i, $_POST['p2entry'])) {
+ $a_phase2_new[] = $a_phase2[$i];
+ }
+ }
+ if (count($a_phase2_new) > 0) {
+ $a_phase2 = $a_phase2_new;
+ }
+
+ } elseif (isset($togglebtn)) {
+ if (isset($a_phase1[$togglebtn]['disabled'])) {
+ unset($a_phase1[$togglebtn]['disabled']);
+ } else {
+ $a_phase1[$togglebtn]['disabled'] = true;
+ }
+
+ } elseif (isset($togglebtnp2)) {
+ if (isset($a_phase2[$togglebtnp2]['disabled'])) {
+ unset($a_phase2[$togglebtnp2]['disabled']);
+ } else {
+ $a_phase2[$togglebtnp2]['disabled'] = true;
+ }
+
+ } elseif (isset($delbtn)) {
+ /* remove static route if interface is not WAN */
+ if ($a_phase1[$delbtn]['interface'] <> "wan") {
+ mwexec("/sbin/route delete -host {$a_phase1[$delbtn]['remote-gateway']}");
+ }
+
+ /* remove all phase2 entries that match the ikeid */
+ $ikeid = $a_phase1[$delbtn]['ikeid'];
+ foreach ($a_phase2 as $p2index => $ph2tmp) {
+ if ($ph2tmp['ikeid'] == $ikeid) {
+ unset($a_phase2[$p2index]);
+ }
+ }
+
+ unset($a_phase1[$delbtn]);
+
+ } elseif (isset($delbtnp2)) {
+ unset($a_phase2[$delbtnp2]);
+
+ } else {
+ $save = 0;
+ }
+
+ if ($save === 1) {
+ if (write_config()) {
+ mark_subsystem_dirty('ipsec');
+ }
+ }
+ }
}
+// form data
+$pconfig = $config['ipsec'];
+$pconfig['enable'] = isset($config['ipsec']['enable']);
+legacy_html_escape_form_data($pconfig);
+
$pgtitle = array(gettext("VPN"),gettext("IPsec"));
$shortcut_section = "ipsec";
@@ -238,540 +234,8 @@ include("head.inc");
-
-
-