diff --git a/doc/Extensions/Alerting.md b/doc/Extensions/Alerting.md index fe4e51dab..3e1efa761 100644 --- a/doc/Extensions/Alerting.md +++ b/doc/Extensions/Alerting.md @@ -18,6 +18,8 @@ Table of Content: - [Pushover](#transports-pushover) - [Boxcar](#transports-boxcar) - [Pushbullet](#transports-pushbullet) + - [Clickatell](#transports-clickatell) + - [PlaySMS](#transports-playsms) - [Entities](#entities) - [Devices](#entity-devices) - [BGP Peers](#entity-bgppeers) @@ -372,6 +374,38 @@ $config['alert']['transports']['pushbullet'] = 'MYFANCYACCESSTOKEN'; ``` ~~ +## Clickatell + +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'; +``` +~~ + +## PlaySMS + +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']['to'][] = '+1234567890'; +$config['alert']['transports']['playsms']['to'][] = '+1234567891'; +$config['alert']['transports']['playsms']['to'][] = '+1234567892'; +``` +~~ + # 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 `. diff --git a/includes/alerts/transport.clickatell.php b/includes/alerts/transport.clickatell.php new file mode 100644 index 000000000..a8d423487 --- /dev/null +++ b/includes/alerts/transport.clickatell.php @@ -0,0 +1,45 @@ +/* Copyright (C) 2015 Daniel Preussker + * 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 . */ + +/** + * Clickatell REST-API Transport + * @author f0o + * @copyright 2015 f0o, LibreNMS + * @license GPL + * @package LibreNMS + * @subpackage Alerts + */ + +$data = array("text" => $obj['title'], "to" => $opts['to']); +$data = json_encode($data); +$curl = curl_init('https://api.clickatell.com/rest/message'); + +curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); +curl_setopt($curl, CURLOPT_POSTFIELDS, $data); +curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); +curl_setopt($curl, CURLOPT_HTTPHEADER, array( + 'Content-Type: application/json', + 'Content-Length: '.strlen($data), + 'Authorization: Bearer '.$opts['token'], +)); + +$ret = curl_exec($curl); +$code = curl_getinfo($curl, CURLINFO_HTTP_CODE); +if( $code > 202 ) { + if( $debug ) { + var_dump($ret); + } + return false; +} +return true; diff --git a/includes/alerts/transport.playsms.php b/includes/alerts/transport.playsms.php new file mode 100644 index 000000000..d271fda9d --- /dev/null +++ b/includes/alerts/transport.playsms.php @@ -0,0 +1,39 @@ +/* Copyright (C) 2015 Daniel Preussker + * 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 . */ + +/** + * PlaySMS API Transport + * @author f0o + * @copyright 2015 f0o, LibreNMS + * @license GPL + * @package LibreNMS + * @subpackage Alerts + */ + +$data = array("msg" => $obj['title'], "to" => implode(',',$opts['to']), "h" => $opts['token'], "u" => $opts['user']); +$url = $opts['url'].'&'.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;