Beispiel #1
0
 public function testJsonAlertCollection()
 {
     $rules = get_rules_from_json();
     $this->assertInternalType('array', $rules);
     foreach ($rules as $rule) {
         $this->assertInternalType('array', $rule);
     }
 }
        if ($current === true) {
            foreach ($obj as $fld) {
                $flds[] = $fld['name'];
            }
            $qry = dbFetchRows('SELECT ' . implode(', ', $flds) . ' FROM ' . $term[0] . ' WHERE device_id = ?', array($_GET['device_id']));
            $ret = array();
            foreach ($obj as $lev => $fld) {
                list($tbl, $chk) = explode('.', $fld['name']);
                $val = array();
                foreach ($qry as $row) {
                    $val[] = $row[$chk];
                }
                $ret[$lev] = array('name' => $fld['name'], 'current' => $val);
            }
            $obj = $ret;
        }
    }
} elseif ($vars['type'] === 'alert_rule_collection') {
    $x = 0;
    foreach (get_rules_from_json() as $rule) {
        if (str_contains($rule['name'], $vars['term'], true)) {
            $rule['id'] = $x;
            $tmp[] = $rule;
        }
        $x++;
    }
    if (is_array($tmp)) {
        $obj = $tmp;
    }
}
die(json_encode($obj));
/*
 * LibreNMS
 *
 * Copyright (c) 2014 Neil Lathwood <https://github.com/laf/ http://www.lathwood.co.uk/fa>
 *
 * 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) {
    header('Content-type: text/plain');
    die('ERROR: You need to be admin');
}
$alert_id = $_POST['alert_id'];
$template_id = $_POST['template_id'];
if (is_numeric($alert_id) && $alert_id > 0) {
    $rule = dbFetchRow('SELECT * FROM `alert_rules` WHERE `id` = ? LIMIT 1', array($alert_id));
} elseif (is_numeric($template_id) && $template_id >= 0) {
    $tmp_rules = get_rules_from_json();
    $rule = $tmp_rules[$template_id];
}
if (is_array($rule)) {
    $rule_split = preg_split('/([a-zA-Z0-9_\\-\\.\\=\\%\\<\\>\\ \\"\'\\!\\~\\(\\)\\*\\/\\@\\|]+[&&|\\|\\|]{2})/', $rule['rule'], -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
    $count = count($rule_split) - 1;
    $rule_split[$count] = $rule_split[$count] . '  &&';
    $output = array('severity' => $rule['severity'], 'extra' => $rule['extra'], 'name' => $rule['name'], 'proc' => $rule['proc'], 'rules' => $rule_split);
    header('Content-type: application/json');
    echo _json_encode($output);
}