mirror of
https://github.com/Cacti/cacti.git
synced 2026-11-09 14:02:54 +09:00
852 lines
31 KiB
PHP
852 lines
31 KiB
PHP
<?php
|
|
/*
|
|
+-------------------------------------------------------------------------+
|
|
| Copyright (C) 2004-2021 The Cacti Group |
|
|
| |
|
|
| 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 2 |
|
|
| 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. |
|
|
+-------------------------------------------------------------------------+
|
|
| Cacti: The Complete RRDtool-based Graphing Solution |
|
|
+-------------------------------------------------------------------------+
|
|
| This code is designed, written, and maintained by the Cacti Group. See |
|
|
| about.php and/or the AUTHORS file for specific developer information. |
|
|
+-------------------------------------------------------------------------+
|
|
| http://www.cacti.net/ |
|
|
+-------------------------------------------------------------------------+
|
|
*/
|
|
|
|
include('./include/auth.php');
|
|
include_once('./lib/snmp.php');
|
|
|
|
$automation_snmp_actions = array(
|
|
1 => __('Delete'),
|
|
2 => __('Duplicate'),
|
|
);
|
|
|
|
/* set default action */
|
|
set_default_action();
|
|
|
|
/* correct for a cancel button */
|
|
if (isset_request_var('cancel')) {
|
|
set_request_var('action', '');
|
|
}
|
|
|
|
switch (get_request_var('action')) {
|
|
case 'save':
|
|
form_automation_snmp_save();
|
|
|
|
break;
|
|
case 'actions':
|
|
form_automation_snmp_actions();
|
|
|
|
break;
|
|
case 'ajax_dnd':
|
|
automation_snmp_item_dnd();
|
|
|
|
break;
|
|
case 'item_movedown':
|
|
get_filter_request_var('id');
|
|
|
|
automation_snmp_item_movedown();
|
|
|
|
header('Location: automation_snmp.php?action=edit&id=' . get_request_var('id'));
|
|
break;
|
|
case 'item_moveup':
|
|
get_filter_request_var('id');
|
|
|
|
automation_snmp_item_moveup();
|
|
|
|
header('Location: automation_snmp.php?action=edit&id=' . get_request_var('id'));
|
|
break;
|
|
case 'item_remove_confirm':
|
|
automation_snmp_item_remove_confirm();
|
|
|
|
break;
|
|
case 'item_remove':
|
|
get_filter_request_var('id');
|
|
|
|
automation_snmp_item_remove();
|
|
|
|
header('Location: automation_snmp.php?header=false&action=edit&header=false&id=' . get_request_var('id'));
|
|
break;
|
|
case 'item_edit':
|
|
top_header();
|
|
|
|
automation_snmp_item_edit();
|
|
|
|
bottom_footer();
|
|
break;
|
|
case 'edit':
|
|
top_header();
|
|
|
|
automation_snmp_edit();
|
|
|
|
bottom_footer();
|
|
break;
|
|
default:
|
|
top_header();
|
|
|
|
automation_snmp();
|
|
|
|
bottom_footer();
|
|
break;
|
|
}
|
|
|
|
function form_automation_snmp_save() {
|
|
if (isset_request_var('save_component_automation_snmp')) {
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('id');
|
|
/* ==================================================== */
|
|
|
|
$save['id'] = get_nfilter_request_var('id');
|
|
$save['name'] = form_input_validate(get_nfilter_request_var('name'), 'name', '', false, 3);
|
|
|
|
if (!is_error_message()) {
|
|
$id = sql_save($save, 'automation_snmp');
|
|
if ($id) {
|
|
raise_message(1);
|
|
} else {
|
|
raise_message(2);
|
|
}
|
|
}
|
|
|
|
header('Location: automation_snmp.php?header=false&action=edit&id=' . (empty($id) ? get_nfilter_request_var('id') : $id));
|
|
} elseif (isset_request_var('save_component_automation_snmp_item')) {
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('item_id');
|
|
get_filter_request_var('id');
|
|
/* ==================================================== */
|
|
|
|
$save = array();
|
|
$save['id'] = form_input_validate(get_nfilter_request_var('item_id'), '', '^[0-9]+$', false, 3);
|
|
$save['snmp_id'] = form_input_validate(get_nfilter_request_var('id'), 'snmp_id', '^[0-9]+$', false, 3);
|
|
$save['sequence'] = form_input_validate(get_nfilter_request_var('sequence'), 'sequence', '^[0-9]+$', false, 3);
|
|
$save['snmp_community'] = form_input_validate(get_nfilter_request_var('snmp_community'), 'snmp_community', '', false, 3);
|
|
$save['snmp_version'] = form_input_validate(get_nfilter_request_var('snmp_version'), 'snmp_version', '', false, 3);
|
|
$save['snmp_username'] = form_input_validate(get_nfilter_request_var('snmp_username'), 'snmp_username', '', true, 3);
|
|
$save['snmp_password'] = form_input_validate(get_nfilter_request_var('snmp_password'), 'snmp_password', '', true, 3);
|
|
$save['snmp_auth_protocol'] = form_input_validate(get_nfilter_request_var('snmp_auth_protocol'), 'snmp_auth_protocol', '', true, 3);
|
|
$save['snmp_priv_passphrase'] = form_input_validate(get_nfilter_request_var('snmp_priv_passphrase'), 'snmp_priv_passphrase', '', true, 3);
|
|
$save['snmp_priv_protocol'] = form_input_validate(get_nfilter_request_var('snmp_priv_protocol'), 'snmp_priv_protocol', '', true, 3);
|
|
$save['snmp_context'] = form_input_validate(get_nfilter_request_var('snmp_context'), 'snmp_context', '', true, 3);
|
|
$save['snmp_engine_id'] = form_input_validate(get_nfilter_request_var('snmp_engine_id'), 'snmp_engine_id', '', true, 3);
|
|
$save['snmp_port'] = form_input_validate(get_nfilter_request_var('snmp_port'), 'snmp_port', '^[0-9]+$', false, 3);
|
|
$save['snmp_timeout'] = form_input_validate(get_nfilter_request_var('snmp_timeout'), 'snmp_timeout', '^[0-9]+$', false, 3);
|
|
$save['snmp_retries'] = form_input_validate(get_nfilter_request_var('snmp_retries'), 'snmp_retries', '^[0-9]+$', false, 3);
|
|
$save['max_oids'] = form_input_validate(get_nfilter_request_var('max_oids'), 'max_oids', '^[0-9]+$', false, 3);
|
|
|
|
if (!is_error_message()) {
|
|
$item_id = sql_save($save, 'automation_snmp_items');
|
|
|
|
if ($item_id) {
|
|
raise_message(1);
|
|
} else {
|
|
raise_message(2);
|
|
}
|
|
}
|
|
|
|
if (is_error_message()) {
|
|
header('Location: automation_snmp.php?header=false&action=item_edit&id=' . get_nfilter_request_var('id') . '&item_id=' . (empty($item_id) ? get_filter_request_var('id') : $item_id));
|
|
} else {
|
|
header('Location: automation_snmp.php?header=false&action=edit&id=' . get_nfilter_request_var('id'));
|
|
}
|
|
} else {
|
|
raise_message(2);
|
|
header('Location: automation_snmp.php?header=false');
|
|
}
|
|
}
|
|
|
|
|
|
/* ------------------------
|
|
The 'actions' function
|
|
------------------------ */
|
|
function form_automation_snmp_actions() {
|
|
global $config, $automation_snmp_actions;
|
|
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('drp_action');
|
|
/* ==================================================== */
|
|
|
|
/* if we are to save this form, instead of display it */
|
|
if (isset_request_var('selected_items')) {
|
|
$selected_items = sanitize_unserialize_selected_items(get_nfilter_request_var('selected_items'));
|
|
|
|
if ($selected_items != false) {
|
|
if (get_nfilter_request_var('drp_action') == '1') { /* delete */
|
|
db_execute('DELETE FROM automation_snmp WHERE ' . array_to_sql_or($selected_items, 'id'));
|
|
db_execute('DELETE FROM automation_snmp_items WHERE ' . str_replace('id', 'snmp_id', array_to_sql_or($selected_items, 'id')));
|
|
} elseif (get_nfilter_request_var('drp_action') == '2') { /* duplicate */
|
|
for ($i=0;($i<cacti_count($selected_items));$i++) {
|
|
automation_duplicate_snmp_option($selected_items[$i], get_nfilter_request_var('name_format'));
|
|
}
|
|
}
|
|
}
|
|
|
|
header('Location: automation_snmp.php?header=false');
|
|
exit;
|
|
}
|
|
|
|
/* setup some variables */
|
|
$snmp_groups = ''; $i = 0;
|
|
/* loop through each of the graphs selected on the previous page and get more info about them */
|
|
foreach ($_POST as $var => $val) {
|
|
if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) {
|
|
/* ================= input validation ================= */
|
|
input_validate_input_number($matches[1]);
|
|
/* ==================================================== */
|
|
$snmp_groups .= '<li>' . html_escape(db_fetch_cell_prepared('SELECT name FROM automation_snmp WHERE id = ?', array($matches[1]))) . '</li>';
|
|
$automation_array[$i] = $matches[1];
|
|
$i++;
|
|
}
|
|
}
|
|
|
|
general_header();
|
|
|
|
?>
|
|
<script type='text/javascript'>
|
|
function goTo(location) {
|
|
document.location = location;
|
|
}
|
|
</script>
|
|
<?php
|
|
|
|
form_start('automation_snmp.php', 'automation_filter');
|
|
|
|
html_start_box($automation_snmp_actions[get_nfilter_request_var('drp_action')], '60%', '', '3', 'center', '');
|
|
|
|
if (!isset($automation_array)) {
|
|
raise_message(40);
|
|
header('Location: automation_snmp.php?header=false');
|
|
exit;
|
|
} else {
|
|
$save_html = "<input type='submit' class='ui-button ui-corner-all ui-widget' value='" . __esc('Continue') . "' name='save'>";
|
|
|
|
if (get_nfilter_request_var('drp_action') == '1') { /* delete */
|
|
print "<tr>
|
|
<td class='textArea'>
|
|
<p>" . __('Click \'Continue\' to delete the following SNMP Option(s).') . "</p>
|
|
<div class='itemlist'><ul>$snmp_groups</ul></div>
|
|
</td>
|
|
</tr>";
|
|
} elseif (get_nfilter_request_var('drp_action') == '2') { /* duplicate */
|
|
print "<tr>
|
|
<td class='textArea'>
|
|
<p>" . __('Click \'Continue\' to duplicate the following SNMP Options. You can optionally change the title format for the new SNMP Options.') . "</p>
|
|
<div class='itemlist'><ul>$snmp_groups</ul></div>
|
|
<p>" . __('Name Format') . '<br>'; form_text_box('name_format', '<' . __('name') . '> (1)', '', '255', '30', 'text'); print "</p>
|
|
</td>
|
|
</tr>";
|
|
}
|
|
}
|
|
|
|
print "<tr>
|
|
<td class='saveRow'>
|
|
<input type='hidden' name='action' value='actions'>
|
|
<input type='hidden' name='selected_items' value='" . (isset($automation_array) ? serialize($automation_array) : '') . "'>
|
|
<input type='hidden' name='drp_action' value='" . html_escape(get_nfilter_request_var('drp_action')) . "'>
|
|
<input type='button' class='ui-button ui-corner-all ui-widget' onClick='cactiReturnTo()' value='" . ($save_html == '' ? __esc('Return'):__esc('Cancel')) . "' name='cancel'>
|
|
$save_html
|
|
</td>
|
|
</tr>";
|
|
|
|
html_end_box();
|
|
|
|
form_end();
|
|
|
|
bottom_footer();
|
|
}
|
|
|
|
/* --------------------------
|
|
SNMP Options Functions
|
|
-------------------------- */
|
|
|
|
function automation_duplicate_snmp_option($id, $new_name) {
|
|
$name = db_fetch_cell_prepared('SELECT name
|
|
FROM automation_snmp
|
|
WHERE id = ?', array($id));
|
|
|
|
$new_name = str_replace('<name>', $name, $new_name);
|
|
|
|
$save['id'] = 0;
|
|
$save['name'] = $new_name;
|
|
|
|
$newid = sql_save($save, 'automation_snmp');
|
|
|
|
if ($newid > 0 && $id > 0) {
|
|
db_execute_prepared("INSERT INTO automation_snmp_items
|
|
(snmp_id, sequence, snmp_version, snmp_community, snmp_port, snmp_timeout,
|
|
snmp_retries, max_oids, snmp_username, snmp_password, snmp_auth_protocol,
|
|
snmp_priv_passphrase, snmp_priv_protocol, snmp_context, snmp_engine_id)
|
|
SELECT $newid AS snmp_id, sequence, snmp_version, snmp_community, snmp_port, snmp_timeout,
|
|
snmp_retries, max_oids, snmp_username, snmp_password, snmp_auth_protocol,
|
|
snmp_priv_passphrase, snmp_priv_protocol, snmp_context, snmp_engine_id
|
|
FROM automation_snmp_items
|
|
WHERE snmp_id = ?",
|
|
array($id));
|
|
|
|
raise_message('option_duplicated', __('Automation SNMP Options has been Duplicated.'), MESSAGE_LEVEL_INFO);
|
|
} else {
|
|
raise_message('missing_options', __('Automation Item does not exist. Can not Duplicate.'), MESSAGE_LEVEL_ERROR);
|
|
}
|
|
}
|
|
|
|
function automation_snmp_item_dnd() {
|
|
/* ================= Input validation ================= */
|
|
get_filter_request_var('id');
|
|
/* ================= Input validation ================= */
|
|
|
|
if (isset_request_var('snmp_item') && is_array(get_nfilter_request_var('snmp_item'))) {
|
|
$items = get_request_var('snmp_item');
|
|
$sequence = 1;
|
|
|
|
foreach($items as $item) {
|
|
$item = str_replace('line', '', $item);
|
|
input_validate_input_number($item);
|
|
|
|
db_execute_prepared('UPDATE automation_snmp_items
|
|
SET sequence = ?
|
|
WHERE id = ?',
|
|
array($sequence, $item));
|
|
|
|
$sequence++;
|
|
}
|
|
}
|
|
|
|
header('Location: automation_snmp.php?action=edit&header=false&id=' . get_request_var('id'));
|
|
exit;
|
|
}
|
|
|
|
function automation_snmp_item_movedown() {
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('item_id');
|
|
get_filter_request_var('id');
|
|
/* ==================================================== */
|
|
|
|
move_item_down('automation_snmp_items', get_request_var('item_id'), 'snmp_id=' . get_request_var('id'));
|
|
}
|
|
|
|
function automation_snmp_item_moveup() {
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('item_id');
|
|
get_filter_request_var('id');
|
|
/* ==================================================== */
|
|
|
|
move_item_up('automation_snmp_items', get_request_var('item_id'), 'snmp_id=' . get_request_var('id'));
|
|
}
|
|
|
|
function automation_snmp_item_remove_confirm() {
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('id');
|
|
get_filter_request_var('item_id');
|
|
/* ==================================================== */
|
|
|
|
form_start('automation_snmp.php');
|
|
|
|
html_start_box('', '100%', '', '3', 'center', '');
|
|
|
|
$snmp = db_fetch_row_prepared('SELECT * FROM automation_snmp WHERE id = ?', array(get_request_var('id')));
|
|
$item = db_fetch_row_prepared('SELECT * FROM automation_snmp_items WHERE id = ?', array(get_request_var('item_id')));
|
|
|
|
?>
|
|
<tr>
|
|
<td class='topBoxAlt'>
|
|
<p><?php print __('Click \'Continue\' to delete the following SNMP Option Item.'); ?></p>
|
|
<p><?php print __('SNMP Option:');?> <?php print html_escape($snmp['name']);?><br>
|
|
<?php print __('SNMP Version: <b>%s</b>', $item['snmp_version']);?><br>
|
|
<?php print __('SNMP Community/Username: <b>%s</b>', ($item['snmp_version'] != 3 ? html_escape($item['snmp_community']):html_escape($item['snmp_username'])));?></p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class='right'>
|
|
<input type='button' class='ui-button ui-corner-all ui-widget' id='cancel' value='<?php print __esc('Cancel');?>' onClick='$("#cdialog").dialog("close");' name='cancel'>
|
|
<input type='button' class='ui-button ui-corner-all ui-widget' id='continue' value='<?php print __esc('Continue');?>' name='continue' title='<?php print __esc('Remove SNMP Item');?>'>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
|
|
html_end_box();
|
|
|
|
form_end();
|
|
|
|
?>
|
|
<script type='text/javascript'>
|
|
$(function() {
|
|
$('#continue').click(function(data) {
|
|
$.post('automation_snmp.php?action=item_remove', {
|
|
__csrf_magic: csrfMagicToken,
|
|
item_id: <?php print get_request_var('item_id');?>,
|
|
id: <?php print get_request_var('id');?>
|
|
}, function(data) {
|
|
$('#cdialog').dialog('close');
|
|
loadPageNoHeader('automation_snmp.php?action=edit&header=false&id=<?php print get_request_var('id');?>');
|
|
});
|
|
});
|
|
});
|
|
|
|
</script>
|
|
<?php
|
|
|
|
}
|
|
|
|
function automation_snmp_item_remove() {
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('item_id');
|
|
/* ==================================================== */
|
|
|
|
db_execute_prepared('DELETE FROM automation_snmp_items WHERE id = ?', array(get_request_var('item_id')));
|
|
}
|
|
|
|
function automation_snmp_item_edit() {
|
|
global $config, $snmp_auth_protocols, $snmp_priv_protocols, $snmp_versions, $snmp_security_levels;
|
|
|
|
#include_once($config['base_path'].'/plugins/mactrack/lib/automation_functions.php');
|
|
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('id');
|
|
get_filter_request_var('item_id');
|
|
/* ==================================================== */
|
|
|
|
# fetch the current mactrack snmp record
|
|
$snmp_option = db_fetch_row_prepared('SELECT *
|
|
FROM automation_snmp
|
|
WHERE id = ?', array(get_request_var('id')));
|
|
|
|
# if an existing item was requested, fetch data for it
|
|
if (get_request_var('item_id', '') !== '') {
|
|
$automation_snmp_item = db_fetch_row_prepared('SELECT *
|
|
FROM automation_snmp_items
|
|
WHERE id = ?', array(get_request_var('item_id')));
|
|
|
|
$header_label = __esc('SNMP Options [edit: %s]', $snmp_option['name']);
|
|
} else {
|
|
$header_label = __('SNMP Options [new]');
|
|
$automation_snmp_item = array();
|
|
$automation_snmp_item['snmp_id'] = get_request_var('id');
|
|
$automation_snmp_item['sequence'] = get_sequence('', 'sequence', 'automation_snmp_items', 'snmp_id=' . get_request_var('id'));
|
|
}
|
|
|
|
form_start('automation_snmp.php', 'automation_item_edit');
|
|
|
|
html_start_box($header_label, '100%', true, '3', 'center', '');
|
|
|
|
/* this is snmp we are talking about here */
|
|
unset($snmp_versions[0]);
|
|
|
|
global $fields_snmp_item_with_retry;
|
|
|
|
/* file: mactrack_snmp.php, action: item_edit */
|
|
$fields_automation_snmp_item_edit = $fields_snmp_item_with_retry + array(
|
|
'sequence' => array(
|
|
'method' => 'view',
|
|
'friendly_name' => __('Sequence'),
|
|
'description' => __('Sequence of Item.'),
|
|
'value' => '|arg1:sequence|'),
|
|
);
|
|
|
|
draw_edit_form(array(
|
|
'config' => array('no_form_tag' => true),
|
|
'fields' => inject_form_variables($fields_automation_snmp_item_edit, (isset($automation_snmp_item) ? $automation_snmp_item : array()))
|
|
));
|
|
|
|
html_end_box(true, true);
|
|
|
|
form_hidden_box('item_id', (isset_request_var('item_id') ? get_request_var('item_id') : '0'), '');
|
|
form_hidden_box('id', (isset($automation_snmp_item['snmp_id']) ? $automation_snmp_item['snmp_id'] : '0'), '');
|
|
form_hidden_box('save_component_automation_snmp_item', '1', '');
|
|
|
|
form_save_button('automation_snmp.php?action=edit&id=' . get_request_var('id'));
|
|
|
|
?>
|
|
<script type='text/javascript'>
|
|
|
|
$(function() {
|
|
// Need to set this for global snmpv3 functions to remain sane between edits
|
|
snmp_security_initialized = false;
|
|
|
|
setSNMP();
|
|
});
|
|
</script>
|
|
<?php
|
|
}
|
|
|
|
function automation_snmp_edit() {
|
|
global $config, $fields_automation_snmp_edit;
|
|
|
|
/* ================= input validation ================= */
|
|
get_filter_request_var('id');
|
|
/* ==================================================== */
|
|
|
|
/* display the mactrack snmp option set */
|
|
$snmp_group = array();
|
|
if (!isempty_request_var('id')) {
|
|
$snmp_group = db_fetch_row_prepared('SELECT * FROM automation_snmp where id = ?', array(get_request_var('id')));
|
|
# setup header
|
|
$header_label = __esc('SNMP Option Set [edit: %s]', $snmp_group['name']);
|
|
} else {
|
|
$header_label = __('SNMP Option Set [new]');
|
|
}
|
|
|
|
form_start('automation_snmp.php', 'automation_snmp_group');
|
|
|
|
html_start_box($header_label, '100%', true, '3', 'center', '');
|
|
|
|
/* file: automation_snmp.php, action: edit */
|
|
$fields_automation_snmp_edit = array(
|
|
'name' => array(
|
|
'method' => 'textbox',
|
|
'friendly_name' => __('Name'),
|
|
'description' => __('Fill in the name of this SNMP Option Set.'),
|
|
'value' => '|arg1:name|',
|
|
'default' => '',
|
|
'max_length' => '100',
|
|
'size' => '40'
|
|
)
|
|
);
|
|
|
|
|
|
draw_edit_form(array(
|
|
'config' => array('no_form_tag' => true),
|
|
'fields' => inject_form_variables($fields_automation_snmp_edit, $snmp_group)
|
|
));
|
|
|
|
html_end_box(true, true);
|
|
|
|
form_hidden_box('id', (isset_request_var('id') ? get_request_var('id'): '0'), '');
|
|
form_hidden_box('save_component_automation_snmp', '1', '');
|
|
|
|
if (!isempty_request_var('id')) {
|
|
$items = db_fetch_assoc_prepared('SELECT *
|
|
FROM automation_snmp_items
|
|
WHERE snmp_id = ?
|
|
ORDER BY sequence', array(get_request_var('id')));
|
|
|
|
html_start_box(__('Automation SNMP Options'), '100%', '', '3', 'center', 'automation_snmp.php?action=item_edit&id=' . get_request_var('id'));
|
|
|
|
$display_text = array(
|
|
array('display' => __('Item'), 'align' => 'left'),
|
|
array('display' => __('Version'), 'align' => 'left'),
|
|
array('display' => __('Community'), 'align' => 'left'),
|
|
array('display' => __('Port'), 'align' => 'right'),
|
|
array('display' => __('Timeout'), 'align' => 'right'),
|
|
array('display' => __('Retries'), 'align' => 'right'),
|
|
array('display' => __('Max OIDS'), 'align' => 'right'),
|
|
array('display' => __('Auth Username'), 'align' => 'left'),
|
|
array('display' => __('Auth Password'), 'align' => 'left'),
|
|
array('display' => __('Auth Protocol'), 'align' => 'left'),
|
|
array('display' => __('Priv Passphrase'), 'align' => 'left'),
|
|
array('display' => __('Priv Protocol'), 'align' => 'left'),
|
|
array('display' => __('Context'), 'align' => 'left'),
|
|
array('display' => __('Action'), 'align' => 'right')
|
|
);
|
|
|
|
html_header($display_text);
|
|
|
|
$i = 1;
|
|
$total_items = cacti_sizeof($items);
|
|
if (cacti_sizeof($items)) {
|
|
foreach ($items as $item) {
|
|
form_alternate_row('line' . $item['id'], true, true);
|
|
$form_data = "<td><a class='linkEditMain' href='" . html_escape('automation_snmp.php?action=item_edit&item_id=' . $item['id'] . '&id=' . $item['snmp_id']) . "'>" . __('Item#%d', $i) . '</a></td>';
|
|
$form_data .= '<td>' . $item['snmp_version'] . '</td>';
|
|
$form_data .= '<td class="left">' . ($item['snmp_version'] == 3 ? __('none') : html_escape($item['snmp_community'])) . '</td>';
|
|
$form_data .= '<td class="right">' . $item['snmp_port'] . '</td>';
|
|
$form_data .= '<td class="right">' . $item['snmp_timeout'] . '</td>';
|
|
$form_data .= '<td class="right">' . $item['snmp_retries'] . '</td>';
|
|
$form_data .= '<td class="right">' . $item['max_oids'] . '</td>';
|
|
$form_data .= '<td>' . ($item['snmp_version'] == 3 ? html_escape($item['snmp_username']) : __('N/A')) . '</td>';
|
|
$form_data .= '<td>' . (($item['snmp_version'] == 3 AND $item['snmp_password'] !== '') ? '*********' : __('N/A')) . '</td>';
|
|
$form_data .= '<td>' . ($item['snmp_version'] == 3 ? $item['snmp_auth_protocol'] : __('N/A')) . '</td>';
|
|
$form_data .= '<td>' . ($item['snmp_version'] == 3 ? '*********' : __('N/A')) . '</td>';
|
|
$form_data .= '<td>' . ($item['snmp_version'] == 3 ? $item['snmp_priv_protocol'] : __('N/A')) . '</td>';
|
|
$form_data .= '<td>' . ($item['snmp_version'] == 3 ? html_escape($item['snmp_context']) : __('N/A')) . '</td>';
|
|
$form_data .= '<td class="nowrap right">';
|
|
|
|
if (read_config_option('drag_and_drop') == '') {
|
|
if ($i < $total_items && $total_items > 1) {
|
|
$form_data .= '<a class="pic fa fa-caret-down moveArrow" href="' . html_escape('automation_snmp.php?action=item_movedown&item_id=' . $item['id'] . '&id=' . $item['snmp_id']) . '" title="' . __esc('Move Down') . '"></a>';
|
|
} else {
|
|
$form_data .= '<span class="moveArrowNone"></span>';
|
|
}
|
|
|
|
if ($i > 1 && $i <= $total_items) {
|
|
$form_data .= '<a class="pic fa fa-caret-up moveArrow" href="' . html_escape('automation_snmp.php?action=item_moveup&item_id=' . $item['id'] . '&id=' . $item['snmp_id']) . '" title="' . __esc('Move Up') . '"></a>';
|
|
} else {
|
|
$form_data .= '<span class="moveArrowNone"></span>';
|
|
}
|
|
}
|
|
|
|
$form_data .= '<a class="delete deleteMarker fa fa-times" id="' . $item['id'] . '_' . $item['snmp_id'] . '" title="' . __esc('Delete') . '"></a>';
|
|
$form_data .= '</td></tr>';
|
|
|
|
print $form_data;
|
|
|
|
$i++;
|
|
}
|
|
} else {
|
|
print "<tr class='tableRow'><td colspan='" . (cacti_sizeof($display_text)+1) . "'><em>" . __('No SNMP Items') . "</em></td></tr>";
|
|
}
|
|
|
|
html_end_box();
|
|
}
|
|
|
|
form_save_button('automation_snmp.php', 'return');
|
|
|
|
?>
|
|
<script type='text/javascript'>
|
|
$(function() {
|
|
$('.cdialog').remove();
|
|
$('#main').append("<div class='cdialog' id='cdialog'></div>");
|
|
$('#automation_snmp_edit2_child').attr('id', 'snmp_item');
|
|
$('img.action').click(function() {
|
|
strURL = $(this).attr('href');
|
|
loadPageNoHeader(strURL);
|
|
});
|
|
|
|
<?php if (read_config_option('drag_and_drop') == 'on') { ?>
|
|
$('#snmp_item').tableDnD({
|
|
onDrop: function(table, row) {
|
|
loadPageNoHeader('automation_snmp.php?action=ajax_dnd&id=<?php isset_request_var('id') ? print get_request_var('id') : print 0;?>&'+$.tableDnD.serialize());
|
|
}
|
|
});
|
|
<?php } ?>
|
|
|
|
$('.delete').click(function (event) {
|
|
event.preventDefault();
|
|
|
|
id = $(this).attr('id').split('_');
|
|
request = 'automation_snmp.php?action=item_remove_confirm&item_id='+id[0]+'&id='+id[1];
|
|
$.get(request)
|
|
.done(function(data) {
|
|
$('#cdialog').html(data);
|
|
|
|
applySkin();
|
|
|
|
$('#cdialog').dialog({
|
|
title: '<?php print __('Delete SNMP Option Item');?>',
|
|
close: function () { $('.delete').blur(); $('.selectable').removeClass('selected'); },
|
|
minHeight: 80,
|
|
minWidth: 500
|
|
});
|
|
})
|
|
.fail(function(data) {
|
|
getPresentHTTPError(data);
|
|
});
|
|
}).css('cursor', 'pointer');
|
|
});
|
|
</script>
|
|
<?php
|
|
}
|
|
|
|
function automation_snmp() {
|
|
global $config, $item_rows, $automation_snmp_actions;
|
|
|
|
/* ================= input validation and session storage ================= */
|
|
$filters = array(
|
|
'rows' => array(
|
|
'filter' => FILTER_VALIDATE_INT,
|
|
'pageset' => true,
|
|
'default' => '-1'
|
|
),
|
|
'page' => array(
|
|
'filter' => FILTER_VALIDATE_INT,
|
|
'default' => '1'
|
|
),
|
|
'filter' => array(
|
|
'filter' => FILTER_DEFAULT,
|
|
'pageset' => true,
|
|
'default' => ''
|
|
),
|
|
'sort_column' => array(
|
|
'filter' => FILTER_CALLBACK,
|
|
'default' => 'name',
|
|
'options' => array('options' => 'sanitize_search_string')
|
|
),
|
|
'sort_direction' => array(
|
|
'filter' => FILTER_CALLBACK,
|
|
'default' => 'ASC',
|
|
'options' => array('options' => 'sanitize_search_string')
|
|
)
|
|
);
|
|
|
|
validate_store_request_vars($filters, 'sess_autom_snmp');
|
|
|
|
if (get_request_var('rows') == -1) {
|
|
$rows = read_config_option('num_rows_table');
|
|
} else {
|
|
$rows = get_request_var('rows');
|
|
}
|
|
|
|
html_start_box(__('Automation SNMP Options'), '100%', '', '3', 'center', 'automation_snmp.php?action=edit');
|
|
|
|
?>
|
|
<tr class='even'>
|
|
<td>
|
|
<form id='snmp_form'>
|
|
<table class='filterTable'>
|
|
<tr>
|
|
<td>
|
|
<?php print __('Search');?>
|
|
</td>
|
|
<td>
|
|
<input type='text' class='ui-state-default ui-corner-all' id='filter' size='25' value='<?php print html_escape_request_var('filter');?>'>
|
|
</td>
|
|
<td>
|
|
<?php print __('SNMP Rules');?>
|
|
</td>
|
|
<td>
|
|
<select id='rows' onChange='applyFilter()'>
|
|
<option value='-1'<?php print (get_request_var('rows') == '-1' ? ' selected>':'>') . __('Default');?></option>
|
|
<?php
|
|
if (cacti_sizeof($item_rows)) {
|
|
foreach ($item_rows as $key => $value) {
|
|
print "<option value='" . $key . "'"; if (get_request_var('rows') == $key) { print ' selected'; } print '>' . html_escape($value) . "</option>";
|
|
}
|
|
}
|
|
?>
|
|
</select>
|
|
</td>
|
|
<td>
|
|
<span>
|
|
<input type='button' class='ui-button ui-corner-all ui-widget' id='refresh' value='<?php print __esc('Go');?>' title='<?php print __esc('Set/Refresh Filters');?>'>
|
|
<input type='button' class='ui-button ui-corner-all ui-widget' id='clear' value='<?php print __esc('Clear');?>' title='<?php print __esc('Clear Filters');?>'>
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
<script type='text/javascript'>
|
|
function applyFilter() {
|
|
strURL = 'automation_snmp.php?header=false';
|
|
strURL += '&filter='+$('#filter').val();
|
|
strURL += '&rows='+$('#rows').val();
|
|
loadPageNoHeader(strURL);
|
|
}
|
|
|
|
function clearFilter() {
|
|
strURL = 'automation_snmp.php?clear=1&header=false';
|
|
loadPageNoHeader(strURL);
|
|
}
|
|
|
|
$(function() {
|
|
$('#refresh').click(function() {
|
|
applyFilter();
|
|
});
|
|
|
|
$('#clear').click(function() {
|
|
clearFilter();
|
|
});
|
|
|
|
$('#snmp_form').submit(function(event) {
|
|
event.preventDefault();
|
|
applyFilter();
|
|
});
|
|
});
|
|
</script>
|
|
<?php
|
|
|
|
html_end_box();
|
|
|
|
/* form the 'where' clause for our main sql query */
|
|
if (get_request_var('filter') != '') {
|
|
$sql_where = 'WHERE asnmp.name LIKE ' . db_qstr('%' . get_request_var('filter') . '%');
|
|
} else {
|
|
$sql_where = '';
|
|
}
|
|
|
|
$total_rows = db_fetch_cell("SELECT
|
|
COUNT(DISTINCT asnmp.id)
|
|
FROM automation_snmp AS asnmp
|
|
LEFT JOIN automation_networks AS anw
|
|
ON asnmp.id=anw.snmp_id
|
|
LEFT JOIN automation_snmp_items AS asnmpi
|
|
ON asnmp.id=asnmpi.snmp_id
|
|
$sql_where
|
|
GROUP BY asnmp.id");
|
|
|
|
$sql_order = get_order_string();
|
|
$sql_limit = ' LIMIT ' . ($rows*(get_request_var('page')-1)) . ',' . $rows;
|
|
|
|
$snmp_groups = db_fetch_assoc("SELECT asnmp.*, COUNT(anw.id) AS networks,
|
|
COUNT(asnmpi.snmp_id) AS totals,
|
|
SUM(CASE WHEN asnmpi.snmp_version=1 THEN 1 ELSE 0 END) AS v1entries,
|
|
SUM(CASE WHEN asnmpi.snmp_version=2 THEN 1 ELSE 0 END) AS v2entries,
|
|
SUM(CASE WHEN asnmpi.snmp_version=3 THEN 1 ELSE 0 END) AS v3entries
|
|
FROM automation_snmp AS asnmp
|
|
LEFT JOIN automation_networks AS anw
|
|
ON asnmp.id=anw.snmp_id
|
|
LEFT JOIN automation_snmp_items AS asnmpi
|
|
ON asnmp.id=asnmpi.snmp_id
|
|
$sql_where
|
|
GROUP BY asnmp.id
|
|
$sql_order
|
|
$sql_limit");
|
|
|
|
$nav = html_nav_bar('automation_snmp.php?filter=' . get_request_var('filter'), MAX_DISPLAY_PAGES, get_request_var('page'), $rows, $total_rows, 12, __('SNMP Option Sets'), 'page', 'main');
|
|
|
|
form_start('automation_snmp.php', 'chk');
|
|
|
|
print $nav;
|
|
|
|
html_start_box('', '100%', '', '3', 'center', '');
|
|
|
|
$display_text = array(
|
|
'name' => array('display' => __('SNMP Option Set'), 'align' => 'left', 'sort' => 'ASC'),
|
|
'networks' => array('display' => __('Networks Using'), 'align' => 'right', 'sort' => 'DESC'),
|
|
'totals' => array('display' => __('SNMP Entries'), 'align' => 'right', 'sort' => 'DESC'),
|
|
'v1entries' => array('display' => __('V1 Entries'), 'align' => 'right', 'sort' => 'DESC'),
|
|
'v2entries' => array('display' => __('V2 Entries'), 'align' => 'right', 'sort' => 'DESC'),
|
|
'v3entries' => array('display' => __('V3 Entries'), 'align' => 'right', 'sort' => 'DESC')
|
|
);
|
|
|
|
html_header_sort_checkbox($display_text, get_request_var('sort_column'), get_request_var('sort_direction'), false);
|
|
|
|
if (cacti_sizeof($snmp_groups)) {
|
|
foreach ($snmp_groups as $snmp_group) {
|
|
form_alternate_row('line' . $snmp_group['id'], true);
|
|
|
|
form_selectable_cell(filter_value($snmp_group['name'], get_request_var('filter'), 'automation_snmp.php?action=edit&id=' . $snmp_group['id'] . '&page=1'), $snmp_group['id']);
|
|
form_selectable_cell($snmp_group['networks'], $snmp_group['id'], '', 'text-align:right;');
|
|
form_selectable_cell($snmp_group['totals'], $snmp_group['id'], '', 'text-align:right;');
|
|
form_selectable_cell($snmp_group['v1entries'], $snmp_group['id'], '', 'text-align:right;');
|
|
form_selectable_cell($snmp_group['v2entries'], $snmp_group['id'], '', 'text-align:right;');
|
|
form_selectable_cell($snmp_group['v3entries'], $snmp_group['id'], '', 'text-align:right;');
|
|
form_checkbox_cell($snmp_group['name'], $snmp_group['id']);
|
|
|
|
form_end_row();
|
|
}
|
|
} else {
|
|
print "<tr class='tableRow'><td colspan='" . (cacti_sizeof($display_text)+1) . "'><em>" . __('No SNMP Option Sets Found') . "</em></td></tr>";
|
|
}
|
|
|
|
html_end_box(false);
|
|
|
|
if (cacti_sizeof($snmp_groups)) {
|
|
print $nav;
|
|
}
|
|
|
|
/* draw the dropdown containing a list of available actions for this form */
|
|
draw_actions_dropdown($automation_snmp_actions);
|
|
|
|
form_end();
|
|
|
|
?>
|
|
<script type='text/javascript'>
|
|
function applyFilter() {
|
|
strURL = 'automation_snmp.php?header=false&rows=' + $('#rows').val();
|
|
strURL += strURL + '&filter=' + $('#filter').val();
|
|
loadPageNoHeader(strURL);
|
|
}
|
|
</script>
|
|
<?php
|
|
}
|
|
|