mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Merge pull request #2104 from f0o/issue-2089
Added Clickatell and PlaySMS Transports
This commit is contained in:
@@ -18,6 +18,9 @@ Table of Content:
|
||||
- [Pushover](#transports-pushover)
|
||||
- [Boxcar](#transports-boxcar)
|
||||
- [Pushbullet](#transports-pushbullet)
|
||||
- [Clickatell](#transports-clickatell)
|
||||
- [PlaySMS](#transports-playsms)
|
||||
- [VictorOps](#transports-victorops)
|
||||
- [Entities](#entities)
|
||||
- [Devices](#entity-devices)
|
||||
- [BGP Peers](#entity-bgppeers)
|
||||
@@ -372,6 +375,54 @@ $config['alert']['transports']['pushbullet'] = 'MYFANCYACCESSTOKEN';
|
||||
```
|
||||
~~
|
||||
|
||||
## <a name="transports-clickatell">Clickatell</a>
|
||||
|
||||
Clickatell provides a REST-API requiring an Authorization-Token and at least one Cellphone number.
|
||||
Please consult Clickatell's documentation regarding number formating.
|
||||
Here an example using 3 numbers, any amount of numbers is supported:
|
||||
|
||||
~~
|
||||
```php
|
||||
$config['alert']['transports']['clickatell']['token'] = 'MYFANCYACCESSTOKEN';
|
||||
$config['alert']['transports']['clickatell']['to'][] = '+1234567890';
|
||||
$config['alert']['transports']['clickatell']['to'][] = '+1234567891';
|
||||
$config['alert']['transports']['clickatell']['to'][] = '+1234567892';
|
||||
```
|
||||
~~
|
||||
|
||||
## <a name="transports-playsms">PlaySMS</a>
|
||||
|
||||
PlaySMS is an OpenSource SMS-Gateway that can be used via their HTTP-API using a Username and WebService-Token.
|
||||
Please consult PlaySMS's documentation regarding number formating.
|
||||
Here an example using 3 numbers, any amount of numbers is supported:
|
||||
|
||||
~~
|
||||
```php
|
||||
$config['alert']['transports']['playsms']['url'] = 'https://localhost/index.php?app=ws';
|
||||
$config['alert']['transports']['playsms']['user'] = 'user1';
|
||||
$config['alert']['transports']['playsms']['token'] = 'MYFANCYACCESSTOKEN';
|
||||
$config['alert']['transports']['playsms']['from'] = '+1234567892'; //Optional
|
||||
$config['alert']['transports']['playsms']['to'][] = '+1234567890';
|
||||
$config['alert']['transports']['playsms']['to'][] = '+1234567891';
|
||||
```
|
||||
~~
|
||||
|
||||
## <a name="transports-victorops">VictorOps</a>
|
||||
|
||||
VictorOps provide a webHook url to make integration extremely simple. To get the URL required login to your VictorOps account and go to:
|
||||
|
||||
Settings -> Integrations -> REST Endpoint -> Enable Integration.
|
||||
|
||||
The URL provided will have $routing_key at the end, you need to change this to something that is unique to the system sending the alerts such as librenms. I.e:
|
||||
|
||||
`https://alert.victorops.com/integrations/generic/20132414/alert/2f974ce1-08fc-4dg8-a4f4-9aee6cf35c98/librenms`
|
||||
|
||||
~~
|
||||
```php
|
||||
$config['alert']['transports']['victorops']['url'] = 'https://alert.victorops.com/integrations/generic/20132414/alert/2f974ce1-08fc-4dg8-a4f4-9aee6cf35c98/librenms';
|
||||
```
|
||||
~~
|
||||
|
||||
# <a name="entities">Entities
|
||||
|
||||
Entities as described earlier are based on the table and column names within the database, if you are unsure of what the entity is you want then have a browse around inside MySQL using `show tables` and `desc <tablename>`.
|
||||
|
42
includes/alerts/transport.clickatell.php
Normal file
42
includes/alerts/transport.clickatell.php
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Copyright (C) 2015 Daniel Preussker <f0o@librenms.org>
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/**
|
||||
* Clickatell REST-API Transport
|
||||
* @author f0o <f0o@librenms.org>
|
||||
* @copyright 2015 f0o, LibreNMS
|
||||
* @license GPL
|
||||
* @package LibreNMS
|
||||
* @subpackage Alerts
|
||||
*/
|
||||
|
||||
$data = array("api_id" => $opts['api_id'], "user" => $opts['user'], "password" => $opts['password'], "to" => implode(',',$opts['to']), "text" => $obj['title']);
|
||||
if (!empty($opts['from'])) {
|
||||
$data['from'] = $opts['from'];
|
||||
}
|
||||
$url = 'https://api.clickatell.com/http/sendmsg?'.http_build_query($data);
|
||||
$curl = curl_init($url);
|
||||
|
||||
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
|
||||
$ret = curl_exec($curl);
|
||||
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||
if( $code > 200 ) {
|
||||
if( $debug ) {
|
||||
var_dump($ret);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
42
includes/alerts/transport.playsms.php
Normal file
42
includes/alerts/transport.playsms.php
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Copyright (C) 2015 Daniel Preussker <f0o@librenms.org>
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/**
|
||||
* PlaySMS API Transport
|
||||
* @author f0o <f0o@librenms.org>
|
||||
* @copyright 2015 f0o, LibreNMS
|
||||
* @license GPL
|
||||
* @package LibreNMS
|
||||
* @subpackage Alerts
|
||||
*/
|
||||
|
||||
$data = array("u" => $opts['user'], "h" => $opts['token'], "to" => implode(',',$opts['to']), "msg" => $obj['title']);
|
||||
if (!empty($opts['from'])) {
|
||||
$data["from"] = $opts['from'];
|
||||
}
|
||||
$url = $opts['url'].'&op=pv&'.http_build_query($data);
|
||||
$curl = curl_init($url);
|
||||
|
||||
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
|
||||
$ret = curl_exec($curl);
|
||||
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||
if( $code > 202 ) {
|
||||
if( $debug ) {
|
||||
var_dump($ret);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
57
includes/alerts/transport.victorops.php
Normal file
57
includes/alerts/transport.victorops.php
Normal file
@@ -0,0 +1,57 @@
|
||||
/* Copyright (C) 2015 Daniel Preussker <f0o@devilcode.org>
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/**
|
||||
* VictorOps Generic-API Transport - Based on PagerDuty transport
|
||||
* @author f0o <f0o@devilcode.org>
|
||||
* @author laf <neil@librenms.org>
|
||||
* @copyright 2015 f0o, laf, LibreNMS
|
||||
* @license GPL
|
||||
* @package LibreNMS
|
||||
* @subpackage Alerts
|
||||
*/
|
||||
|
||||
$url = $opts['url'];
|
||||
|
||||
$protocol = array(
|
||||
'entity_id' => ($obj['id'] ? $obj['id'] : $obj['uid']),
|
||||
'state_start_time' => strtotime($obj['timestamp']),
|
||||
'monitoring_tool' => 'librenms',
|
||||
);
|
||||
if( $obj['state'] == 0 ) {
|
||||
$protocol['message_type'] = 'recovery';
|
||||
}
|
||||
elseif( $obj['state'] == 2 ) {
|
||||
$protocol['message_type'] = 'acknowledgement';
|
||||
}
|
||||
elseif ($obj['state'] == 1) {
|
||||
$protocol['message_type'] = 'critical';
|
||||
}
|
||||
|
||||
foreach( $obj['faults'] as $fault=>$data ) {
|
||||
$protocol['state_message'] .= $data['string'];
|
||||
}
|
||||
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL, $url );
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type'=> 'application/json'));
|
||||
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($protocol));
|
||||
$ret = curl_exec($curl);
|
||||
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||
if( $code != 200 ) {
|
||||
var_dump("VictorOps returned Error, retry later"); //FIXME: propper debuging
|
||||
return false;
|
||||
}
|
||||
return true;
|
Reference in New Issue
Block a user