mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
More work on alerting config
This commit is contained in:
42
html/forms/update-config-item.inc.php
Normal file
42
html/forms/update-config-item.inc.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* 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) {
|
||||
die('ERROR: You need to be admin');
|
||||
}
|
||||
|
||||
$status = 'error';
|
||||
|
||||
if (!is_numeric($_POST['config_id'])) {
|
||||
$message = 'ERROR: No alert selected';
|
||||
exit;
|
||||
} else {
|
||||
if($_POST['config_value'] === true) {
|
||||
$state = TRUE;
|
||||
} else {
|
||||
$state = FALSE;
|
||||
}
|
||||
$state = $_POST['config_value'];
|
||||
$update = dbUpdate(array('config_value' => $state), 'config', '`config_id`=?', array($_POST['config_id']));
|
||||
if(!empty($update) || $update == '0')
|
||||
{
|
||||
$message = 'Alert rule has been updated.';
|
||||
$status = 'ok';
|
||||
} else {
|
||||
$message = 'ERROR: Alert rule has not been updated.';
|
||||
}
|
||||
}
|
||||
|
||||
$response = array('status'=>$status,'message'=>$message);
|
||||
echo _json_encode($response);
|
BIN
html/images/pd_connect_button.png
Normal file
BIN
html/images/pd_connect_button.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
@@ -786,4 +786,35 @@ function add_config_item($new_conf_name,$new_conf_value,$new_conf_type,$new_conf
|
||||
return($db_inserted);
|
||||
}
|
||||
|
||||
function get_config_by_group($group) {
|
||||
$group = array($group);
|
||||
foreach (dbFetchRows("SELECT * FROM `config` WHERE `config_group` = '?'", array($group)) as $config_item) {
|
||||
$items[] = $config_item;
|
||||
}
|
||||
return $items;
|
||||
}
|
||||
|
||||
function get_config_by_name($name) {
|
||||
$name = array($name);
|
||||
foreach (dbFetchRows("SELECT * FROM `config` WHERE `config_name` = '?'", array($name)) as $config_item) {
|
||||
$items[] = $config_item;
|
||||
}
|
||||
return $items;
|
||||
}
|
||||
|
||||
function set_config_name($name,$config_value) {
|
||||
return dbUpdate(array('config_value' => $config_value), 'config', '`config_name`=?', array($name));
|
||||
}
|
||||
|
||||
function get_url() {
|
||||
// http://stackoverflow.com/questions/2820723/how-to-get-base-url-with-php
|
||||
// http://stackoverflow.com/users/184600/ma%C4%8Dek
|
||||
return sprintf(
|
||||
"%s://%s%s",
|
||||
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
|
||||
$_SERVER['SERVER_NAME'],
|
||||
$_SERVER['REQUEST_URI']
|
||||
);
|
||||
}
|
||||
|
||||
?>
|
||||
|
@@ -23,9 +23,21 @@
|
||||
* @subpackage Page
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<span id="message"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
if (isset($vars['sub'])) {
|
||||
|
||||
if (file_exists(mres($vars['sub']))) {
|
||||
if (file_exists("pages/settings/".mres($vars['sub']).".inc.php")) {
|
||||
require_once "pages/settings/".mres($vars['sub']).".inc.php";
|
||||
} else {
|
||||
print_error("This settings page doesn't exist, please go to the main settings page");
|
||||
|
@@ -12,10 +12,105 @@
|
||||
* the source code distribution for details.
|
||||
*/
|
||||
|
||||
if (isset($_GET['error'])) {
|
||||
print_error('We had issues connecting to your Pager Duty account, please try again');
|
||||
}
|
||||
|
||||
if (isset($_GET['account']) && isset($_GET['service_key']) && isset($_GET['service_name'])) {
|
||||
set_config_name('alert,transports,pagerduty',$_GET['service_key']);
|
||||
set_config_name('alert,pagerduty,account',$_GET['account']);
|
||||
set_config_name('alert,pagerduty,service',$_GET['service_name']);
|
||||
}
|
||||
|
||||
$admin_config = get_config_by_name('alert,admins');
|
||||
if (strcasecmp($admin_config[0]['config_value'],"true") == 0) {
|
||||
$admin_checked = 'checked';
|
||||
} else {
|
||||
$admin_checked = '';
|
||||
}
|
||||
$read_config = get_config_by_name('alert,globals');
|
||||
if (strcasecmp($read_config[0]['config_value'],"true") == 0) {
|
||||
$read_checked = 'checked';
|
||||
} else {
|
||||
$read_checked = '';
|
||||
}
|
||||
$default_only_config = get_config_by_name('alert,default_only');
|
||||
if (strcasecmp($default_only_config[0]['config_value'],"true") == 0) {
|
||||
$default_only_checked = 'checked';
|
||||
} else {
|
||||
$default_only_checked = '';
|
||||
}
|
||||
$default_mail_config = get_config_by_name('alert,default_mail');
|
||||
|
||||
if (isset($config['base_url'])) {
|
||||
$callback = $config['base_url'].'/'.$_SERVER['REQUEST_URI'].'/';
|
||||
} else {
|
||||
$callback = get_url().'/';
|
||||
}
|
||||
$callback = urlencode($callback);
|
||||
|
||||
echo '
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label for="admins" class="col-sm-4 control-label">'.$admin_config[0]['config_desc'].': </label>
|
||||
<div class="col-sm-8">
|
||||
<input id="admins" type="checkbox" name="global-config-check" '.$admin_checked.' data-on-text="Yes" data-off-text="No" data-size="small" data-config_id="'.$admin_config[0]['config_id'].'">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="globals" class="col-sm-4 control-label">'.$read_config[0]['config_desc'].': </label>
|
||||
<div class="col-sm-8">
|
||||
<input id="globals" type="checkbox" name="global-config-check" '.$read_checked.' data-on-text="Yes" data-off-text="No" data-size="small" data-config_id="'.$read_config[0]['config_id'].'">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="default_only" class="col-sm-4 control-label">'.$default_only_config[0]['config_desc'].': </label>
|
||||
<div class="col-sm-8">
|
||||
<input id="default_only" type="checkbox" name="global-config-check" '.$default_only_checked.' data-on-text="Yes" data-off-text="No" data-size="small" data-config_id="'.$default_only_config[0]['config_id'].'">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="default_mail" class="col-sm-4 control-label">'.$default_mail_config[0]['config_desc'].': </label>
|
||||
<div class="col-sm-8">
|
||||
<input id="default_mail" type="text" name="global-config-input" value"'.$default_mail_config[0]['config_value'].'" data-config_id="'.$default_mail_config[0]['config_id'].'">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-8">
|
||||
<a href="https://connect.pagerduty.com/connect?vendor=2fc7c9f3c8030e74aae6&callback='.$callback.'"><img src="images/pd_connect_button.png" width="202" height="36" alt="Connect to PagerDuty"></a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
';
|
||||
|
||||
?>
|
||||
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
$("[name='global-config-check']").bootstrapSwitch('offColor','danger');
|
||||
$('input[name="global-config-check"]').on('switchChange.bootstrapSwitch', function(event, state) {
|
||||
event.preventDefault();
|
||||
var config_id = $(this).data("config_id");
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/ajax_form.php',
|
||||
data: {type: "update-config-item", config_id: config_id, config_value: state},
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
if (data.status == 'ok') {
|
||||
$("#message").html('<div class="alert alert-info">' + data.message + '</div>');
|
||||
} else {
|
||||
$("#message").html('<div class="alert alert-info">' + data.message + '</div>');
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
$("#message").html('<div class="alert alert-info">An error occurred.</div>');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
@@ -1 +1,2 @@
|
||||
CREATE TABLE `config` ( `config_id` int(11) NOT NULL AUTO_INCREMENT, `config_name` varchar(255) NOT NULL, `config_value` varchar(255) NOT NULL, `config_default` varchar(255) NOT NULL, `config_type` enum('array','single','multi-array','single-array') NOT NULL DEFAULT 'single', `config_desc` varchar(100) NOT NULL, `config_group` varchar(50) NOT NULL, `config_sub_group` varchar(50) NOT NULL, `config_hidden` enum('0','1') NOT NULL DEFAULT '0', `config_disabled` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`config_id`) ) ENGINE=InnoDB AUTO_INCREMENT=437 DEFAULT CHARSET=latin1;
|
||||
CREATE TABLE `config` ( `config_id` int(11) NOT NULL AUTO_INCREMENT, `config_name` varchar(255) NOT NULL, `config_value` varchar(512) NOT NULL, `config_default` varchar(512) NOT NULL, `config_type` enum('array','single','multi-array','single-array') NOT NULL DEFAULT 'single', `config_desc` varchar(100) NOT NULL, `config_form` text NOT NULL, `config_group` varchar(50) NOT NULL, `config_group_order` int(11) NOT NULL, `config_sub_group` varchar(50) NOT NULL, `config_sub_group_order` int(11) NOT NULL, `config_hidden` enum('0','1') NOT NULL DEFAULT '0', `config_disabled` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`config_id`) ENGINE=InnoDB AUTO_INCREMENT=428 DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `config` VALUES (405,'alert,macros,rule,now','NOW()','NOW()','single-array','Time macro','text:','alerting',100,'macros',10,'0','0'),(406,'alert,macros,rule,past_5m','DATE_SUB(NOW(),INTERVAL 5 MINUTE)','DATE_SUB(NOW(),INTERVAL 5 MINUTE)','single-array','Time macro','text:','alerting',100,'macros',10,'0','0'),(407,'alert,macros,rule,past_10m','DATE_SUB(NOW(),INTERVAL 10 MINUTE)','DATE_SUB(NOW(),INTERVAL 10 MINUTE)','single-array','Time macro','text:','alerting',100,'macros',10,'0','0'),(408,'alert,macros,rule,past_15m','DATE_SUB(NOW(),INTERVAL 15 MINUTE)','DATE_SUB(NOW(),INTERVAL 10 MINUTE)','single-array','Time macro','text:','alerting',100,'macros',10,'0','0'),(409,'alert,macros,rule,past_30m','DATE_SUB(NOW(),INTERVAL 30 MINUTE)','DATE_SUB(NOW(),INTERVAL 10 MINUTE)','single-array','Time macro','text:','alerting',100,'macros',10,'0','0'),(410,'alert,macros,rule,past_60m','DATE_SUB(NOW(),INTERVAL 60 MINUTE)','DATE_SUB(NOW(),INTERVAL 10 MINUTE)','single-array','Time macro','text:','alerting',100,'macros',10,'0','0'),(411,'alert,macros,rule,device','(%devices.disabled = \"0\" && %devices.ignore = \"0\")','(%devices.disabled = \"0\" && %devices.ignore = \"0\")','single-array','Device macro','text:','alerting',100,'macros',10,'0','0'),(412,'alert,macros,rule,device_up','(%devices.status = \"1\" && %macros.device)','(%devices.status = \"1\" && %macros.device)','single-array','Device macro','text:','alerting',100,'macros',10,'0','0'),(413,'alert,macros,rule,device_down','(%devices.status = \"0\" && %macros.device)','(%devices.status = \"0\" && %macros.device)','single-array','Device macro','text:','alerting',100,'macros',10,'0','0'),(414,'alert,macros,rule,port','(%ports.deleted = \\\"0\\\" && %ports.ignore = \\\"0\\\" && %ports.disabled = \\\"0\\\")','(%ports.deleted = \"0\" && %ports.ignore = \"0\" && %ports.disabled = \"0\")','single-array','Port macro','text:','alerting',100,'macros',10,'0','0'),(415,'alert,macros,rule,port_up','(%ports.ifOperStatus = \"up\" && %ports.ifAdminStatus = \"up\" && %macros.port)','(%ports.ifOperStatus = \"up\" && %ports.ifAdminStatus = \"up\" && %macros.port)','single-array','Port macro','text:','alerting',100,'macros',10,'0','0'),(416,'alert,macros,rule,port_down','(%ports.ifOperStatus = \\\"down\\\" && %ports.ifAdminStatus != \\\"down\\\" && %macros.port)','(%ports.ifOperStatus = \"down\" && %ports.ifAdminStatus != \"down\" && %macros.port)','single-array','Port macro','text:','alerting',100,'macros',10,'0','0'),(417,'alert,macros,rule,port_usage_perc','((%ports.ifInOctets_rate*8)/%ports.ifSpeed)*100','((%ports.ifInOctets_rate*8)/%ports.ifSpeed)*100','single-array','Port macro','text:','alerting',100,'macros',10,'0','0'),(418,'alert,transports,dummy','false','false','single-array','Transports','radio:false,true','alerting',100,'transports',8,'0','0'),(419,'alert,transports,mail','false','false','single-array','Transports','radio:false,true','alerting',100,'transports',8,'0','0'),(420,'alert,transports,irc','false','false','single-array','Transports','radio:false,true','alerting',100,'transports',8,'0','0'),(421,'alert,globals','false','false','single-array','Issue alerts to global-read users','radio:false,true','alerting',100,'global',5,'0','0'),(422,'alert,admins','true','false','single-array','Issue alerts to admins','radio:false,true','alerting',100,'global',5,'0','0'),(423,'alert,default_only','true','false','single-array','Alert settings','radio:false,true','alerting',100,'global',5,'0','0'),(424,'alert,default_mail','','','single-array','Alert settings','text:','alerting',100,'global',5,'0','0'),(425,'alert,transports,pagerduty','false','false','single-array','Pagerduty transport','','alerting',100,'transports',8,'0','0'),(426,'alert,pagerduty,account','false','false','single-array','Pagerduty account name','','alerting',100,'transports',8,'0','0'),(427,'alert,pagerduty,service','false','false','single-array','Pagerduty service name','','alerting',100,'transports',8,'0','0');
|
||||
|
Reference in New Issue
Block a user