From 5f34f72cdb20af6ebebd1ae3012e97bbad1eccf2 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Fri, 6 Nov 2015 17:19:32 +0000 Subject: [PATCH] (legacy) fix ipsec widget (use vici) --- src/www/widgets/widgets/ipsec.widget.php | 299 +++++++++-------------- 1 file changed, 119 insertions(+), 180 deletions(-) diff --git a/src/www/widgets/widgets/ipsec.widget.php b/src/www/widgets/widgets/ipsec.widget.php index 5d7cbbc69..55d491e55 100644 --- a/src/www/widgets/widgets/ipsec.widget.php +++ b/src/www/widgets/widgets/ipsec.widget.php @@ -31,37 +31,33 @@ $nocsrf = true; require_once("guiconfig.inc"); -require_once("interfaces.inc"); -require_once("vpn.inc"); //function to create widget tabs when called function display_widget_tabs(& $tab_array) { - echo "
"; - $tabscounter = 0; - foreach ($tab_array as $ta) { - $dashpos = strpos($ta[2],'-'); - $tabname = $ta[2] . "-tab"; - $tabclass = substr($ta[2],0,$dashpos); - $tabclass = $tabclass . "-class"; - if ($ta[1] == true) { - $tabActive = "table-cell"; - $tabNonActive = "none"; - } - else { - $tabActive = "none"; - $tabNonActive = "table-cell"; - } - echo "
"; - echo "   {$ta[0]}"; - echo "   "; - echo "
"; - - echo "
"; - echo "   {$ta[0]}"; - echo "   "; - echo "
"; - } + echo "
"; + $tabscounter = 0; + foreach ($tab_array as $ta) { + $dashpos = strpos($ta[2],'-'); + $tabname = $ta[2] . "-tab"; + $tabclass = substr($ta[2],0,$dashpos); + $tabclass = $tabclass . "-class"; + if ($ta[1] == true) { + $tabActive = "table-cell"; + $tabNonActive = "none"; + } else { + $tabActive = "none"; + $tabNonActive = "table-cell"; + } + echo "
"; + echo "   {$ta[0]}"; + echo "   "; + echo "
"; + echo "
"; + echo "   {$ta[0]}"; + echo "   "; + echo "
"; + } } $ipsec_detail_array = array(); @@ -73,49 +69,31 @@ if (isset($config['ipsec']['phase1'])) { $tab_array[1] = array(gettext("Tunnels"), false, "ipsec-tunnel"); $tab_array[2] = array(gettext("Mobile"), false, "ipsec-mobile"); display_widget_tabs($tab_array); + // TODO: temporary disabled ( https://github.com/opnsense/core/issues/139 ) ipsec_dump_mobile(); + $mobile = array(); - $spd = ipsec_dump_spd(); - $sad = ipsec_dump_sad(); - $mobile = array(); // TODO: temporary disabled ( https://github.com/opnsense/core/issues/139 ) ipsec_dump_mobile(); - $ipsec_status = ipsec_smp_dump_status(); - - $activecounter = 0; - $inactivecounter = 0; - - if (isset($config['ipsec']['phase2'])) { - foreach ($config['ipsec']['phase2'] as $ph2ent) { - if ($ph2ent['remoteid']['type'] == "mobile") { - continue; + // parse configured tunnels + $ipsec_status = json_decode(configd_run("ipsec list_status"), true); + $ipsec_tunnels = array(); + $activetunnels = 0; + if ($ipsec_status != null) { + foreach ($ipsec_status as $status_key => $status_value) { + if (isset($status_value['children'])) { + foreach($status_value['children'] as $child_status_key => $child_status_value) { + $ipsec_tunnels[$child_status_key] = array('active' => false, + 'local-addrs' => $status_value['local-addrs'], + 'remote-addrs' => $status_value['remote-addrs'], + ); + $ipsec_tunnels[$child_status_key]['local-ts'] = implode(',', $child_status_value['local-ts']); + $ipsec_tunnels[$child_status_key]['remote-ts'] = implode(',', $child_status_value['remote-ts']); + } } - ipsec_lookup_phase1($ph2ent, $ph1ent); - $ipsecstatus = false; - - $tun_disabled = "false"; - $foundsrc = false; - $founddst = false; - - if (isset($ph1ent['disabled']) || isset($ph2ent['disabled'])) { - $tun_disabled = "true"; - continue; + foreach ($status_value['sas'] as $sas_key => $sas_value) { + foreach ($sas_value['child-sas'] as $child_sa_key => $child_sa_value) { + $ipsec_tunnels[$child_sa_key]['active'] = true; + $activetunnels++; + } } - if (isset($ipsec_status['query']['ikesalist']['ikesa']) && isset($ph1ent['ikeid']) && ipsec_phase1_status($ipsec_status['query']['ikesalist']['ikesa'], $ph1ent['ikeid'])) { - /* tunnel is up */ - $iconfn = "true"; - $activecounter++; - } else { - /* tunnel is down */ - $iconfn = "false"; - $inactivecounter++; - } - - $ipsec_detail_array[] = array( - 'src' => convert_friendly_interface_to_friendly_descr($ph1ent['interface']), - 'dest' => $ph1ent['remote-gateway'], - 'remote-subnet' => ipsec_idinfo_to_text($ph2ent['remoteid']), - 'descr' => $ph2ent['descr'], - 'status' => $iconfn, - 'disabled' => $tun_disabled - ); } } } @@ -124,132 +102,93 @@ if (isset($config['ipsec']['phase2'])) { ?>
-
- - - - - - - - - - - -
-
+ + + + + + + + + + + + + + + +
0
- - - + +
- - - + + + - -
+ + +
-
-
+ +
', ''); ?> - -
+
+