diff --git a/dist-pollers.php b/dist-pollers.php new file mode 100755 index 000000000..81e711694 --- /dev/null +++ b/dist-pollers.php @@ -0,0 +1,63 @@ +#!/usr/bin/env php + + * + * 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. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +chdir(dirname($argv[0])); + +include("includes/defaults.inc.php"); +include("config.php"); +include("includes/definitions.inc.php"); +include("includes/functions.php"); +include("includes/polling/functions.inc.php"); +include("includes/alerts.inc.php"); +include('includes/console_table.php'); + +$options = getopt("l:u:r::"); + +if (isset($options['l'])) { + if ($options['l'] == 'pollers') { + $tbl = new Console_Table(); + $tbl->setHeaders(array('ID','Poller Name','Last Polled','# Devices','Poll Time')); + foreach (dbFetchRows("SELECT * FROM `pollers`") as $poller) { + $tbl->addRow(array($poller['id'],$poller['poller_name'],$poller['last_polled'],$poller['devices'],$poller['time_taken'])); + } + echo $tbl->getTable(); + } elseif ($options['l'] == 'groups') { + $tbl = new Console_Table(); + $tbl->setHeaders(array('ID','Group Name','Description')); + foreach (dbFetchRows("SELECT * FROM `poller_groups`") as $groups) { + $tbl->addRow(array($groups['id'],$groups['group_name'],$groups['descr'])); + } + echo $tbl->getTable(); + } +} elseif (isset($options['u']) && !empty($options['u'])) { + if (is_numeric($options['u'])) { + $db_column = 'id'; + } else { + $db_column = 'poller_name'; + } + if (dbDelete('pollers',"`$db_column` = ?", array($options['u'])) >= 0) { + echo "Poller " . $options['u'] . " has been removed\n"; + } +} elseif (isset($options['r'])) { + if(dbInsert(array('poller_name' => $config['distributed_poller_name'], 'last_polled' => '0000-00-00 00:00:00', 'devices' => 0, 'time_taken' => 0), 'pollers') >= 0) { + echo "Poller " . $config['distributed_poller_name'] . " has been registered\n"; + } +} else { + echo "-l pollers | groups List registered pollers or poller groups\n"; + echo "-u | Unregister a poller\n"; + echo "-r Register this install as a poller\n"; +} + +?> diff --git a/html/forms/parse-poller-groups.inc.php b/html/forms/parse-poller-groups.inc.php new file mode 100644 index 000000000..72fd86eb7 --- /dev/null +++ b/html/forms/parse-poller-groups.inc.php @@ -0,0 +1,25 @@ + + * + * 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. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() === false) { + die('ERROR: You need to be admin'); +} + +$group_id = ($_POST['group_id']); + +if(is_numeric($group_id) && $group_id > 0) { + $group = dbFetchRow("SELECT * FROM `poller_groups` WHERE `id` = ? LIMIT 1",array($group_id)); + $output = array('group_name'=>$group['group_name'],'descr'=>$group['descr']); + echo _json_encode($output); +} diff --git a/html/forms/poller-group-remove.inc.php b/html/forms/poller-group-remove.inc.php new file mode 100644 index 000000000..b07f2c442 --- /dev/null +++ b/html/forms/poller-group-remove.inc.php @@ -0,0 +1,30 @@ + + * + * 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. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if (!is_numeric($_POST['group_id'])) { + echo('error with data'); + exit; +} else { + if($_POST['confirm'] == 'yes') + { + $delete = dbDelete('poller_groups', '`id` = ?', array($_POST['group_id'])); + if ($delete > '0') { + echo('Poller group has been removed'); + exit; + } else { + echo('An error occurred removing the Poller group'); + exit; + } + } +} diff --git a/html/forms/poller-groups.inc.php b/html/forms/poller-groups.inc.php new file mode 100644 index 000000000..a9856729b --- /dev/null +++ b/html/forms/poller-groups.inc.php @@ -0,0 +1,47 @@ + + * + * 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. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() === false) { + die('ERROR: You need to be admin'); +} + +$ok = ''; +$error = ''; +$group_id = $_POST['group_id']; +$group_name = mres($_POST['group_name']); +$descr = mres($_POST['descr']); +if(!empty($group_name)) { + if( is_numeric($group_id)) { + if (dbUpdate(array('group_name' => $group_name, 'descr' => $descr), "poller_groups", "id = ?", array($group_id))) { + $ok = "Updated poller group"; + } else { + $error = "Failed to update the poller group"; + } + } else { + if (dbInsert(array('group_name' => $group_name, 'descr' => $descr), 'poller_groups') >= 0) { + $ok = "Added new poller group"; + } else { + $error = "Failed to create new poller group"; + } + } +} else { + $error = "You haven't given your poller group a name, it feels sad :( - $group_name"; +} + +if(!empty( $ok )) { + die("$ok"); +} else { + die("ERROR: $error"); +} +?> diff --git a/html/includes/modal/poller_groups.inc.php b/html/includes/modal/poller_groups.inc.php new file mode 100644 index 000000000..81e014f4a --- /dev/null +++ b/html/includes/modal/poller_groups.inc.php @@ -0,0 +1,159 @@ + + * + * 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. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() === false) { + echo ('ERROR: You need to be admin'); +} else { +?> + + + + + + + diff --git a/html/includes/print-menubar.php b/html/includes/print-menubar.php index 8eda4983b..b0dcc22c3 100644 --- a/html/includes/print-menubar.php +++ b/html/includes/print-menubar.php @@ -446,6 +446,21 @@ if ($_SESSION['userlevel'] >= '10')
  • Edit User
  • Authlog
  • +'); + if($config['distributed_poller'] === TRUE) { + echo(' + + + '); + } + +echo('