diff --git a/doc/Extensions/IRC-Bot.md b/doc/Extensions/IRC-Bot.md index c06353f67b..7410869f19 100644 --- a/doc/Extensions/IRC-Bot.md +++ b/doc/Extensions/IRC-Bot.md @@ -23,6 +23,7 @@ Option | Default-Value | Notes --- | --- | --- `$config['irc_alert']` | `false` | Optional; Enables Alerting-Socket. `EXPERIMENTAL` `$config['irc_alert_chan']` | `false` | Optional; Multiple channels can be defined as Array or delimited with `,`. `EXPERIMENTAL` +`$config['irc_alert_utf8']` | `false` | Optional; Enables use of strikethrough in alerts via UTF-8 encoded characters. Might cause trouble for some clients. `$config['irc_authtime']` | `3` | Optional; Defines how long in Hours an auth-session is valid. `$config['irc_chan']` | `##librenms` | Optional; Multiple channels can be defined as Array or delimited with `,` `$config['irc_debug']` | `false` | Optional; Enables debug output (Wall of text) diff --git a/includes/defaults.inc.php b/includes/defaults.inc.php index e421950151..a47a32d87e 100644 --- a/includes/defaults.inc.php +++ b/includes/defaults.inc.php @@ -501,16 +501,17 @@ $config['device_traffic_descr'][] = '/null/'; $config['device_traffic_descr'][] = '/dummy/'; // IRC Bot configuration -$config['irc_host'] = ''; -$config['irc_port'] = ''; -$config['irc_maxretry'] = 3; -$config['irc_nick'] = $config['project_name']; -$config['irc_chan'][] = '##'.$config['project_id']; -$config['irc_pass'] = ''; -$config['irc_external'] = ''; -$config['irc_authtime'] = 3; -$config['irc_debug'] = false; -$config['irc_alert'] = false; +$config['irc_host'] = ''; +$config['irc_port'] = ''; +$config['irc_maxretry'] = 3; +$config['irc_nick'] = $config['project_name']; +$config['irc_chan'][] = '##'.$config['project_id']; +$config['irc_pass'] = ''; +$config['irc_external'] = ''; +$config['irc_authtime'] = 3; +$config['irc_debug'] = false; +$config['irc_alert'] = false; +$config['irc_alert_utf8'] = false; // Authentication $config['allow_unauth_graphs'] = 0; diff --git a/irc.php b/irc.php index 96cc1a572a..38953b8a9f 100755 --- a/irc.php +++ b/irc.php @@ -227,9 +227,20 @@ class ircbot { return false; } + switch ($alert['state']): + case 3: $severity_extended = '+'; break; + case 4: $severity_extended = '-'; break; + default: $severity_extended = ''; + endswitch; + + $severity = str_replace(array('warning', 'critical'), array(chr(3).'8Warning', chr(3).'4Critical'), $alert['severity']).$severity_extended.chr(3).' '; + if ($alert['state'] == 0 and $this->config['irc_alert_utf8']) { + $severity = str_replace(array('Warning', 'Critical'), array('W̶a̶r̶n̶i̶n̶g̶', 'C̶r̶i̶t̶i̶c̶a̶l̶'), $severity); + } + if ($this->config['irc_alert_chan']) { foreach ($this->config['irc_alert_chan'] as $chan) { - $this->irc_raw('PRIVMSG '.$chan.' :'.trim($alert['title']).' - Rule: '.trim($alert['name'] ? $alert['name'] : $alert['rule']).(sizeof($alert['faults']) > 0 ? ' - Faults:' : '')); + $this->irc_raw('PRIVMSG '.$chan.' :'.$severity.trim($alert['title']).' - Rule: '.trim($alert['name'] ? $alert['name'] : $alert['rule']).(sizeof($alert['faults']) > 0 ? ' - Faults:' : '')); foreach ($alert['faults'] as $k => $v) { $this->irc_raw('PRIVMSG '.$chan.' :#'.$k.' '.$v['string']); } @@ -238,7 +249,7 @@ class ircbot { else { foreach ($this->authd as $nick => $data) { if ($data['expire'] >= time()) { - $this->irc_raw('PRIVMSG '.$nick.' :'.trim($alert['title']).' - Rule: '.trim($alert['name'] ? $alert['name'] : $alert['rule']).(sizeof($alert['faults']) > 0 ? ' - Faults'.(sizeof($alert['faults']) > 3 ? ' (showing first 3 out of '.sizeof($alert['faults']).' )' : '' ).':' : '')); + $this->irc_raw('PRIVMSG '.$nick.' :'.$severity.trim($alert['title']).' - Rule: '.trim($alert['name'] ? $alert['name'] : $alert['rule']).(sizeof($alert['faults']) > 0 ? ' - Faults'.(sizeof($alert['faults']) > 3 ? ' (showing first 3 out of '.sizeof($alert['faults']).' )' : '' ).':' : '')); foreach ($alert['faults'] as $k => $v) { $this->irc_raw('PRIVMSG '.$nick.' :#'.$k.' '.$v['string']); if ($k >= 3) {