Changeset 0b780b4 for npl


Ignore:
Timestamp:
09/28/17 16:20:21 (8 years ago)
Author:
Edwin Eefting <edwin@datux.nl>
Branches:
master, perl-5.22
Children:
48bf314
Parents:
a35989d
Message:

ikev2 status support

Location:
npl/syn3/webint/src/vpn
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • npl/syn3/webint/src/vpn/listtunnels.php

    ra35989d r0b780b4  
    6565        {
    6666            //status NOT ok?
    67             if ($status[$name][state] != "STATE_QUICK_I2" && $status[$name][state] != "STATE_QUICK_R2" && $status[$name][state] != "STATE_V2_IPSEC_R" && $status[$name][state] != "STATE_V2_IPSEC_I")
     67            if ($status[$name][phase1] != "OK" || $status[$name][phase2] != "OK")
    6868                LinkDefault("testtunnel.php?name=$name&mode=down", _Started(), "<img src='../img/CAUTION.gif'>",_ConfirmDisable($name));
    6969            else
     
    8787
    8888
     89        //should be up?
    8990        if ($data["auto"]=="up")
    9091        {
    91             //do we have actual status info?
    92             if ($status[$name][state])
    93             {
    94                 $statehtml=State_GetHtml("ipsec_$name",true);
    95                 echo "<a href='editvpnmon.php?tunnelName=$name'>";
    96                 if ($statehtml)
    97                     echo $statehtml;
    98                 else
    99                     echo "<img title='"._vpnMon()."' src='../img/mon.gif'>";
    100                 echo "</a>";
     92            $statehtml=State_GetHtml("ipsec_$name",true);
     93            echo "<a href='editvpnmon.php?tunnelName=$name'>";
     94            if ($statehtml)
     95                echo $statehtml;
     96            else
     97                echo "<img title='"._vpnMon()."' src='../img/mon.gif'>";
     98            echo "</a>";
    10199
    102                 // if ($status[$name][state] != "STATE_QUICK_I2" &&
    103                 //         $status[$name][state] != "STATE_QUICK_R2" )
    104                 //     echo "<img src='../img/arrow_r.gif'>";
    105                 echo "<a href='tunnelstatus.php?name=$name'>";
    106                 echo $VPN_STATES[$status[$name][state]];
    107                 echo "</a>";
    108             }
     100            echo "<a href='tunnelstatus.php?name=$name'> ";
     101
     102            if ($status[$name][phase1]!="OK")
     103                echo "Phase 1: ".$status[$name][phase1];
     104            elseif ($status[$name][phase2]!="OK")
     105                echo "Phase 2: ".$status[$name][phase2];
    109106            else
    110             {
    111                 echo "<b>Unknown</b>";
    112             }
     107                echo "OK";
     108
     109            echo "</a>";
    113110        }
    114111
  • npl/syn3/webint/src/vpn/openswan.php

    ra35989d r0b780b4  
    334334
    335335
    336         $VPN_STATES=array(
    337                 'Main'=>"Connecting...",
     336        $VPN_STATES_1=array(
     337                //ike v1
    338338                'STATE_MAIN_I1'=>"Connecting...",
    339                         'STATE_MAIN_R1'=>"Connection accepted...",
    340                 'STATE_MAIN_I2'=>"Connection complete...",
     339                'STATE_MAIN_R1'=>"Connecting...",
     340                'STATE_MAIN_I2'=>"Connecting...",
     341
    341342                'STATE_MAIN_I3'=>"Checking keys...",
    342                         'STATE_MAIN_R2'=>"Checking keys...",
    343                 'STATE_MAIN_I4'=>"Keys accepted...",
    344                         'STATE_MAIN_R3'=>"Waiting for tunnel request...",
    345                 'Quick'=>"Requesting tunnel...",
    346                 'STATE_QUICK_I1'=>"Requesting tunnel...",
    347                         'STATE_QUICK_R1'=>"Tunnel request received...",
    348                 'STATE_QUICK_I2'=>"Tunnel established",
    349                         'STATE_QUICK_R2'=>"Tunnel established",
     343                'STATE_MAIN_R2'=>"Checking keys...",
     344
     345                'STATE_MAIN_I4'=>"OK",
     346                'STATE_MAIN_R3'=>"OK",
     347
     348
     349                //ike v2
     350                'STATE_PARENT_I2'=>"Negotiating...",
     351
     352                'STATE_PARENT_I3'=>"OK",
     353                'STATE_PARENT_R2'=>"OK",
     354
    350355        );
    351356
    352 
    353         $VPN_PRIO=array(
    354                         'Main'=>0,
    355                 'STATE_MAIN_I1'=>1,
    356                         'STATE_MAIN_R1'=>2,
    357                 'STATE_MAIN_I2'=>3,
    358                 'STATE_MAIN_I3'=>4,
    359                         'STATE_MAIN_R2'=>5,
    360                 'STATE_MAIN_I4'=>6,
    361                         'STATE_MAIN_R3'=>7,
    362                 'Quick'=>8,
    363                 'STATE_QUICK_I1'=>9,
    364                         'STATE_QUICK_R1'=>10,
    365                 'STATE_QUICK_I2'=>11,
    366                         'STATE_QUICK_R2'=>12,
     357        $VPN_STATES_2=array(
     358                //ike v1
     359                'STATE_QUICK_I1'=>"Negotiating tunnel...",
     360                'STATE_QUICK_R1'=>"Negotiating tunnel...",
     361
     362                'STATE_QUICK_I2'=>"OK",
     363                'STATE_QUICK_R2'=>"OK",
     364
     365
     366                //ike v2
     367                'STATE_V2_IPSEC_I'=>"OK",
     368                'STATE_V2_IPSEC_R'=>"OK",
     369
    367370        );
    368371
    369         //tries to determine state from a logline.
    370         //returns false on no state found
     372        //
     373        //
     374        // $VPN_PRIO=array(
     375        //              'Main'=>0,
     376        //      'STATE_MAIN_I1'=>1,
     377        //              'STATE_MAIN_R1'=>2,
     378        //      'STATE_MAIN_I2'=>3,
     379        //      'STATE_MAIN_I3'=>4,
     380        //              'STATE_MAIN_R2'=>5,
     381        //      'STATE_MAIN_I4'=>6,
     382        //              'STATE_MAIN_R3'=>7,
     383        //      'Quick'=>8,
     384        //      'STATE_QUICK_I1'=>9,
     385        //              'STATE_QUICK_R1'=>10,
     386        //      'STATE_QUICK_I2'=>11,
     387        //              'STATE_QUICK_R2'=>12,
     388        // );
     389
     390        //determines phase1 and phase2 state from logline
    371391        function vpn_LogToState($logline)
    372392        {
    373                 global $VPN_STATES;
    374 
    375                 if (preg_match("/to state (.*)$/",$logline,$matches))
    376                 {
    377                         if (isset($VPN_STATES[$matches[1]]))
    378                                 return ($matches[1]);
    379                 }
    380                 elseif (preg_match("/initiating (.*) Mode/",$logline,$matches))
    381                 {
    382                         if (isset($VPN_STATES[$matches[1]]))
    383                                 return ($matches[1]);
    384                 }
    385                 else
    386                 {
    387                         return false;
    388                 }
     393                global $VPN_STATES_1;
     394                global $VPN_STATES_2;
     395
     396                $ret=[];
     397                if (preg_match("/(STATE_[0-9_A-Z]*)/",$logline,$matches))
     398                {
     399                        $state=$matches[1];
     400                        if ($VPN_STATES_1[$state])
     401                                $ret['phase1']=$VPN_STATES_1[$state];
     402                        if ($VPN_STATES_2[$state])
     403                                $ret['phase2']=$VPN_STATES_2[$state];
     404                }
     405                return($ret);
    389406        }
    390407        //read logging output of a tunnel
     
    393410        {
    394411                global $VPN_LOG;
    395                 $lines=SafeExec("grep '\]: \"$name\"' '$VPN_LOG'|tail -1000");
     412                $lines=SafeExec("grep 'pluto.*\"$name\"' '$VPN_LOG'|tail -1000");
    396413                foreach ($lines as $line)
    397414                {
    398                         preg_match("/\]: \".*?\".(.*)/",$line,$matches);
    399                         $ret[]=array(vpn_LogToState($matches[1]),$matches[1]);
     415                        // preg_match("/\]: \".*?\".(.*)/",$line,$matches);
     416                        $ret[]=array(vpn_LogToState($line),$line);
    400417                }
    401418                return $ret;
     
    407424        function vpn_GetStatus()
    408425        {
    409                 global $VPN_STATES;
    410                 global $VPN_PRIO;
     426                global $VPN_STATES_1;
     427                global $VPN_STATES_2;
     428                // global $VPN_PRIO;
    411429
    412430                if (Cmd("ipsec whack --status",'',$output)<0)
     
    419437                        foreach ($output as $line)
    420438                        {
    421                                 if (preg_match('/^.*#([0-9])*:.*"(.*?)"[:0-9]* ([A-Z0-9_]+) /',$line,$matches))
    422                                 {
    423                                         $nr=$matches[1];
    424                                         $name=$matches[2];
    425                                         $state=$matches[3];
    426                                         if (
    427                                                 $name &&
    428                                                 $state &&
    429                                                 $VPN_PRIO[$state]>=$VPN_PRIO[$ret[$name]['state']]
    430                                         )
    431                                         {
    432                                                 $ret[$name]['state']=$state;
    433                                                 $ret[$name]['info'][]=$line;
    434                                         }
    435                                 }
    436                                 elseif (preg_match('/^.*"(.*?)": *(.*)$/',$line,$matches))
     439                                if (preg_match('/\"(.*)\"/',$line,$matches))
    437440                                {
    438441                                        $name=$matches[1];
    439                                         $info=$matches[2];
    440                                         if ($name && $info)
    441                                         {
    442                                                 $ret[$name]['info'][]=$info;
    443                                         }
     442                                        $ret[$name]['info'][]=$line;
     443                                        $state=vpn_LogToState($line);
     444                                        if ($state['phase1'])
     445                                                $ret[$name]['phase1']=$state['phase1'];
     446                                        if ($state['phase2'])
     447                                                $ret[$name]['phase2']=$state['phase2'];
     448
    444449                                }
     450
     451                                // //state + info
     452                        //      if (preg_match('/^.*#([0-9])*:.*"(.*?)"[:0-9]* ([A-Z0-9_]+) /',$line,$matches))
     453                                // {
     454                                //      $nr=$matches[1];
     455                                //      $name=$matches[2];
     456                                //      $state=$matches[3];
     457                                //      if (
     458                                //              $name &&
     459                                //              $state
     460                                //      )
     461                                //      {
     462                                //              if ($VPN_STATES_1[$state])
     463                                //                      $ret[$name]['phase1']=$VPN_STATES_1[$state];
     464                                //              if ($VPN_STATES_2[$state])
     465                                //                      $ret[$name]['phase2']=$VPN_STATES_2[$state];
     466                                //
     467                                //              $ret[$name]['info'][]=$line;
     468                                //      }
     469                                // }
     470                                // //info only
     471                                // elseif (preg_match('/^.*"(.*?)": *(.*)$/',$line,$matches))
     472                                // {
     473                                //      $name=$matches[1];
     474                                //      $info=$matches[2];
     475                                //      if ($name && $info)
     476                                //      {
     477                                //              $ret[$name]['info'][]=$info;
     478                                //      }
     479                                // }
    445480                        }
    446481
  • npl/syn3/webint/src/vpn/tunnelstatus.php

    ra35989d r0b780b4  
    11<?
    2 /* 
     2/*
    33(C) 2004-2013 DatuX - info@datux.nl
    44
     
    1717*/
    1818
    19  
     19
    2020        $LEVEL=10;
    2121        include_once("../common.php");
    2222        require_once("openswan.php");
    2323        include_once("../form.php");
    24                
     24
    2525?>
    2626
     
    3232
    3333<? Head(); ?>
    34  
     34
    3535<h1><?=$TITLE?></h1>
    3636
    3737<?
    38 /* 
     38/*
    3939(C) 2004-2013 DatuX - info@datux.nl
    4040
     
    6060        <tr><th><?=_TechnicalInfoOpenswan() ?></tr>
    6161        <?
    62         echo "<tr><td><b>State: ".$status[$name]['state']."</b> (".$VPN_STATES[$status[$name][state]].")";
     62    echo "<tr><td><b>Phase 1: ".$status[$name]['phase1']."<br>"."Phase 2: ".$status[$name]['phase2']."</b></tr>";
    6363
    6464        foreach ($status[$name]['info'] as $info)
     
    7575                <th><?=_LogMessage()?></th>
    7676        </tr>
    77                        
     77
    7878        <?
    79        
     79
    8080                foreach ($log as $logdata)
    8181                {
    8282                        echo "<tr>";
    8383                        echo "<td>";
    84                         if ($VPN_STATES[$logdata[0]])
    85                         {
    86                                 /*if ($logdata[0] == "STATE_QUICK_I2" || $logdata[0] == "STATE_QUICK_R2")
    87                                         echo "<img src='../img/enabled.gif'>";
    88                                 else
    89                                         echo "<img src='../img/disabled.gif'>";*/
    90                                 echo $VPN_STATES[$logdata[0]];
    91                         }
     84                        if ($logdata[0]['phase1'])
     85                                echo "Phase 1: ".$logdata[0]['phase1'];
     86
     87                        elseif ($logdata[0]['phase2'])
     88                                echo "Phase 2: ".$logdata[0]['phase2'];
    9289                        else
    93                         {
    9490                                echo "&nbsp;";
    95                         }
    96                        
     91
    9792                        echo "<td>$logdata[1]";
    9893                        echo "</tr>";
    9994                }
    100                
     95
    10196                if (!$log)
    10297                        echo "<tr colspan=5><td>"._NoLogMessagesForThisTunnel()."</tr>";
Note: See TracChangeset for help on using the changeset viewer.