2015-08-01 15:36:15 +00:00
|
|
|
<?php
|
|
|
|
/* Copyright (C) 2014 Daniel Preussker <f0o@devilcode.org>
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Custom Frontpage
|
|
|
|
* @author f0o <f0o@devilcode.org>
|
|
|
|
* @copyright 2014 f0o, LibreNMS
|
|
|
|
* @license GPL
|
|
|
|
* @package LibreNMS
|
|
|
|
* @subpackage Frontpage
|
|
|
|
*/
|
|
|
|
|
|
|
|
if ($config['map']['engine'] == 'leaflet') {
|
|
|
|
|
|
|
|
$temp_output = '
|
|
|
|
<script src="js/leaflet.js"></script>
|
|
|
|
<script src="js/leaflet.markercluster-src.js"></script>
|
|
|
|
<script src="js/leaflet.awesome-markers.min.js"></script>
|
|
|
|
<div id="leaflet-map"></div>
|
|
|
|
<script>
|
|
|
|
';
|
|
|
|
|
|
|
|
$map_init = "[" . $config['leaflet']['default_lat'] . ", " . $config['leaflet']['default_lng'] . "], " . sprintf("%01.0f", $config['leaflet']['default_zoom']);
|
|
|
|
|
|
|
|
$temp_output .= 'var map = L.map(\'leaflet-map\').setView('.$map_init.');
|
|
|
|
|
|
|
|
L.tileLayer(\'//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\', {
|
|
|
|
attribution: \'© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors\'
|
|
|
|
}).addTo(map);
|
|
|
|
|
|
|
|
var markers = L.markerClusterGroup();
|
|
|
|
var redMarker = L.AwesomeMarkers.icon({
|
|
|
|
icon: \'server\',
|
|
|
|
markerColor: \'red\', prefix: \'fa\', iconColor: \'white\'
|
|
|
|
});
|
|
|
|
var greenMarker = L.AwesomeMarkers.icon({
|
|
|
|
icon: \'server\',
|
|
|
|
markerColor: \'green\', prefix: \'fa\', iconColor: \'white\'
|
|
|
|
});
|
|
|
|
';
|
|
|
|
|
2015-09-06 22:40:08 +01:00
|
|
|
// Checking user permissions
|
|
|
|
if (is_admin() || is_read()) {
|
|
|
|
// Admin or global read-only - show all devices
|
|
|
|
$sql = "SELECT `device_id`,`hostname`,`os`,`status`,`lat`,`lng` FROM `devices`
|
|
|
|
LEFT JOIN `locations` ON `devices`.`location`=`locations`.`location`
|
|
|
|
WHERE `disabled`=0 AND `ignore`=0 AND `lat` != '' AND `lng` != ''
|
|
|
|
ORDER BY `status` ASC, `hostname`";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
// Normal user - grab devices that user has permissions to
|
|
|
|
$sql = "SELECT `devices`.`device_id` as `device_id`,`hostname`,`os`,`status`,`lat`,`lng`
|
|
|
|
FROM `devices_perms`, `devices`
|
|
|
|
LEFT JOIN `locations` ON `devices`.`location`=`locations`.`location`
|
|
|
|
WHERE `disabled`=0 AND `ignore`=0 AND `lat` != '' AND `lng` != ''
|
|
|
|
AND `devices`.`device_id` = `devices_perms`.`device_id`
|
2015-09-07 15:45:27 +01:00
|
|
|
AND `devices_perms`.`user_id` = ?
|
2015-09-06 22:40:08 +01:00
|
|
|
ORDER BY `status` ASC, `hostname`";
|
|
|
|
}
|
2015-09-07 15:45:27 +01:00
|
|
|
foreach (dbFetchRows($sql, array($_SESSION['user_id'])) as $map_devices) {
|
2015-08-01 15:36:15 +00:00
|
|
|
$icon = 'greenMarker';
|
|
|
|
if ($map_devices['status'] == 0) {
|
|
|
|
$icon = 'redMarker';
|
|
|
|
}
|
|
|
|
|
|
|
|
$temp_output .= "var title = '<a href=\"" . generate_device_url($map_devices) . "\"><img src=\"".getImageSrc($map_devices)."\" width=\"32\" height=\"32\" alt=\"\">".$map_devices['hostname']."</a>';
|
|
|
|
var marker = L.marker(new L.LatLng(".$map_devices['lat'].", ".$map_devices['lng']."), {title: title, icon: $icon});
|
|
|
|
marker.bindPopup(title);
|
|
|
|
markers.addLayer(marker);\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
$temp_output .= 'map.addLayer(markers);
|
2015-08-31 19:10:53 +00:00
|
|
|
map.scrollWheelZoom.disable();
|
|
|
|
$(document).ready(function(){
|
|
|
|
$("#leaflet-map").on("click", function(event) {
|
|
|
|
map.scrollWheelZoom.enable();
|
|
|
|
});
|
|
|
|
$("#leaflet-map").mouseleave(function(event) {
|
|
|
|
map.scrollWheelZoom.disable();
|
|
|
|
});
|
|
|
|
});
|
2015-08-01 15:36:15 +00:00
|
|
|
</script>';
|
|
|
|
|
|
|
|
} else {
|
|
|
|
$temp_output = 'Mapael engine not supported here';
|
|
|
|
}
|
|
|
|
|
|
|
|
unset($common_output);
|
|
|
|
$common_output[] = $temp_output;
|