mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
IRC Add simple tag-parsing of colors and highlights in alerts (#12138)
* Add simple tag-parsing of colors and highlights in alerts * Fixing a few CodeClimate-issues * Fixing a missing ; * Fixing some more typography * Whitespace... * Deduplicate code * Missing ; - too much python lately... * Fix end of function name * Simplifying sendAlert a bit * Keeping up with PR#12141 * ; again... * this->sendAlert...
This commit is contained in:
@@ -274,38 +274,60 @@ class IRCBot
|
|||||||
|
|
||||||
if ($this->config['irc_alert_chan']) {
|
if ($this->config['irc_alert_chan']) {
|
||||||
foreach ($this->config['irc_alert_chan'] as $chan) {
|
foreach ($this->config['irc_alert_chan'] as $chan) {
|
||||||
$this->ircRaw('PRIVMSG ' . $chan . ' :' . $severity . trim($alert['title']));
|
$this->sendAlert($chan, $severity, $alert);
|
||||||
if (! $this->config['irc_alert_short']) { // Only send the title if set to short
|
|
||||||
foreach (explode("\n", $alert['msg']) as $line) {
|
|
||||||
// We don't need to repeat the title
|
|
||||||
$line = strip_tags($line);
|
|
||||||
if (trim($line) != trim($alert['title'])) {
|
|
||||||
$this->ircRaw('PRIVMSG ' . $chan . ' :' . $line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
foreach ($this->authd as $nick => $data) {
|
return;
|
||||||
if ($data['expire'] >= time()) {
|
}//end if
|
||||||
$this->ircRaw('PRIVMSG ' . $nick . ' :' . $severity . trim($alert['title']));
|
|
||||||
if (! $this->config['irc_alert_short']) { // Only send the title if set to short
|
foreach ($this->authd as $nick => $data) {
|
||||||
foreach (explode("\n", $alert['msg']) as $line) {
|
if ($data['expire'] >= time()) {
|
||||||
// We don't need to repeat the title
|
$this->sendAlert($nick, $severity, $alert);
|
||||||
$line = strip_tags($line);
|
|
||||||
if (trim($line) != trim($alert['title'])) {
|
|
||||||
$this->ircRaw('PRIVMSG ' . $nick . ' :' . $line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}//end if
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//end alertData()
|
//end alertData()
|
||||||
|
|
||||||
|
private function sendAlert($sendto, $severity, $alert)
|
||||||
|
{
|
||||||
|
$this->ircRaw('PRIVMSG ' . $sendto . ' :' . $severity . trim($alert['title']));
|
||||||
|
if ($this->config['irc_alert_short']) {
|
||||||
|
// Only send the title if set to short
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (explode("\n", $alert['msg']) as $line) {
|
||||||
|
$line = trim($line);
|
||||||
|
if (strlen($line) < 1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$line = $this->_html2irc($line);
|
||||||
|
$line = strip_tags($line);
|
||||||
|
|
||||||
|
// We don't need to repeat the title
|
||||||
|
if (trim($line) != trim($alert['title'])) {
|
||||||
|
$this->log("Sending alert $line");
|
||||||
|
if ($this->config['irc_floodlimit'] > 100) {
|
||||||
|
$this->floodcount += strlen($line);
|
||||||
|
} elseif ($this->config['irc_floodlimit'] > 1) {
|
||||||
|
$this->floodcount += 1;
|
||||||
|
}
|
||||||
|
if (($this->config['irc_floodlimit'] > 0) && ($this->floodcount > $this->config['irc_floodlimit'])) {
|
||||||
|
$this->log('Reached floodlimit ' . $this->floodcount);
|
||||||
|
$this->ircRaw('BOTFLOODCHECK');
|
||||||
|
sleep(2);
|
||||||
|
$this->floodcount = 0;
|
||||||
|
}
|
||||||
|
$this->ircRaw('PRIVMSG ' . $sendto . ' :' . $line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//end sendAlert()
|
||||||
|
|
||||||
private function getData()
|
private function getData()
|
||||||
{
|
{
|
||||||
if (($data = $this->read('irc')) !== false) {
|
if (($data = $this->read('irc')) !== false) {
|
||||||
@@ -995,4 +1017,43 @@ class IRCBot
|
|||||||
}
|
}
|
||||||
|
|
||||||
// end _color
|
// end _color
|
||||||
|
|
||||||
|
private function _html2irc($string)
|
||||||
|
{
|
||||||
|
$string = urldecode($string);
|
||||||
|
$string = preg_replace('#<b>#i', chr(2), $string);
|
||||||
|
$string = preg_replace('#</b>#i', chr(2), $string);
|
||||||
|
$string = preg_replace('#<i>#i', chr(22), $string);
|
||||||
|
$string = preg_replace('#</i>#i', chr(22), $string);
|
||||||
|
$string = preg_replace('#<u>#i', chr(31), $string);
|
||||||
|
$string = preg_replace('#</u>#i', chr(31), $string);
|
||||||
|
|
||||||
|
$colors = [
|
||||||
|
'white' => '00',
|
||||||
|
'black' => '01',
|
||||||
|
'blue' => '02',
|
||||||
|
'green' => '03',
|
||||||
|
'red' => '04',
|
||||||
|
'brown' => '05',
|
||||||
|
'purple' => '06',
|
||||||
|
'orange' => '07',
|
||||||
|
'yellow' => '08',
|
||||||
|
'lightgreen' => '09',
|
||||||
|
'cyan' => '10',
|
||||||
|
'lightcyan' => '11',
|
||||||
|
'lightblue' => '12',
|
||||||
|
'pink' => '13',
|
||||||
|
'grey' => '14',
|
||||||
|
'lightgrey' => '15',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($colors as $color => $code) {
|
||||||
|
$string = preg_replace("#<$color>#i", chr(3) . $code, $string);
|
||||||
|
$string = preg_replace("#</$color>#i", chr(3), $string);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $string;
|
||||||
|
}
|
||||||
|
|
||||||
|
// end _html2irc
|
||||||
}//end class
|
}//end class
|
||||||
|
Reference in New Issue
Block a user