1 | <?php
|
---|
2 |
|
---|
3 | if(isset($_SERVER['REMOTE_ADDR'])) die();
|
---|
4 | include('../../global.php');
|
---|
5 | include('../routerboard.php');
|
---|
6 | $Path = array('tool', 'netwatch');
|
---|
7 |
|
---|
8 | $DbResult3 = $Database->query('SELECT * FROM `NetworkSubnet` WHERE `Member` = 0');
|
---|
9 | while($Subnet = $DbResult3->fetch_assoc())
|
---|
10 | {
|
---|
11 | echo($Subnet['AddressRange'].'/'.$Subnet['Mask'].' on router '.$Subnet['DHCP']."\n");
|
---|
12 | $Routerboard = new Routerboard();
|
---|
13 | $Routerboard->UserName = $Config['MainRouter']['UserName'];
|
---|
14 | $Routerboard->Timeout = $Config['MainRouter']['ConnectTimeout'];
|
---|
15 | $Routerboard->HostName = $Subnet['DHCP'];
|
---|
16 | $List = $Routerboard->ListGetPrint($Path, array('host', 'status'));
|
---|
17 | foreach($List as $Properties)
|
---|
18 | {
|
---|
19 | if(IsAddressInSubnet($Properties['host'], $Subnet['AddressRange'], $Subnet['Mask']))
|
---|
20 | {
|
---|
21 | //echo($Properties['host'].', ');
|
---|
22 | if($Properties['status'] == 'up')
|
---|
23 | {
|
---|
24 | $Online = 1;
|
---|
25 | $Values = array('Online' => $Online, 'LastOnline' => 'NOW()');
|
---|
26 | //echo($Properties['host']." up\n");
|
---|
27 | } else
|
---|
28 | {
|
---|
29 | $Online = 0;
|
---|
30 | $Values = array('Online' => $Online);
|
---|
31 | //echo($Properties['host']." down\n");
|
---|
32 | }
|
---|
33 |
|
---|
34 | $DbResult = $Database->update('NetworkInterface', 'LocalIP = "'.$Properties['host'].'"', $Values);
|
---|
35 | if($Online == 1)
|
---|
36 | {
|
---|
37 | $DbResult = $Database->select('NetworkInterface', 'Id', 'LocalIP = "'.$Properties['host'].'"');
|
---|
38 | $DbRow = $DbResult->fetch_assoc();
|
---|
39 | $InterfaceId = $DbRow['Id'];
|
---|
40 | $DbResult2 = $Database->select('NetworkInterfaceStat', '*', '(NetworkInterface="'.$InterfaceId.'") AND (Time = DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"))');
|
---|
41 | if($DbResult2->num_rows == 0) $Database->query('REPLACE INTO NetworkInterfaceStat (NetworkInterface, Time) VALUES ("'.$InterfaceId.'", DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"))');
|
---|
42 | $Database->query('UPDATE NetworkInterfaceStat SET PingCount = PingCount + 1 WHERE (NetworkInterface="'.$InterfaceId.'") AND (Time = DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"))');
|
---|
43 | }
|
---|
44 | }
|
---|
45 | }
|
---|
46 | }
|
---|
47 |
|
---|
48 | // Update device online state
|
---|
49 | $DbResult = $Database->select('NetworkDevice', 'Id', 'Used=1');
|
---|
50 | while($Device = $DbResult->fetch_assoc())
|
---|
51 | {
|
---|
52 | $DbResult2 = $Database->select('NetworkInterface', 'SUM(Online)', 'Device='.$Device['Id']);
|
---|
53 | $DbRow = $DbResult2->fetch_array();
|
---|
54 | if($DbRow['SUM(Online)'] > 0) $Online = 1; else $Online = 0;
|
---|
55 | $Database->update('NetworkDevice', 'Id='.$Device['Id'], array('Online' => $Online));
|
---|
56 | }
|
---|
57 |
|
---|
58 | ?>
|
---|