diff --git a/html/forms/config-item.inc.php b/html/forms/config-item.inc.php index 1a481b64a3..46def6626a 100644 --- a/html/forms/config-item.inc.php +++ b/html/forms/config-item.inc.php @@ -26,10 +26,11 @@ $config_value = mres($_POST['config_value']); $config_extra = mres($_POST['config_extra']); $config_room_id = mres($_POST['config_room_id']); $config_from = mres($_POST['config_from']); +$config_userkey = mres($_POST['config_userkey']); $status = 'error'; $message = 'Error with config'; -if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat') { +if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat' || $action == 'remove-pushover') { $config_id = mres($_POST['config_id']); if (empty($config_id)) { $message = 'No config id passed'; @@ -39,6 +40,8 @@ if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipch dbDelete('config', "`config_name` LIKE 'alert.transports.slack.$config_id.%'"); } elseif ($action == 'remove-hipchat') { dbDelete('config', "`config_name` LIKE 'alert.transports.hipchat.$config_id.%'"); + } elseif ($action == 'remove-pushover') { + dbDelete('config', "`config_name` LIKE 'alert.transports.pushover.$config_id.%'"); } $status = 'ok'; $message = 'Config item removed'; @@ -73,8 +76,8 @@ if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipch $config_id = dbInsert(array('config_name' => 'alert.transports.hipchat.', 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_value, 'config_descr'=>'Hipchat Transport'), 'config'); if ($config_id > 0) { dbUpdate(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.url'), 'config', 'config_id=?', array($config_id)); - dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.room_id', 'config_value' => $config_room_id, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_room_id, 'config_descr'=>'Hipchat URL'), 'config'); - dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.from', 'config_value' => $config_from, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_from, 'config_descr'=>'Hipchat From'), 'config'); + $additional_id['room_id'] = dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.room_id', 'config_value' => $config_room_id, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_room_id, 'config_descr'=>'Hipchat URL'), 'config'); + $additional_id['from'] = dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.from', 'config_value' => $config_from, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_from, 'config_descr'=>'Hipchat From'), 'config'); $status = 'ok'; $message = 'Config item created'; $extras = explode('\n',$config_extra); @@ -88,6 +91,27 @@ if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipch $message = 'Could not create config item'; } } +} elseif ($action == 'add-pushover') { + if (empty($config_value) || empty($config_userkey)) { + $message = 'No pushover appkey or userkey provided'; + } else { + $config_id = dbInsert(array('config_name' => 'alert.transports.pushover.', 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_value, 'config_descr'=>'Pushover Transport'), 'config'); + if ($config_id > 0) { + dbUpdate(array('config_name' => 'alert.transports.pushover.'.$config_id.'.appkey'), 'config', 'config_id=?', array($config_id)); + $additional_id['userkey'] = dbInsert(array('config_name' => 'alert.transports.pushover.'.$config_id.'.userkey', 'config_value' => $config_userkey, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_userkey, 'config_descr'=>'Pushver Userkey'), 'config'); + $status = 'ok'; + $message = 'Config item created'; + $extras = explode('\n',$config_extra); + foreach ($extras as $option) { + list($k,$v) = explode("=", $option,2); + if (!empty($k) || !empty($v)) { + dbInsert(array('config_name' => 'alert.transports.pushover.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$v, 'config_descr'=>'Pushover '.$v), 'config'); + } + } + } else { + $message = 'Could not create config item'; + } + } } else { if (empty($config_group) || empty($config_sub_group) || empty($config_name) || empty($config_value)) { @@ -104,5 +128,5 @@ if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipch } } -$response = array('status'=>$status,'message'=>$message, 'config_id'=>$config_id); +$response = array('status'=>$status,'message'=>$message, 'config_id'=>$config_id, 'additional_id'=>$additional_id); echo _json_encode($response); diff --git a/html/forms/update-config-item.inc.php b/html/forms/update-config-item.inc.php index 4c8cc5545f..85919d1b70 100644 --- a/html/forms/update-config-item.inc.php +++ b/html/forms/update-config-item.inc.php @@ -33,15 +33,22 @@ if (!is_numeric($config_id)) { $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'); } elseif ($config_type == 'hipchat') { $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'); + } elseif ($config_type == 'pushover') { + $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'); } } } $db_inserts = implode(",",$db_id); - if (!empty($db_inserts)) { + if (!empty($db_inserts) || empty($_POST['config_value'])) { + if (empty($_POST['config_value'])) { + $db_inserts = 0; + } if ($config_type == 'slack') { 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))"); } elseif ($config_type == 'hipchat') { 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))"); + } elseif ($config_type == 'pushover') { + 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))"); } } $message = 'Config item has been updated:'; diff --git a/html/pages/settings/alerting.inc.php b/html/pages/settings/alerting.inc.php index ca2473635b..1b1f3de3a7 100644 --- a/html/pages/settings/alerting.inc.php +++ b/html/pages/settings/alerting.inc.php @@ -113,6 +113,38 @@ $no_refresh = TRUE; + +
+ + +