From 4d8a84d6048f5a94c73d2bc0dfdc4024ae843139 Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 16 Nov 2015 08:56:46 -0800 Subject: [PATCH 1/7] Added WebUI support for Clickatell transport --- html/includes/forms/config-item.inc.php | 31 ++++- html/pages/settings/alerting.inc.php | 150 ++++++++++++++++++++++++ 2 files changed, 180 insertions(+), 1 deletion(-) diff --git a/html/includes/forms/config-item.inc.php b/html/includes/forms/config-item.inc.php index 084c612316..726756d8e7 100644 --- a/html/includes/forms/config-item.inc.php +++ b/html/includes/forms/config-item.inc.php @@ -30,10 +30,11 @@ $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']); +$config_to = mres($_POST['config_to']); $status = 'error'; $message = 'Error with config'; -if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat' || $action == 'remove-pushover' || $action == 'remove-boxcar') { +if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat' || $action == 'remove-pushover' || $action == 'remove-boxcar' || $action == 'remove-clickatell') { $config_id = mres($_POST['config_id']); if (empty($config_id)) { $message = 'No config id passed'; @@ -52,6 +53,9 @@ if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipch elseif ($action == 'remove-boxcar') { dbDelete('config', "`config_name` LIKE 'alert.transports.boxcar.$config_id.%'"); } + elseif ($action == 'remove-clickatell') { + dbDelete('config', "`config_name` LIKE 'alert.transports.clickatell.$config_id.%'"); + } $status = 'ok'; $message = 'Config item removed'; @@ -156,6 +160,31 @@ else if ($action == 'add-boxcar') { } } } +else if ($action == 'add-clickatell') { + if (empty($config_value)) { + $message = 'No Clickatell token provided'; + } + elseif (empty($config_to)) { + $message = 'No mobile numbers provided'; + } + else { + $config_id = dbInsert(array('config_name' => 'alert.transports.clickatell.', 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_value, 'config_descr' => 'Clickatell Transport'), 'config'); + if ($config_id > 0) { + dbUpdate(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.token'), 'config', 'config_id=?', array($config_id)); + $status = 'ok'; + $message = 'Config item created'; + $mobiles = explode('\n', $config_to); + foreach ($mobiles as $mobile) { + if (!empty($mobile)) { + dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to', 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'Clickatell mobile'), 'config'); + } + } + } + else { + $message = 'Could not create config item'; + } + } +} else { if (empty($config_group) || empty($config_sub_group) || empty($config_name) || empty($config_value)) { $message = 'Missing config name or value'; diff --git a/html/pages/settings/alerting.inc.php b/html/pages/settings/alerting.inc.php index 9c763811dd..18f0b5725f 100644 --- a/html/pages/settings/alerting.inc.php +++ b/html/pages/settings/alerting.inc.php @@ -173,6 +173,34 @@ $no_refresh = true; + + + + +
+
+

+ Clickatell transport +

+
+
+
+
+
+ +
+
'; +$clickatells = get_config_like_name('alert.transports.clickatell.%.token'); +foreach ($clickatells as $clickatell) { + $to = get_config_like_name('alert.transports.clickatell.'.$clickatell['config_id'].'.to'); + $new_extra = array(); + unset($upd_extra); + foreach ($to as $number) { + $split_extra = explode('.', $number['config_name']); + if ($split_extra[4] != 'token') { + $new_extra[] = $number['config_value']; + } + } + $upd_extra = implode(PHP_EOL, $new_extra); + echo '
+
+ +
+ + +
+
+ +
+
+
+
+ + +
+
+
'; +}//end foreach + +echo '
+
+ +
+ + +
+
+ +
+
+
+
+ +
+
+
+
+
+
'; @@ -955,6 +1048,42 @@ echo '
}); });// End Add Boxcar config + // Add Clickatell config + itemIndex = 0; + $("button#submit-clickatell").click(function(){ + var config_value = $('#clickatell_value').val(); + var config_to = $('#clickatell_to').val(); + $.ajax({ + type: "POST", + url: "ajax_form.php", + data: {type: "config-item", action: 'add-clickatell', config_group: "alerting", config_sub_group: "transports", config_to: config_to, config_value: config_value}, + dataType: "json", + success: function(data){ + if (data.status == 'ok') { + itemIndex++; + var $template = $('#clickatell_token_template'), + $clone = $template + .clone() + .removeClass('hide') + .attr('id',data.config_id) + .attr('boxcar-appkey-index', itemIndex) + .insertBefore($template); + $clone.find('[id="clickatell_token"]').attr('data-config_id',data.config_id); + $clone.find('[id="del-clickatell-call"]').attr('data-config_id',data.config_id); + $clone.find('[name="global-config-input"]').attr('value', config_value); + $clone.find('[id="clickatell_to"]').val(config_to); + $clone.find('[id="clickatell_to"]').attr('data-config_id',data.config_id); + $("#new-config-clickatell").modal('hide'); + } else { + $("#message").html('
' + data.message + '
'); + } + }, + error: function(){ + $("#message").html('
Error creating config item
'); + } + }); + });// End Add Clickatell config + // Delete api config $(document).on('click', 'button[name="del-api-call"]', function(event) { var config_id = $(this).data('config_id'); @@ -1060,6 +1189,27 @@ echo '
}); });// End delete Boxcar config + // Delete Clickatell config + $(document).on('click', 'button[name="del-clickatell-call"]', function(event) { + var config_id = $(this).data('config_id'); + $.ajax({ + type: 'POST', + url: 'ajax_form.php', + data: {type: "config-item", action: 'remove-clickatell', config_id: config_id}, + dataType: "json", + success: function (data) { + if (data.status == 'ok') { + $("#"+config_id).remove(); + } else { + $("#message").html('
' + data.message + '
'); + } + }, + error: function () { + $("#message").html('
An error occurred.
'); + } + }); + });// End delete Clickatell config + $( 'select[name="global-config-select"]').change(function(event) { event.preventDefault(); var $this = $(this); From 6ad95be58b71917de41c87fbe718f4e339b3e672 Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 16 Nov 2015 10:40:09 -0800 Subject: [PATCH 2/7] Added WebUI PlaySMS transport --- html/includes/forms/config-item.inc.php | 38 ++++- html/pages/settings/alerting.inc.php | 218 +++++++++++++++++++++++- 2 files changed, 254 insertions(+), 2 deletions(-) diff --git a/html/includes/forms/config-item.inc.php b/html/includes/forms/config-item.inc.php index 726756d8e7..8b4bc143d6 100644 --- a/html/includes/forms/config-item.inc.php +++ b/html/includes/forms/config-item.inc.php @@ -30,11 +30,13 @@ $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']); +$config_user = mres($_POST['config_user']); $config_to = mres($_POST['config_to']); +$config_token = mres($_POST['config_token']); $status = 'error'; $message = 'Error with config'; -if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat' || $action == 'remove-pushover' || $action == 'remove-boxcar' || $action == 'remove-clickatell') { +if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat' || $action == 'remove-pushover' || $action == 'remove-boxcar' || $action == 'remove-clickatell' || $action == 'remove-playsms') { $config_id = mres($_POST['config_id']); if (empty($config_id)) { $message = 'No config id passed'; @@ -56,6 +58,9 @@ if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipch elseif ($action == 'remove-clickatell') { dbDelete('config', "`config_name` LIKE 'alert.transports.clickatell.$config_id.%'"); } + elseif ($action == 'remove-playsms') { + dbDelete('config', "`config_name` LIKE 'alert.transports.playsms.$config_id.%'"); + } $status = 'ok'; $message = 'Config item removed'; @@ -185,6 +190,37 @@ else if ($action == 'add-clickatell') { } } } +elseif ($action == 'add-playsms') { + if (empty($config_value)) { + $message = 'No PlaySMS URL provided'; + } + elseif (empty($config_user)) { + $message = 'No PlaySMS User provided'; + } + elseif (empty($config_to)) { + $message = 'No mobile numbers provided'; + } + else { + $config_id = dbInsert(array('config_name' => 'alert.transports.playsms.', 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_value, 'config_descr' => 'PlaySMS Transport'), 'config'); + if ($config_id > 0) { + dbUpdate(array('config_name' => 'alert.transports.playsms.'.$config_id.'.url'), 'config', 'config_id=?', array($config_id)); + $additional_id['from'] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.from', 'config_value' => $config_from, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_from, 'config_descr' => 'PlaySMS From'), 'config'); + $additional_id['user'] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.user', 'config_value' => $config_user, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_user, 'config_descr' => 'PlaySMS User'), 'config'); + $additional_id['token'] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.token', 'config_value' => $config_token, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $config_token, 'config_descr' => 'PlaySMS Token'), 'config'); + $status = 'ok'; + $message = 'Config item created'; + $mobiles = explode('\n', $config_to); + foreach ($mobiles as $mobile) { + if (!empty($mobile)) { + dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to', 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'PlaySMS mobile'), 'config'); + } + } + } + else { + $message = 'Could not create config item'; + } + } +} else { if (empty($config_group) || empty($config_sub_group) || empty($config_name) || empty($config_value)) { $message = 'Missing config name or value'; diff --git a/html/pages/settings/alerting.inc.php b/html/pages/settings/alerting.inc.php index 18f0b5725f..923ca1f7d3 100644 --- a/html/pages/settings/alerting.inc.php +++ b/html/pages/settings/alerting.inc.php @@ -201,6 +201,46 @@ $no_refresh = true;
+ + + +
+
+
+

+ PlaySMS transport +

+
+
+
+
+
+ +
+
'; +$playsms = get_config_like_name('alert.transports.playsms.%.url'); +foreach ($playsms as $item) { + $playsms_user = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.user'); + $playsms_token = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.token'); + $playsms_from = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.from'); + $to = get_config_like_name('alert.transports.playsms.'.$item['config_id'].'.%'); + $new_extra = array(); + unset($upd_extra); + foreach ($to as $number) { + $split_extra = explode('.', $number['config_name']); + if ($split_extra[4] != 'url' && $split_extra[4] != 'user' && $split_extra[4] != 'token' && $split_extra[4] != 'from') { + $new_extra[] = $number['config_value']; + } + } + $upd_extra = implode(PHP_EOL, $new_extra); + echo '
+
+ +
+ + +
+
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+
+
'; +}//end foreach + +echo '
+
+ +
+ + +
+
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+
+
+
'; @@ -1066,7 +1216,7 @@ echo '
.clone() .removeClass('hide') .attr('id',data.config_id) - .attr('boxcar-appkey-index', itemIndex) + .attr('clickatell-appkey-index', itemIndex) .insertBefore($template); $clone.find('[id="clickatell_token"]').attr('data-config_id',data.config_id); $clone.find('[id="del-clickatell-call"]').attr('data-config_id',data.config_id); @@ -1084,6 +1234,51 @@ echo '
}); });// End Add Clickatell config + // Add PlaySMS config + itemIndex = 0; + $("button#submit-playsms").click(function(){ + var config_value = $('#playsms_value').val(); + var config_from = $('#playsms_from').val(); + var config_user = $('#playsms_user').val(); + var config_token = $('#playsms_token').val(); + var config_to = $('#playsms_to').val(); + $.ajax({ + type: "POST", + url: "ajax_form.php", + data: {type: "config-item", action: 'add-playsms', config_group: "alerting", config_sub_group: "transports", config_to: config_to, config_value: config_value, config_from: config_from, config_user: config_user, config_token: config_token}, + dataType: "json", + success: function(data){ + if (data.status == 'ok') { + itemIndex++; + var $template = $('#playsms_template'), + $clone = $template + .clone() + .removeClass('hide') + .attr('id',data.config_id) + .attr('playsms-appkey-index', itemIndex) + .insertBefore($template); + $clone.find('[id="playsms_url"]').attr('data-config_id',data.config_id); + $clone.find('[id="del-playsms-call"]').attr('data-config_id',data.config_id); + $clone.find('[name="global-config-input"]').attr('value', config_value); + $clone.find('[id="playsms_to"]').val(config_to); + $clone.find('[id="playsms_to"]').attr('data-config_id',data.config_id); + $clone.find('[id="playsms_from"]').val(config_from); + $clone.find('[id="playsms_from"]').attr('data-config_id',data.config_id); + $clone.find('[id="playsms_token"]').val(config_token); + $clone.find('[id="playsms_token"]').attr('data-config_id',data.config_id); + $clone.find('[id="playsms_user"]').val(config_user); + $clone.find('[id="playsms_user"]').attr('data-config_id',data.config_id); + $("#new-config-playsms").modal('hide'); + } else { + $("#message").html('
' + data.message + '
'); + } + }, + error: function(){ + $("#message").html('
Error creating config item
'); + } + }); + });// End Add PlaySMS config + // Delete api config $(document).on('click', 'button[name="del-api-call"]', function(event) { var config_id = $(this).data('config_id'); @@ -1210,6 +1405,27 @@ echo '
}); });// End delete Clickatell config + // Delete PlaySMS config + $(document).on('click', 'button[name="del-playsms-call"]', function(event) { + var config_id = $(this).data('config_id'); + $.ajax({ + type: 'POST', + url: 'ajax_form.php', + data: {type: "config-item", action: 'remove-playsms', config_id: config_id}, + dataType: "json", + success: function (data) { + if (data.status == 'ok') { + $("#"+config_id).remove(); + } else { + $("#message").html('
' + data.message + '
'); + } + }, + error: function () { + $("#message").html('
An error occurred.
'); + } + }); + });// End delete PlaySMS config + $( 'select[name="global-config-select"]').change(function(event) { event.preventDefault(); var $this = $(this); From 9c678d12cd10102273a242717226cf0408e6a3ff Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 16 Nov 2015 16:40:23 -0800 Subject: [PATCH 3/7] More updates for new transports --- html/includes/forms/config-item.inc.php | 4 ++-- .../includes/forms/update-config-item.inc.php | 24 ++++++++++++++----- html/includes/functions.inc.php | 2 +- html/pages/settings/alerting.inc.php | 4 ++-- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/html/includes/forms/config-item.inc.php b/html/includes/forms/config-item.inc.php index 8b4bc143d6..7d2fefa9bd 100644 --- a/html/includes/forms/config-item.inc.php +++ b/html/includes/forms/config-item.inc.php @@ -181,7 +181,7 @@ else if ($action == 'add-clickatell') { $mobiles = explode('\n', $config_to); foreach ($mobiles as $mobile) { if (!empty($mobile)) { - dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to', 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'Clickatell mobile'), 'config'); + dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to.', 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'Clickatell mobile'), 'config'); } } } @@ -212,7 +212,7 @@ elseif ($action == 'add-playsms') { $mobiles = explode('\n', $config_to); foreach ($mobiles as $mobile) { if (!empty($mobile)) { - dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to', 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'PlaySMS mobile'), 'config'); + dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to.', 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'PlaySMS mobile'), 'config'); } } } diff --git a/html/includes/forms/update-config-item.inc.php b/html/includes/forms/update-config-item.inc.php index 4b9ffe75d7..86ce207308 100644 --- a/html/includes/forms/update-config-item.inc.php +++ b/html/includes/forms/update-config-item.inc.php @@ -25,7 +25,7 @@ $status = 'error'; if (!is_numeric($config_id)) { $message = 'ERROR: No config item'; } -else if ($action == 'update-textarea') { +elseif ($action == 'update-textarea') { $extras = explode(PHP_EOL, $_POST['config_value']); foreach ($extras as $option) { list($k,$v) = explode('=', $option, 2); @@ -33,15 +33,21 @@ else if ($action == 'update-textarea') { if ($config_type == 'slack') { $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'); } - else if ($config_type == 'hipchat') { + 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'); } - else if ($config_type == 'pushover') { + 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'); } 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'); } + elseif ($config_type == 'clickatell') { + $db_id[] = dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to.', 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Clickatell Transport'), 'config'); + } + elseif ($config_type == 'playsms') { + $db_id[] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to.', 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'PlaySMS Transport'), 'config'); + } } } @@ -54,15 +60,21 @@ else if ($action == 'update-textarea') { 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))"); } - else if ($config_type == 'hipchat') { + 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))"); } - else if ($config_type == 'pushover') { + 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))"); } - else if ($config_type == 'boxcar') { + elseif ($config_type == 'boxcar') { 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))"); } + elseif ($config_type == 'clickatell') { + dbDelete('config', "(`config_name` LIKE 'alert.transports.clickatell.$config_id.%' AND (`config_name` != 'alert.transports.clickatell.$config_id.token') AND `config_id` NOT IN ($db_inserts))"); + } + elseif ($config_type == 'playsms') { + dbDelete('config', "(`config_name` LIKE 'alert.transports.playsms.$config_id.%' AND (`config_name` != 'alert.transports.playsms.$config_id.url' AND `config_name` != 'alert.transports.playsms.$config_id.from' AND `config_name` != 'alert.transports.playsms.$config_id.user' AND `config_name` != 'alert.transports.playsms.$config_id.token') AND `config_id` NOT IN ($db_inserts))"); + } } $message = 'Config item has been updated:'; diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index 21121d0cef..aa22bb16f3 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -1097,7 +1097,7 @@ function get_config_like_name($name) { $name = array($name); $items = array(); foreach (dbFetchRows("SELECT * FROM `config` WHERE `config_name` LIKE '%?%'", array($name)) as $config_item) { - $items[$config_item['config_name']] = $config_item; + $items[$config_item['config_id']] = $config_item; } return $items; diff --git a/html/pages/settings/alerting.inc.php b/html/pages/settings/alerting.inc.php index 923ca1f7d3..c8ca74e6dc 100644 --- a/html/pages/settings/alerting.inc.php +++ b/html/pages/settings/alerting.inc.php @@ -803,7 +803,7 @@ echo '
'; $clickatells = get_config_like_name('alert.transports.clickatell.%.token'); foreach ($clickatells as $clickatell) { - $to = get_config_like_name('alert.transports.clickatell.'.$clickatell['config_id'].'.to'); + $to = get_config_like_name('alert.transports.clickatell.'.$clickatell['config_id'].'.to.'); $new_extra = array(); unset($upd_extra); foreach ($to as $number) { @@ -871,7 +871,7 @@ foreach ($playsms as $item) { $playsms_user = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.user'); $playsms_token = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.token'); $playsms_from = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.from'); - $to = get_config_like_name('alert.transports.playsms.'.$item['config_id'].'.%'); + $to = get_config_like_name('alert.transports.playsms.'.$item['config_id'].'.to.'); $new_extra = array(); unset($upd_extra); foreach ($to as $number) { From 1affc12ae0925de8d049a7128e9bb2055c52284b Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 16 Nov 2015 19:22:28 -0800 Subject: [PATCH 4/7] More changes --- html/includes/forms/config-item.inc.php | 8 ++++++-- html/includes/forms/update-config-item.inc.php | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/html/includes/forms/config-item.inc.php b/html/includes/forms/config-item.inc.php index 7d2fefa9bd..12fd3c4368 100644 --- a/html/includes/forms/config-item.inc.php +++ b/html/includes/forms/config-item.inc.php @@ -179,9 +179,11 @@ else if ($action == 'add-clickatell') { $status = 'ok'; $message = 'Config item created'; $mobiles = explode('\n', $config_to); + $x=0; foreach ($mobiles as $mobile) { if (!empty($mobile)) { - dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to.', 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'Clickatell mobile'), 'config'); + dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to.'.$x, 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'Clickatell mobile'), 'config'); + $x++; } } } @@ -210,9 +212,11 @@ elseif ($action == 'add-playsms') { $status = 'ok'; $message = 'Config item created'; $mobiles = explode('\n', $config_to); + $x=0; foreach ($mobiles as $mobile) { if (!empty($mobile)) { - dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to.', 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'PlaySMS mobile'), 'config'); + dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to.'.$x, 'config_value' => $mobile, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default' => $v, 'config_descr' => 'PlaySMS mobile'), 'config'); + $x++; } } } diff --git a/html/includes/forms/update-config-item.inc.php b/html/includes/forms/update-config-item.inc.php index 86ce207308..e76a412576 100644 --- a/html/includes/forms/update-config-item.inc.php +++ b/html/includes/forms/update-config-item.inc.php @@ -27,6 +27,7 @@ if (!is_numeric($config_id)) { } elseif ($action == 'update-textarea') { $extras = explode(PHP_EOL, $_POST['config_value']); + $x=0; foreach ($extras as $option) { list($k,$v) = explode('=', $option, 2); if (!empty($k) || !empty($v)) { @@ -43,10 +44,12 @@ elseif ($action == 'update-textarea') { $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'); } elseif ($config_type == 'clickatell') { - $db_id[] = dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to.', 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Clickatell Transport'), 'config'); + $db_id[] = dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to.'.$x, 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Clickatell Transport'), 'config'); + $x++; } elseif ($config_type == 'playsms') { - $db_id[] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to.', 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'PlaySMS Transport'), 'config'); + $db_id[] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to.'.$x, 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'PlaySMS Transport'), 'config'); + $x++; } } } From 7b46e67a472ff9c7d2cf7dc6fb679d40d5a04c40 Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 16 Nov 2015 20:13:04 -0800 Subject: [PATCH 5/7] Final updates to support Clickatell and PlaySMS --- .../includes/forms/update-config-item.inc.php | 8 +- html/pages/settings/alerting.inc.php | 407 +++--------------- 2 files changed, 70 insertions(+), 345 deletions(-) diff --git a/html/includes/forms/update-config-item.inc.php b/html/includes/forms/update-config-item.inc.php index e76a412576..dff681cebd 100644 --- a/html/includes/forms/update-config-item.inc.php +++ b/html/includes/forms/update-config-item.inc.php @@ -44,11 +44,11 @@ elseif ($action == 'update-textarea') { $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'); } elseif ($config_type == 'clickatell') { - $db_id[] = dbInsert(array('config_name' => 'alert.transports.clickatell.'.$config_id.'.to.'.$x, 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'Clickatell Transport'), 'config'); + $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'); $x++; } elseif ($config_type == 'playsms') { - $db_id[] = dbInsert(array('config_name' => 'alert.transports.playsms.'.$config_id.'.to.'.$x, 'config_value' => $k, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default' => $v, 'config_descr' => 'PlaySMS Transport'), 'config'); + $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'); $x++; } } @@ -73,10 +73,10 @@ elseif ($action == 'update-textarea') { 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))"); } elseif ($config_type == 'clickatell') { - dbDelete('config', "(`config_name` LIKE 'alert.transports.clickatell.$config_id.%' AND (`config_name` != 'alert.transports.clickatell.$config_id.token') AND `config_id` NOT IN ($db_inserts))"); + dbDelete('config', "(`config_name` LIKE 'alert.transports.clickatell.to.%' AND `config_id` NOT IN ($db_inserts))"); } elseif ($config_type == 'playsms') { - dbDelete('config', "(`config_name` LIKE 'alert.transports.playsms.$config_id.%' AND (`config_name` != 'alert.transports.playsms.$config_id.url' AND `config_name` != 'alert.transports.playsms.$config_id.from' AND `config_name` != 'alert.transports.playsms.$config_id.user' AND `config_name` != 'alert.transports.playsms.$config_id.token') AND `config_id` NOT IN ($db_inserts))"); + dbDelete('config', "(`config_name` LIKE 'alert.transports.playsms.to.%' AND `config_id` NOT IN ($db_inserts))"); } } diff --git a/html/pages/settings/alerting.inc.php b/html/pages/settings/alerting.inc.php index c8ca74e6dc..d75feec06b 100644 --- a/html/pages/settings/alerting.inc.php +++ b/html/pages/settings/alerting.inc.php @@ -173,74 +173,6 @@ $no_refresh = true;
- - - - - - - -
- + '; + +$clickatell = get_config_by_name('alert.transports.clickatell.token'); +$mobiles = get_config_like_name('alert.transports.clickatell.to.%'); +$new_mobiles = array(); +foreach ($mobiles as $mobile) { + $new_mobiles[] = $mobile['config_value']; +} +$upd_mobiles = implode(PHP_EOL, $new_mobiles); + +echo '

@@ -796,63 +738,34 @@ echo '
-
-
- +
+ +
+ +
-
'; -$clickatells = get_config_like_name('alert.transports.clickatell.%.token'); -foreach ($clickatells as $clickatell) { - $to = get_config_like_name('alert.transports.clickatell.'.$clickatell['config_id'].'.to.'); - $new_extra = array(); - unset($upd_extra); - foreach ($to as $number) { - $split_extra = explode('.', $number['config_name']); - if ($split_extra[4] != 'token') { - $new_extra[] = $number['config_value']; - } - } - $upd_extra = implode(PHP_EOL, $new_extra); - echo '
-
- -
- - -
-
- -
-
-
-
- - -
-
-
'; -}//end foreach - -echo '
-
- -
- - -
-
- -
-
-
-
- -
+
+
+ +
+ +
-
+
'; +$playsms_url = get_config_by_name('alert.transports.playsms.url'); +$playsms_user = get_config_by_name('alert.transports.playsms.user'); +$playsms_token = get_config_by_name('alert.transports.playsms.token'); +$playsms_from = get_config_by_name('alert.transports.playsms.from'); +$mobiles = get_config_like_name('alert.transports.playsms.to.%'); +$new_mobiles = array(); +foreach ($mobiles as $mobile) { + $new_mobiles[] = $mobile['config_value']; +} +$upd_mobiles = implode(PHP_EOL, $new_mobiles); +echo '

@@ -861,105 +774,40 @@ echo '
-
-
- -
-
'; -$playsms = get_config_like_name('alert.transports.playsms.%.url'); -foreach ($playsms as $item) { - $playsms_user = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.user'); - $playsms_token = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.token'); - $playsms_from = get_config_by_name('alert.transports.playsms.'.$item['config_id'].'.from'); - $to = get_config_like_name('alert.transports.playsms.'.$item['config_id'].'.to.'); - $new_extra = array(); - unset($upd_extra); - foreach ($to as $number) { - $split_extra = explode('.', $number['config_name']); - if ($split_extra[4] != 'url' && $split_extra[4] != 'user' && $split_extra[4] != 'token' && $split_extra[4] != 'from') { - $new_extra[] = $number['config_value']; - } - } - $upd_extra = implode(PHP_EOL, $new_extra); - echo '
-
- -
- - -
-
- -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
- - -
-
-
'; -}//end foreach - -echo '
-
- -
- - -
-
- -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
- -
+
+ +
+ +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
@@ -1198,87 +1046,6 @@ echo '
}); });// End Add Boxcar config - // Add Clickatell config - itemIndex = 0; - $("button#submit-clickatell").click(function(){ - var config_value = $('#clickatell_value').val(); - var config_to = $('#clickatell_to').val(); - $.ajax({ - type: "POST", - url: "ajax_form.php", - data: {type: "config-item", action: 'add-clickatell', config_group: "alerting", config_sub_group: "transports", config_to: config_to, config_value: config_value}, - dataType: "json", - success: function(data){ - if (data.status == 'ok') { - itemIndex++; - var $template = $('#clickatell_token_template'), - $clone = $template - .clone() - .removeClass('hide') - .attr('id',data.config_id) - .attr('clickatell-appkey-index', itemIndex) - .insertBefore($template); - $clone.find('[id="clickatell_token"]').attr('data-config_id',data.config_id); - $clone.find('[id="del-clickatell-call"]').attr('data-config_id',data.config_id); - $clone.find('[name="global-config-input"]').attr('value', config_value); - $clone.find('[id="clickatell_to"]').val(config_to); - $clone.find('[id="clickatell_to"]').attr('data-config_id',data.config_id); - $("#new-config-clickatell").modal('hide'); - } else { - $("#message").html('
' + data.message + '
'); - } - }, - error: function(){ - $("#message").html('
Error creating config item
'); - } - }); - });// End Add Clickatell config - - // Add PlaySMS config - itemIndex = 0; - $("button#submit-playsms").click(function(){ - var config_value = $('#playsms_value').val(); - var config_from = $('#playsms_from').val(); - var config_user = $('#playsms_user').val(); - var config_token = $('#playsms_token').val(); - var config_to = $('#playsms_to').val(); - $.ajax({ - type: "POST", - url: "ajax_form.php", - data: {type: "config-item", action: 'add-playsms', config_group: "alerting", config_sub_group: "transports", config_to: config_to, config_value: config_value, config_from: config_from, config_user: config_user, config_token: config_token}, - dataType: "json", - success: function(data){ - if (data.status == 'ok') { - itemIndex++; - var $template = $('#playsms_template'), - $clone = $template - .clone() - .removeClass('hide') - .attr('id',data.config_id) - .attr('playsms-appkey-index', itemIndex) - .insertBefore($template); - $clone.find('[id="playsms_url"]').attr('data-config_id',data.config_id); - $clone.find('[id="del-playsms-call"]').attr('data-config_id',data.config_id); - $clone.find('[name="global-config-input"]').attr('value', config_value); - $clone.find('[id="playsms_to"]').val(config_to); - $clone.find('[id="playsms_to"]').attr('data-config_id',data.config_id); - $clone.find('[id="playsms_from"]').val(config_from); - $clone.find('[id="playsms_from"]').attr('data-config_id',data.config_id); - $clone.find('[id="playsms_token"]').val(config_token); - $clone.find('[id="playsms_token"]').attr('data-config_id',data.config_id); - $clone.find('[id="playsms_user"]').val(config_user); - $clone.find('[id="playsms_user"]').attr('data-config_id',data.config_id); - $("#new-config-playsms").modal('hide'); - } else { - $("#message").html('
' + data.message + '
'); - } - }, - error: function(){ - $("#message").html('
Error creating config item
'); - } - }); - });// End Add PlaySMS config - // Delete api config $(document).on('click', 'button[name="del-api-call"]', function(event) { var config_id = $(this).data('config_id'); @@ -1384,48 +1151,6 @@ echo '
}); });// End delete Boxcar config - // Delete Clickatell config - $(document).on('click', 'button[name="del-clickatell-call"]', function(event) { - var config_id = $(this).data('config_id'); - $.ajax({ - type: 'POST', - url: 'ajax_form.php', - data: {type: "config-item", action: 'remove-clickatell', config_id: config_id}, - dataType: "json", - success: function (data) { - if (data.status == 'ok') { - $("#"+config_id).remove(); - } else { - $("#message").html('
' + data.message + '
'); - } - }, - error: function () { - $("#message").html('
An error occurred.
'); - } - }); - });// End delete Clickatell config - - // Delete PlaySMS config - $(document).on('click', 'button[name="del-playsms-call"]', function(event) { - var config_id = $(this).data('config_id'); - $.ajax({ - type: 'POST', - url: 'ajax_form.php', - data: {type: "config-item", action: 'remove-playsms', config_id: config_id}, - dataType: "json", - success: function (data) { - if (data.status == 'ok') { - $("#"+config_id).remove(); - } else { - $("#message").html('
' + data.message + '
'); - } - }, - error: function () { - $("#message").html('
An error occurred.
'); - } - }); - });// End delete PlaySMS config - $( 'select[name="global-config-select"]').change(function(event) { event.preventDefault(); var $this = $(this); From b3da666ae75ee81054e25decae1b169773af20fe Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 16 Nov 2015 20:22:08 -0800 Subject: [PATCH 6/7] Added relevant sql schema --- sql-schema/076.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 sql-schema/076.sql diff --git a/sql-schema/076.sql b/sql-schema/076.sql new file mode 100644 index 0000000000..83e9a08a26 --- /dev/null +++ b/sql-schema/076.sql @@ -0,0 +1 @@ +INSERT INTO config (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) values ('alert.transports.clickatell.token','','','Clickatell access token','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.url','','','PlaySMS API URL','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.user','','','PlaySMS User','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.from','','','PlaySMS From','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.token','','','PlaySMS Token','alerting',0,'transports',0,'0','0'); From df652f0507c25c56633daed97c92ba4dffd0ec7e Mon Sep 17 00:00:00 2001 From: laf Date: Thu, 19 Nov 2015 07:37:32 +0000 Subject: [PATCH 7/7] Added WebUI support for VictorOps --- html/pages/settings/alerting.inc.php | 19 +++++++++++++++++++ sql-schema/077.sql | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/html/pages/settings/alerting.inc.php b/html/pages/settings/alerting.inc.php index d75feec06b..df70e071e5 100644 --- a/html/pages/settings/alerting.inc.php +++ b/html/pages/settings/alerting.inc.php @@ -719,6 +719,25 @@ echo '
+
+
+
+

+ VictorOps +

+
+
+
+
+ +
+
+ + +
+
+
+
'; $clickatell = get_config_by_name('alert.transports.clickatell.token'); diff --git a/sql-schema/077.sql b/sql-schema/077.sql index 83e9a08a26..8ef025e410 100644 --- a/sql-schema/077.sql +++ b/sql-schema/077.sql @@ -1 +1 @@ -INSERT INTO config (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) values ('alert.transports.clickatell.token','','','Clickatell access token','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.url','','','PlaySMS API URL','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.user','','','PlaySMS User','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.from','','','PlaySMS From','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.token','','','PlaySMS Token','alerting',0,'transports',0,'0','0'); +INSERT INTO config (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) values ('alert.transports.clickatell.token','','','Clickatell access token','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.url','','','PlaySMS API URL','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.user','','','PlaySMS User','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.from','','','PlaySMS From','alerting',0,'transports',0,'0','0'),('alert.transports.playsms.token','','','PlaySMS Token','alerting',0,'transports',0,'0','0'), ('alert.transports.victorops.url','','','VictorOps Post URL - Replace routing_key!','alerting',0,'transports',0,'0','0');