1<?php 2/* 3 * LibreNMS 4 * 5 * This program is free software: you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License as published by the 7 * Free Software Foundation, either version 3 of the License, or (at your 8 * option) any later version. Please see LICENSE.txt at the top level of 9 * the source code distribution for details. 10 * 11 * @package LibreNMS 12 * @subpackage webui 13 * @link https://www.librenms.org 14 * @copyright 2017 LibreNMS 15 * @author LibreNMS Contributors 16*/ 17 18$pagetitle[] = 'Services'; 19 20require_once 'includes/services.inc.php'; 21$services = service_get($device['device_id']); 22 23require_once 'includes/html/modal/new_service.inc.php'; 24require_once 'includes/html/modal/delete_service.inc.php'; 25 26if (! $vars['view']) { 27 $vars['view'] = 'basic'; 28} 29 30$menu_options = [ 31 'basic' => 'Basic', 32 'details' => 'Details', 33]; 34 35echo '<br>'; 36echo '<div class="panel panel-default">'; 37echo '<div class="panel-heading">'; 38echo '<span style="font-weight: bold;">Services</span> » '; 39 40$sep = ''; 41foreach ($menu_options as $option => $text) { 42 if (empty($vars['view'])) { 43 $vars['view'] = $option; 44 } 45 46 echo $sep; 47 if ($vars['view'] == $option) { 48 echo '<span class="pagemenu-selected">'; 49 } 50 51 echo generate_link($text, $vars, ['view' => $option]); 52 if ($vars['view'] == $option) { 53 echo '</span>'; 54 } 55 56 $sep = ' | '; 57} 58unset($sep); 59 60if (Auth::user()->hasGlobalAdmin()) { 61 echo '<div class="pull-right"><a data-toggle="modal" href="#create-service"><i class="fa fa-cog" style="color:green" aria-hidden="true"></i> Add Service</a></div>'; 62} 63 64echo '</div><div>'; 65 66if (count($services) > '0') { 67 // Loop over each service, pulling out the details. 68 69 echo '<table class="table table-hover table-condensed">'; 70 71 foreach ($services as $service) { 72 $service['service_ds'] = htmlspecialchars_decode($service['service_ds']); 73 if ($service['service_status'] == '2') { 74 $status = '<span class="alert-status label-danger"><span class="device-services-page">' . $service['service_type'] . '</span></span>'; 75 } elseif ($service['service_status'] == '1') { 76 $status = '<span class="alert-status label-warning"><span class="device-services-page">' . $service['service_type'] . '</span></span>'; 77 } elseif ($service['service_status'] == '0') { 78 $status = '<span class="alert-status label-success"><span class="device-services-page">' . $service['service_type'] . '</span></span>'; 79 } else { 80 $status = '<span class="alert-status label-info"><span class="device-services-page">' . $service['service_type'] . '</span></span>'; 81 } 82 83 echo '<tr id="row_' . $service['service_id'] . '">'; 84 echo '<td class="col-sm-12">'; 85 echo '<div class="col-sm-1">' . $status . '</div>'; 86 echo '<div class="col-sm-2 text-muted">' . \LibreNMS\Util\Time::formatInterval(time() - $service['service_changed']) . '</div>'; 87 echo '<div class="col-sm-2 text-muted">' . $service['service_desc'] . '</div>'; 88 echo '<div class="col-sm-5">' . nl2br(trim($service['service_message'])) . '</div>'; 89 echo '<div class="col-sm-2">'; 90 echo '<div class="pull-right">'; 91 if (Auth::user()->hasGlobalAdmin()) { 92 echo "<button type='button' class='btn btn-primary btn-sm' aria-label='Edit' data-toggle='modal' data-target='#create-service' data-service_id='{$service['service_id']}' name='edit-service'><i class='fa fa-pencil' aria-hidden='true'></i></button> 93 <button type='button' class='btn btn-danger btn-sm' aria-label='Delete' data-toggle='modal' data-target='#confirm-delete' data-service_id='{$service['service_id']}' name='delete-service'><i class='fa fa-trash' aria-hidden='true'></i></button"; 94 } 95 echo '</div>'; 96 echo '</div>'; 97 98 if ($vars['view'] == 'details') { 99 // if we have a script for this check, use it. 100 $check_ds = null; 101 $check_script = \LibreNMS\Config::get('install_dir') . '/includes/services/check_' . strtolower($service['service_type']) . '.inc.php'; 102 if (is_file($check_script)) { 103 include $check_script; 104 105 // If we have a replacement DS use it. 106 if (isset($check_ds)) { 107 $service['service_ds'] = $check_ds; 108 } 109 } 110 111 $graphs = json_decode($service['service_ds'], true); 112 foreach ($graphs as $k => $v) { 113 $graph_array['device'] = $device['device_id']; 114 $graph_array['type'] = 'service_graph'; 115 $graph_array['id'] = $service['service_id']; 116 $graph_array['ds'] = $k; 117 118 echo '<tr>'; 119 echo '<td colspan="5"><div class="col-sm-12">'; 120 121 include 'includes/html/print-graphrow.inc.php'; 122 123 echo '</div></td>'; 124 echo '</tr>'; 125 } 126 } 127 } 128 echo '</table>'; 129} else { 130 echo '<div class="device-services-page-no-service">No Services</div>'; 131} 132 133echo '</div>'; 134