123 lines
4.9 KiB
PHP
123 lines
4.9 KiB
PHP
<?php // vim:fenc=utf-8:filetype=php:ts=4
|
|
/*
|
|
* Copyright (C) 2009 Bruno Prémont <bonbons AT linux-vserver.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; only version 2 of the License is applicable.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied wadsnty 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, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
require('includes/collectd/config.php');
|
|
require_once('includes/collectd/functions.php');
|
|
require_once('includes/collectd/definitions.php');
|
|
include_once($config['html_dir']."/includes/graphs/common.inc.php");
|
|
|
|
|
|
|
|
// Process input arguments
|
|
#$host = read_var('host', $vars, null);
|
|
$host = $device['hostname'];
|
|
if (is_null($host))
|
|
return error400("?/?-?/?", "Missing host name");
|
|
else if (!is_string($host))
|
|
return error400("?/?-?/?", "Expecting exactly 1 host name");
|
|
else if (strlen($host) == 0)
|
|
return error400("?/?-?/?", "Host name may not be blank");
|
|
|
|
$plugin = read_var('c_plugin', $vars, null);
|
|
if (is_null($plugin))
|
|
return error400($host.'/?-?/?', "Missing plugin name");
|
|
else if (!is_string($plugin))
|
|
return error400($host.'/?-?/?', "Plugin name must be a string");
|
|
else if (strlen($plugin) == 0)
|
|
return error400($host.'/?-?/?', "Plugin name may not be blank");
|
|
|
|
$pinst = read_var('c_plugin_instance', $vars, '');
|
|
if (!is_string($pinst))
|
|
return error400($host.'/'.$plugin.'-?/?', "Plugin instance name must be a string");
|
|
|
|
$type = read_var('c_type', $vars, '');
|
|
if (is_null($type))
|
|
return error400($host.'/'.$plugin.(strlen($pinst) ? '-'.$pinst : '').'/?', "Missing type name");
|
|
else if (!is_string($type))
|
|
return error400($host.'/'.$plugin.(strlen($pinst) ? '-'.$pinst : '').'/?', "Type name must be a string");
|
|
else if (strlen($type) == 0)
|
|
return error400($host.'/'.$plugin.(strlen($pinst) ? '-'.$pinst : '').'/?', "Type name may not be blank");
|
|
|
|
$tinst = read_var('c_type_instance', $vars, '');
|
|
|
|
$graph_identifier = $host.'/'.$plugin.(strlen($pinst) ? '-'.$pinst : '').'/'.$type.(strlen($tinst) ? '-'.$tinst : '-*');
|
|
$timespan = read_var('timespan', $vars, $config['timespan'][0]['name']);
|
|
$timespan_ok = false;
|
|
foreach ($config['timespan'] as &$ts)
|
|
if ($ts['name'] == $timespan)
|
|
$timespan_ok = true;
|
|
if (!$timespan_ok)
|
|
return error400($graph_identifier, "Unknown timespan requested");
|
|
|
|
$logscale = (boolean)read_var('logarithmic', $vars, false);
|
|
$tinylegend = (boolean)read_var('tinylegend', $vars, false);
|
|
|
|
// Check that at least 1 RRD exists for the specified request
|
|
$all_tinst = collectd_list_tinsts($host, $plugin, $pinst, $type);
|
|
if (safe_count($all_tinst) == 0)
|
|
return error404($graph_identifier, "No rrd file found for graphing");
|
|
|
|
// Now that we are read, do the bulk work
|
|
load_graph_definitions($logscale, $tinylegend);
|
|
|
|
$pinst = strlen($pinst) == 0 ? null : $pinst;
|
|
$tinst = strlen($tinst) == 0 ? null : $tinst;
|
|
|
|
$opts = array();
|
|
$opts['timespan'] = $timespan;
|
|
if ($logscale)
|
|
$opts['logarithmic'] = 1;
|
|
if ($tinylegend)
|
|
$opts['tinylegend'] = 1;
|
|
|
|
$rrd_cmd = false;
|
|
if (isset($MetaGraphDefs[$type])) {
|
|
$identifiers = array();
|
|
foreach ($all_tinst as &$atinst)
|
|
$identifiers[] = collectd_identifier($host, $plugin, is_null($pinst) ? '' : $pinst, $type, $atinst);
|
|
collectd_flush($identifiers);
|
|
$rrd_cmd = $MetaGraphDefs[$type]($host, $plugin, $pinst, $type, $all_tinst, $opts);
|
|
} else {
|
|
if (!in_array(is_null($tinst) ? '' : $tinst, $all_tinst))
|
|
return error404($host.'/'.$plugin.(!is_null($pinst) ? '-'.$pinst : '').'/'.$type.(!is_null($tinst) ? '-'.$tinst : ''), "No rrd file found for graphing");
|
|
collectd_flush(collectd_identifier($host, $plugin, is_null($pinst) ? '' : $pinst, $type, is_null($tinst) ? '' : $tinst));
|
|
if (isset($GraphDefs[$type]))
|
|
$rrd_cmd = collectd_draw_generic($timespan, $host, $plugin, $pinst, $type, $tinst);
|
|
else
|
|
$rrd_cmd = collectd_draw_rrd($host, $plugin, $pinst, $type, $tinst);
|
|
}
|
|
|
|
if(isset($rrd_cmd))
|
|
{
|
|
if ($vars['from']) { $from = $vars['from']; }
|
|
if ($vars['to']) { $to = $vars['to']; }
|
|
$rrd_cmd .= " -s " . escapeshellarg($from) . " -e " . escapeshellarg($to);
|
|
}
|
|
|
|
/*
|
|
if ($vars['legend'] == "no") { $rrd_cmd .= " -g "; }
|
|
|
|
if ($vars['height'] < "99") { $rrd_cmd .= " --only-graph "; }
|
|
if ($vars['width'] <= "300") { $rrd_cmd .= " --font LEGEND:7:" . $config['mono_font'] . " --font AXIS:6:" . $config['mono_font'] . " "; }
|
|
else { $rrd_cmd .= " --font LEGEND:8:" . $config['mono_font'] . " --font AXIS:7:" . $config['mono_font'] . " "; }
|
|
*/
|
|
$rt = 0;
|
|
$rrd_options .= $rrd_cmd;
|
|
|
|
// EOF
|