<?php

include_once('../global.php');

$Config['Web']['ShowErrors'] = 1;

$DbResult3 = $Database->query('SELECT DISTINCT (`DHCP`) FROM `NetworkSubnet` WHERE `Member` = 0');
while($Router = $DbResult3->fetch_assoc())
{
  echo($Router['DHCP']."\n");
  $Commands = array();
  $Commands[] = '/tool netwatch print terse';
  $Commands = implode(';', $Commands);
  $Command = '/usr/bin/ssh -o ConnectTimeout=5 -l '.$Config['MainRouter']['UserName'].' -i generators/id_dsa '.$Router['DHCP'].' "'.$Commands.'"';
  //echo($Command."\n");
  $Output = '';
  exec($Command, $Output);
  array_pop($Output);
  //print_r($Output);
  foreach($Output as $Row)
  {
    $Row = substr($Row, 5);
    $RowParts = explode(' ', $Row);
    $Properties = array();
    foreach($RowParts as $Index => $Item)
    {
      if(strpos($Item, '=') !== false) 
      {
        $ItemParts = explode('=', $Item);
        $Properties[$ItemParts[0]] = $ItemParts[1];
      }
    }
    if($Properties['status'] == 'up')
    {
      $Online = 1;
      $Values = array('Online' => $Online, 'LastOnline' => 'NOW()');
    } else 
    {
      $Online = 0;
      $Values = array('Online' => $Online);
    }

    $DbResult = $Database->update('NetworkInterface', 'LocalIP = "'.$Properties['host'].'"', $Values);
    if($Online == 1)
    {
      $DbResult = $Database->select('NetworkInterface', 'Id', 'LocalIP = "'.$Properties['host'].'"');
      $DbRow = $DbResult->fetch_assoc();
      $HostId = $DbRow['Id'];
      $DbResult2 = $Database->select('stat_hosts', '*', '(host_id="'.$HostId.'") AND (time = DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"))');
      if($DbResult2->num_rows == 0) $Database->query('REPLACE INTO stat_hosts (host_id, time) VALUES ("'.$HostId.'", DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"))');          
      $Database->query('UPDATE stat_hosts SET count = count + 1 WHERE (host_id="'.$HostId.'") AND (time = DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"))');
    }
  }
}

// Update device online state
$DbResult = $Database->select('NetworkDevice', 'Id', 'Used=1');
while($Device = $DbResult->fetch_assoc())
{
  $DbResult2 = $Database->select('NetworkInterface', 'SUM(Online)', 'Device='.$Device['Id']);
  $DbRow = $DbResult2->fetch_array();
  if($DbRow['SUM(Online)'] > 0) $Online = 1; else $Online = 0;  
  $Database->update('NetworkDevice', 'Id='.$Device['Id'], array('Online' => $Online));
}

?>
