__('Duplicate'), AUTOMATION_ACTION_TREE_ENABLE => __('Enable'), AUTOMATION_ACTION_TREE_DISABLE => __('Disable'), AUTOMATION_ACTION_TREE_DELETE => __('Delete'), ); /* set default action */ set_default_action(); switch (get_request_var('action')) { case 'save': automation_tree_rules_form_save(); break; case 'actions': automation_tree_rules_form_actions(); break; case 'change_leaf': automation_tree_rules_change_leaf(); header('Location: automation_tree_rules.php?header=false&action=edit&id=' . get_request_var('id')); break; case 'item_movedown': automation_tree_rules_item_movedown(); header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id')); break; case 'item_moveup': automation_tree_rules_item_moveup(); header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id')); break; case 'item_remove': automation_tree_rules_item_remove(); header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id')); break; case 'item_edit': top_header(); automation_tree_rules_item_edit(); bottom_footer(); break; case 'remove': automation_tree_rules_remove(); header ('Location: automation_tree_rules.php'); break; case 'edit': top_header(); automation_tree_rules_edit(); bottom_footer(); break; default: top_header(); automation_tree_rules(); bottom_footer(); break; } /* -------------------------- The Save Function -------------------------- */ function automation_tree_rules_form_save() { if (isset_request_var('save_component_automation_tree_rule')) { /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ $save['id'] = get_request_var('id'); $save['name'] = form_input_validate(get_nfilter_request_var('name'), 'name', '', true, 3); $save['tree_id'] = form_input_validate(get_nfilter_request_var('tree_id'), 'tree_id', '^[0-9]+$', false, 3); $save['tree_item_id'] = isset_request_var('tree_item_id') ? form_input_validate(get_nfilter_request_var('tree_item_id'), 'tree_item_id', '^[0-9]+$', false, 3) : 0; $save['leaf_type'] = (isset_request_var('leaf_type')) ? form_input_validate(get_nfilter_request_var('leaf_type'), 'leaf_type', '^[0-9]+$', false, 3) : 0; $save['host_grouping_type'] = isset_request_var('host_grouping_type') ? form_input_validate(get_nfilter_request_var('host_grouping_type'), 'host_grouping_type', '^[0-9]+$', false, 3) : 0; $save['enabled'] = (isset_request_var('enabled') ? 'on' : ''); if (!is_error_message()) { $rule_id = sql_save($save, 'automation_tree_rules'); if ($rule_id) { raise_message(1); } else { raise_message(2); } } header('Location: automation_tree_rules.php?header=false&action=edit&id=' . (empty($rule_id) ? get_request_var('id') : $rule_id)); } elseif (isset_request_var('save_component_automation_match_item')) { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); /* ==================================================== */ $save = array(); $save['id'] = form_input_validate(get_request_var('item_id'), 'item_id', '^[0-9]+$', false, 3); $save['rule_id'] = form_input_validate(get_request_var('id'), 'id', '^[0-9]+$', false, 3); $save['rule_type'] = AUTOMATION_RULE_TYPE_TREE_MATCH; $save['sequence'] = form_input_validate(get_nfilter_request_var('sequence'), 'sequence', '^[0-9]+$', false, 3); $save['operation'] = form_input_validate(get_nfilter_request_var('operation'), 'operation', '^[-0-9]+$', true, 3); $save['field'] = form_input_validate(((isset_request_var('field') && get_nfilter_request_var('field') != '0') ? get_nfilter_request_var('field') : ''), 'field', '', true, 3); $save['operator'] = form_input_validate((isset_request_var('operator') ? get_nfilter_request_var('operator') : ''), 'operator', '^[0-9]+$', true, 3); $save['pattern'] = form_input_validate((isset_request_var('pattern') ? get_nfilter_request_var('pattern') : ''), 'pattern', '', true, 3); if (!is_error_message()) { $item_id = sql_save($save, 'automation_match_rule_items'); if ($item_id) { raise_message(1); } else { raise_message(2); } } if (is_error_message()) { header('Location: automation_tree_rules.php?header=false&action=item_edit&id=' . get_request_var('id') . '&item_id=' . (empty($item_id) ? get_request_var('item_id') : $item_id) . '&rule_type=' . AUTOMATION_RULE_TYPE_TREE_MATCH); } else { header('Location: automation_tree_rules.php?header=false&action=edit&id=' . get_request_var('id') . '&rule_type=' . AUTOMATION_RULE_TYPE_TREE_MATCH); } } elseif (isset_request_var('save_component_automation_tree_rule_item')) { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); /* ==================================================== */ unset($save); $save['id'] = form_input_validate(get_request_var('item_id'), 'item_id', '^[0-9]+$', false, 3); $save['rule_id'] = form_input_validate(get_request_var('id'), 'id', '^[0-9]+$', false, 3); $save['sequence'] = form_input_validate(get_nfilter_request_var('sequence'), 'sequence', '^[0-9]+$', false, 3); $save['field'] = form_input_validate((isset_request_var('field') ? get_nfilter_request_var('field') : ''), 'field', '', true, 3); $save['sort_type'] = form_input_validate(get_nfilter_request_var('sort_type'), 'sort_type', '^[0-9]+$', false, 3); $save['propagate_changes'] = (isset_request_var('propagate_changes') ? 'on' : ''); $save['search_pattern'] = isset_request_var('search_pattern') ? form_input_validate(get_nfilter_request_var('search_pattern'), 'search_pattern', '', false, 3) : ''; $save['replace_pattern'] = isset_request_var('replace_pattern') ? form_input_validate(get_nfilter_request_var('replace_pattern'), 'replace_pattern', '', true, 3) : ''; if (!is_error_message()) { $automation_graph_rule_item_id = sql_save($save, 'automation_tree_rule_items'); if ($automation_graph_rule_item_id) { raise_message(1); } else { raise_message(2); } } if (is_error_message()) { header('Location: automation_tree_rules.php?header=false&action=item_edit&id=' . get_request_var('id') . '&item_id=' . (empty($automation_graph_rule_item_id) ? get_request_var('item_id') : $automation_graph_rule_item_id) . '&rule_type=' . AUTOMATION_RULE_TYPE_TREE_ACTION); } else { header('Location: automation_tree_rules.php?header=false&action=edit&id=' . get_request_var('id') . '&rule_type=' . AUTOMATION_RULE_TYPE_TREE_ACTION); } } else { raise_message(2); header('Location: automation_tree_rules.php?header=false'); } } /* ------------------------ The 'actions' function ------------------------ */ function automation_tree_rules_form_actions() { global $automation_tree_rules_actions; global $config; /* 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') == AUTOMATION_ACTION_TREE_DELETE) { /* DELETE */ cacti_log('form_actions DELETE: ' . serialize($selected_items), true, 'AUTOM8 TRACE', POLLER_VERBOSITY_MEDIUM); db_execute('DELETE FROM automation_tree_rules WHERE ' . array_to_sql_or($selected_items, 'id')); db_execute('DELETE FROM automation_tree_rule_items WHERE ' . array_to_sql_or($selected_items, 'rule_id')); db_execute('DELETE FROM automation_match_rule_items WHERE ' . array_to_sql_or($selected_items, 'rule_id')); } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DUPLICATE) { /* duplicate */ for ($i=0;($i $val) { if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) { /* ================= input validation ================= */ input_validate_input_number($matches[1]); /* ==================================================== */ $automation_tree_rules_list .= '
  • ' . html_escape(db_fetch_cell_prepared('SELECT name FROM automation_tree_rules WHERE id = ?', array($matches[1]))) . '
  • '; $automation_tree_rules_array[] = $matches[1]; } } top_header(); form_start('automation_tree_rules.php', 'automation_tree_rules_action'); html_start_box($automation_tree_rules_actions[get_nfilter_request_var('drp_action')], '60%', '', '3', 'center', ''); if (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DELETE) { /* DELETE */ print "

    " . __('Click \'Continue\' to delete the following Rule(s).') . "

    \n"; } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DUPLICATE) { /* duplicate */ print "

    " . __('Click \'Continue\' to duplicate the following Rule(s). You can optionally change the title format for the new Rules.') . "

    " . __('Title Format') . '
    '; form_text_box('name_format', '<' . __('rule_name') . '> (1)', '', '255', '30', 'text'); print "

    \n"; } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_ENABLE) { /* enable */ print "

    " . __('Click \'Continue\' to enable the following Rule(s).') . "

    " . __('Make sure, that those rules have successfully been tested!') . "

    \n"; } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DISABLE) { /* disable */ print "

    " . __('Click \'Continue\' to disable the following Rule(s).') . "

    \n"; } if (!isset($automation_tree_rules_array)) { raise_message(40); header('Location: automation_tree_rules.php?header=false'); exit; }else { $save_html = " "; } print " $save_html \n"; html_end_box(); form_end(); bottom_footer(); } function automation_tree_rules_change_leaf() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('leaf_type'); /* ==================================================== */ automation_change_tree_rule_leaf_type(get_request_var('leaf_type'), get_request_var('id')); } /* -------------------------- Rule Item Functions -------------------------- */ function automation_tree_rules_item_movedown() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); get_filter_request_var('rule_type'); /* ==================================================== */ if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_MATCH) { move_item_down('automation_match_rule_items', get_request_var('item_id'), 'rule_id=' . get_request_var('id') . ' AND rule_type=' . get_request_var('rule_type')); } elseif (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { move_item_down('automation_tree_rule_items', get_request_var('item_id'), 'rule_id=' . get_request_var('id')); } } function automation_tree_rules_item_moveup() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); get_filter_request_var('rule_type'); /* ==================================================== */ if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_MATCH) { move_item_up('automation_match_rule_items', get_request_var('item_id'), 'rule_id=' . get_request_var('id') . ' AND rule_type=' . get_request_var('rule_type')); } elseif (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { move_item_up('automation_tree_rule_items', get_request_var('item_id'), 'rule_id=' . get_request_var('id')); } } function automation_tree_rules_item_remove() { /* ================= input validation ================= */ get_filter_request_var('item_id'); get_filter_request_var('rule_type'); /* ==================================================== */ if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_MATCH) { db_execute_prepared('DELETE FROM automation_match_rule_items WHERE id = ?', array(get_request_var('item_id'))); } elseif (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { db_execute_prepared('DELETE FROM automation_tree_rule_items WHERE id = ?', array(get_request_var('item_id'))); } } function automation_tree_rules_item_edit() { global $config; /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); get_filter_request_var('rule_type'); get_filter_request_var('show_trees'); /* ==================================================== */ /* handle show_trees mode */ if (isset_request_var('show_trees')) { if (get_request_var('show_trees') == '0') { kill_session_var('automation_tree_rules_show_trees'); } elseif (get_request_var('show_trees') == '1') { $_SESSION['automation_tree_rules_show_trees'] = true; } } if (!isempty_request_var('rule_type') && !isempty_request_var('item_id')) { if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { $item = db_fetch_row_prepared('SELECT * FROM automation_tree_rule_items WHERE id = ?', array(get_request_var('item_id'))); if ($item['field'] != AUTOMATION_TREE_ITEM_TYPE_STRING) { ?>
    *'>

    '; /* display list of matching trees */ if (!isempty_request_var('rule_type') && !isempty_request_var('item_id')) { if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { if (isset($_SESSION['automation_tree_rules_show_trees']) && ($item['field'] != AUTOMATION_TREE_ITEM_TYPE_STRING)) { if ($_SESSION['automation_tree_rules_show_trees']) { display_matching_trees(get_request_var('id'), AUTOMATION_RULE_TYPE_TREE_ACTION, $item, 'automation_tree_rules.php?action=item_edit&id=' . get_request_var('id') . '&item_id=' . get_request_var('item_id') . '&rule_type=' . get_request_var('rule_type')); } } } } //Now we need some javascript to make it dynamic ?>
    *'>
    array('no_form_tag' => true), 'fields' => inject_form_variables($form_array, (isset($rule) ? $rule : array())) )); form_hidden_box('id', (isset($rule['id']) ? $rule['id'] : '0'), ''); form_hidden_box('item_id', (isset($rule['item_id']) ? $rule['item_id'] : '0'), ''); form_hidden_box('save_component_automation_tree_rule', '1', ''); html_end_box(true, true); /* * display the rule items ------------------------------------------------------------------------------- */ if (!empty($rule['id'])) { # display tree rules for host match display_match_rule_items(__('Object Selection Criteria'), $rule['id'], AUTOMATION_RULE_TYPE_TREE_MATCH, 'automation_tree_rules.php'); # fetch tree action rules display_tree_rule_items(__('Tree Creation Criteria'), $rule['id'], $rule['leaf_type'], AUTOMATION_RULE_TYPE_TREE_ACTION, 'automation_tree_rules.php'); } form_save_button('automation_tree_rules.php', 'return'); print '
    '; if (!empty($rule['id'])) { /* display list of matching hosts */ if (isset($_SESSION['automation_tree_rules_show_objects'])) { if ($_SESSION['automation_tree_rules_show_objects']) { if ($rule['leaf_type'] == TREE_ITEM_TYPE_HOST) { display_matching_hosts($rule, AUTOMATION_RULE_TYPE_TREE_MATCH, 'automation_tree_rules.php?action=edit&id=' . get_request_var('id')); } elseif ($rule['leaf_type'] == TREE_ITEM_TYPE_GRAPH) { display_matching_graphs($rule, AUTOMATION_RULE_TYPE_TREE_MATCH, 'automation_tree_rules.php?action=edit&id=' . get_request_var('id')); } } } } ?> 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') ), 'status' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '' ) ); validate_store_request_vars($filters, 'sess_autom_tr'); /* ================= input validation ================= */ if (get_request_var('rows') == -1) { $rows = read_config_option('num_rows_table'); } else { $rows = get_request_var('rows'); } html_start_box(__('Tree Rules'), '100%', '', '3', 'center', 'automation_tree_rules.php?action=edit'); ?>
    '> '> '>
    array('display' => __('Rule Name'), 'align' => 'left', 'sort' => 'ASC'), 'id' => array('display' => __('ID'), 'align' => 'right', 'sort' => 'ASC'), 'tree_name' => array('display' => __('Hook into Tree'), 'align' => 'left', 'sort' => 'ASC'), 'subtree_name' => array('display' => __('At Subtree'), 'align' => 'left', 'sort' => 'ASC'), 'leaf_type' => array('display' => __('This Type'), 'align' => 'left', 'sort' => 'ASC'), 'host_grouping_type' => array('display' => __('Using Grouping'), 'align' => 'left', 'sort' => 'ASC'), 'enabled' => array('display' => __('Enabled'), 'align' => 'right', 'sort' => 'ASC') ); html_header_sort_checkbox($display_text, get_request_var('sort_column'), get_request_var('sort_direction'), false); if (cacti_sizeof($automation_tree_rules)) { foreach ($automation_tree_rules as $automation_tree_rule) { $tree_item_type_name = ((empty($automation_tree_rule['leaf_type'])) ? '' . __('None') . '' : $automation_tree_item_types[$automation_tree_rule['leaf_type']]); $subtree_name = ((empty($automation_tree_rule['subtree_name'])) ? '' . __('ROOT') . '' : html_escape($automation_tree_rule['subtree_name'])); $tree_host_grouping_type = ((empty($host_group_types[$automation_tree_rule['host_grouping_type']])) ? '' : $host_group_types[$automation_tree_rule['host_grouping_type']]); form_alternate_row('line' . $automation_tree_rule['id'], true); form_selectable_cell(filter_value($automation_tree_rule['name'], get_request_var('filter'), 'automation_tree_rules.php?action=edit&id=' . $automation_tree_rule['id'] . '&page=1'), $automation_tree_rule['id']); form_selectable_cell($automation_tree_rule['id'], $automation_tree_rule['id'], '', 'text-align:right'); form_selectable_ecell($automation_tree_rule['tree_name'], $automation_tree_rule['id']); form_selectable_cell($subtree_name, $automation_tree_rule['id']); form_selectable_cell($tree_item_type_name, $automation_tree_rule['id']); form_selectable_cell($tree_host_grouping_type, $automation_tree_rule['id']); form_selectable_cell($automation_tree_rule['enabled'] ? __('Enabled'):__('Disabled'), $automation_tree_rule['id'], '', 'text-align:right'); form_checkbox_cell($automation_tree_rule['name'], $automation_tree_rule['id']); form_end_row(); } } else { print "" . __('No Tree Rules Found') . "\n"; } html_end_box(false); if (cacti_sizeof($automation_tree_rules)) { print $nav; } /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($automation_tree_rules_actions); form_end(); }