diff --git a/LibreNMS/Alert/Transport/Signal.php b/LibreNMS/Alert/Transport/Signal.php new file mode 100644 index 0000000000..f72a93a891 --- /dev/null +++ b/LibreNMS/Alert/Transport/Signal.php @@ -0,0 +1,80 @@ +. */ + +/** + * Signal Transport + * @author kzink + * @copyright 2021 kzink, LibreNMS + * @license GPL + */ + +namespace LibreNMS\Alert\Transport; + +use LibreNMS\Alert\Transport; + +class Signal extends Transport +{ + public function deliverAlert($obj, $opts) + { + $signalOpts = [ + 'path' => escapeshellarg($this->config['path']), + 'recipient-type' => ($this->config['recipient-type'] == 'group') ? ' -g ' : ' ', + 'recipient' => escapeshellarg($this->config['recipient']), + ]; + + return $this->contactSignal($obj, $signalOpts); + } + + public function contactSignal($obj, $opts) + { + exec($opts['path'] + . ' --dbus-system send' + . $opts['recipient-type'] + . $opts['recipient'] + . ' -m ' . escapeshellarg($obj['title'])); + + return true; + } + + public static function configTemplate() + { + return [ + 'validation' => [], + 'config' => [ + [ + 'title' => 'Path', + 'name' => 'path', + 'descr' => 'Local Path to CLI', + 'type' => 'text', + ], + [ + 'title' => 'Recipient type', + 'name' => 'recipient-type', + 'descr' => 'Phonenumber ', + 'type' => 'select', + 'options' => [ + 'Mobile number' => 'single', + 'Group' => 'group', + ], + ], + [ + 'title' => 'Recipient', + 'name' => 'recipient', + 'descr' => 'Message recipient', + 'type' => 'text', + ], + ], + ]; + } +} diff --git a/doc/Alerting/Transports.md b/doc/Alerting/Transports.md index 121441e520..37749eae3c 100644 --- a/doc/Alerting/Transports.md +++ b/doc/Alerting/Transports.md @@ -842,6 +842,20 @@ connect to servicedesk | Kayako API Secret | Y2NhZDIxNDMtNjVkMi0wYzE0LWExYTUtZGUwMjJiZDI0ZWEzMmRhOGNiYWMtNTU2YS0yODk0LTA1MTEtN2VhN2YzYzgzZjk5 | | Kayako Department | 1 | +## Signal CLI + +Use the Signal Mesenger for Alerts. Run the Signal CLI with the D-Bus option. + +[GitHub Project](https://github.com/AsamK/signal-cli) + +**Example:** + +| Config | Example | +| ------ | ------- | +| Path | /opt/signal-cli/bin/signal-cli | +| Recipient type | Group | +| Recipient | dfgjsdkgljior4345== | + ## SMSFeedback SMSFeedback is a SAAS service, which can be used to deliver Alerts via API, using API url, Username & Password.