2015-05-17 03:20:28 +01:00
< ? 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 .
*/
2015-07-13 20:10:26 +02:00
if ( is_admin () === false ) {
2015-05-17 03:20:28 +01:00
die ( 'ERROR: You need to be admin' );
}
2015-07-13 20:10:26 +02:00
$config_id = mres ( $_POST [ 'config_id' ]);
$action = mres ( $_POST [ 'action' ]);
2015-05-25 21:51:27 +01:00
$config_type = mres ( $_POST [ 'config_type' ]);
2015-05-17 03:20:28 +01:00
$status = 'error' ;
2015-05-25 21:51:27 +01:00
if ( ! is_numeric ( $config_id )) {
2015-10-12 22:14:04 +00:00
$message = 'ERROR: No config item' ;
2015-07-13 20:10:26 +02:00
}
2015-11-16 16:40:23 -08:00
elseif ( $action == 'update-textarea' ) {
2015-07-13 20:10:26 +02:00
$extras = explode ( PHP_EOL , $_POST [ 'config_value' ]);
2015-11-16 19:22:28 -08:00
$x = 0 ;
2015-05-25 21:51:27 +01:00
foreach ( $extras as $option ) {
2015-07-13 20:10:26 +02:00
list ( $k , $v ) = explode ( '=' , $option , 2 );
2015-05-25 21:51:27 +01:00
if ( ! empty ( $k ) || ! empty ( $v )) {
if ( $config_type == 'slack' ) {
2015-07-13 20:10:26 +02:00
$db_id [] = dbInsert ( array ( 'config_name' => 'alert.transports.slack.' . $config_id . '.' . $k , 'config_value' => $v , 'config_group' => 'alerting' , 'config_sub_group' => 'transports' , 'config_default' => $v , 'config_descr' => 'Slack Transport' ), 'config' );
}
2015-11-16 16:40:23 -08:00
elseif ( $config_type == 'hipchat' ) {
2015-07-13 20:10:26 +02:00
$db_id [] = dbInsert ( array ( 'config_name' => 'alert.transports.hipchat.' . $config_id . '.' . $k , 'config_value' => $v , 'config_group' => 'alerting' , 'config_sub_group' => 'transports' , 'config_default' => $v , 'config_descr' => 'Hipchat Transport' ), 'config' );
}
2015-11-16 16:40:23 -08:00
elseif ( $config_type == 'pushover' ) {
2015-07-13 20:10:26 +02:00
$db_id [] = dbInsert ( array ( 'config_name' => 'alert.transports.pushover.' . $config_id . '.' . $k , 'config_value' => $v , 'config_group' => 'alerting' , 'config_sub_group' => 'transports' , 'config_default' => $v , 'config_descr' => 'Pushover Transport' ), 'config' );
2015-05-25 21:51:27 +01:00
}
2015-07-19 21:13:06 +01:00
elseif ( $config_type == 'boxcar' ) {
$db_id [] = dbInsert ( array ( 'config_name' => 'alert.transports.boxcar.' . $config_id . '.' . $k , 'config_value' => $v , 'config_group' => 'alerting' , 'config_sub_group' => 'transports' , 'config_default' => $v , 'config_descr' => 'Boxcar Transport' ), 'config' );
}
2015-11-16 16:40:23 -08:00
elseif ( $config_type == 'clickatell' ) {
2015-11-16 20:13:04 -08:00
$db_id [] = dbInsert ( array ( 'config_name' => 'alert.transports.clickatell.to.' . $x , 'config_value' => $k , 'config_group' => 'alerting' , 'config_sub_group' => 'transports' , 'config_default' => $v , 'config_descr' => 'Clickatell Transport' ), 'config' );
2015-11-16 19:22:28 -08:00
$x ++ ;
2015-11-16 16:40:23 -08:00
}
elseif ( $config_type == 'playsms' ) {
2015-11-16 20:13:04 -08:00
$db_id [] = dbInsert ( array ( 'config_name' => 'alert.transports.playsms.to.' . $x , 'config_value' => $k , 'config_group' => 'alerting' , 'config_sub_group' => 'transports' , 'config_default' => $v , 'config_descr' => 'PlaySMS Transport' ), 'config' );
2015-11-16 19:22:28 -08:00
$x ++ ;
2015-11-16 16:40:23 -08:00
}
2015-05-25 21:51:27 +01:00
}
}
2015-07-13 20:10:26 +02:00
$db_inserts = implode ( ',' , $db_id );
2015-06-20 12:18:37 +01:00
if ( ! empty ( $db_inserts ) || empty ( $_POST [ 'config_value' ])) {
if ( empty ( $_POST [ 'config_value' ])) {
$db_inserts = 0 ;
}
2015-07-13 20:10:26 +02:00
2015-05-25 21:51:27 +01:00
if ( $config_type == 'slack' ) {
2015-07-13 20:10:26 +02:00
dbDelete ( 'config' , " (`config_name` LIKE 'alert.transports.slack. $config_id .%' AND `config_name` != 'alert.transports.slack. $config_id .url' AND `config_id` NOT IN ( $db_inserts )) " );
}
2015-11-16 16:40:23 -08:00
elseif ( $config_type == 'hipchat' ) {
2015-07-13 20:10:26 +02:00
dbDelete ( 'config' , " (`config_name` LIKE 'alert.transports.hipchat. $config_id .%' AND (`config_name` != 'alert.transports.hipchat. $config_id .url' AND `config_name` != 'alert.transports.hipchat. $config_id .room_id' AND `config_name` != 'alert.transports.hipchat. $config_id .from') AND `config_id` NOT IN ( $db_inserts )) " );
}
2015-11-16 16:40:23 -08:00
elseif ( $config_type == 'pushover' ) {
2015-07-13 20:10:26 +02:00
dbDelete ( 'config' , " (`config_name` LIKE 'alert.transports.pushover. $config_id .%' AND (`config_name` != 'alert.transports.pushover. $config_id .appkey' AND `config_name` != 'alert.transports.pushover. $config_id .userkey') AND `config_id` NOT IN ( $db_inserts )) " );
2015-05-25 21:51:27 +01:00
}
2015-11-16 16:40:23 -08:00
elseif ( $config_type == 'boxcar' ) {
2015-07-19 21:13:06 +01:00
dbDelete ( 'config' , " (`config_name` LIKE 'alert.transports.boxcar. $config_id .%' AND (`config_name` != 'alert.transports.boxcar. $config_id .access_token' AND `config_name` != 'alert.transports.boxcar. $config_id .userkey') AND `config_id` NOT IN ( $db_inserts )) " );
}
2015-11-16 16:40:23 -08:00
elseif ( $config_type == 'clickatell' ) {
2015-11-16 20:13:04 -08:00
dbDelete ( 'config' , " (`config_name` LIKE 'alert.transports.clickatell.to.%' AND `config_id` NOT IN ( $db_inserts )) " );
2015-11-16 16:40:23 -08:00
}
elseif ( $config_type == 'playsms' ) {
2015-11-16 20:13:04 -08:00
dbDelete ( 'config' , " (`config_name` LIKE 'alert.transports.playsms.to.%' AND `config_id` NOT IN ( $db_inserts )) " );
2015-11-16 16:40:23 -08:00
}
2015-05-25 21:51:27 +01:00
}
2015-07-13 20:10:26 +02:00
2015-05-25 21:51:27 +01:00
$message = 'Config item has been updated:' ;
2015-07-13 20:10:26 +02:00
$status = 'ok' ;
}
else {
$state = mres ( $_POST [ 'config_value' ]);
2015-05-25 21:51:27 +01:00
$update = dbUpdate ( array ( 'config_value' => $state ), 'config' , '`config_id`=?' , array ( $config_id ));
2015-07-13 20:10:26 +02:00
if ( ! empty ( $update ) || $update == '0' ) {
2015-05-17 03:20:28 +01:00
$message = 'Alert rule has been updated.' ;
2015-07-13 20:10:26 +02:00
$status = 'ok' ;
}
else {
2015-05-17 03:20:28 +01:00
$message = 'ERROR: Alert rule has not been updated.' ;
}
2015-07-13 20:10:26 +02:00
} //end if
2015-05-17 03:20:28 +01:00
2015-07-13 20:10:26 +02:00
$response = array (
'status' => $status ,
'message' => $message ,
);
2015-05-17 21:45:06 +01:00
echo _json_encode ( $response );