1
0
mirror of https://github.com/nttgin/BGPalerter.git synced 2024-05-19 06:50:08 +00:00

introduced support for groups in Slack reporting - not back compatible

This commit is contained in:
Massimo Candela
2019-09-17 19:19:23 +02:00
parent 0ced98a41e
commit 06585f5e1c
6 changed files with 43 additions and 20 deletions

View File

@@ -66,7 +66,8 @@ reports:
# - newprefix
# - visibility
# params:
# hookUrl: _YOUR_SLACK_WEBHOOK_URL_
# hooks:
# default: _YOUR_SLACK_WEBHOOK_URL_
checkStaleNotificationsSeconds: 60

View File

@@ -76,7 +76,7 @@ export default class InputYml extends Input {
return Object.assign({
prefix: i,
user: 'default'
group: 'default'
}, monitoredPrefixesFile[i])
})
.filter(i => i !== null);

View File

@@ -1,6 +1,6 @@
{
"name": "bgpalerter",
"version": "19.9.15.3",
"version": "19.9.17.3",
"description": "",
"main": "index.js",
"bin": "index.js",

View File

@@ -70,8 +70,8 @@ export default class ReportEmail extends Report {
getEmails = (content) => {
const users = content.data
.map(item => {
if (item.matchedRule && item.matchedRule.user){
return item.matchedRule.user;
if (item.matchedRule && item.matchedRule.group){
return item.matchedRule.group;
} else {
return false;
}
@@ -86,7 +86,7 @@ export default class ReportEmail extends Report {
} catch (error) {
this.logger.log({
level: 'error',
message: 'Not all users have an associated email address'
message: 'Not all groups have an associated email address'
});
}

View File

@@ -37,12 +37,23 @@ export default class ReportSlack extends Report {
constructor(channels, params, env) {
super(channels, params, env);
this.enabled = true;
if (!this.params.hooks || !Object.keys(this.params.hooks).length){
this.logger.log({
level: 'error',
message: "Slack reporting is not enabled: no group is defined"
});
this.enabled = false;
}
report = (message, content) => {
}
_sendSlackMessage = (url, content) => {
console.log("sending to", url);
axios({
url: this.params.hookUrl,
url: url,
method: "POST",
resposnseType: "json",
data: {
@@ -55,7 +66,18 @@ export default class ReportSlack extends Report {
message: error
});
})
};
report = (message, content) => {
if (this.enabled){
const groups = content.data.map(i => i.matchedRule.group);
for (let group of groups) {
if (this.params.hooks[group]) {
this._sendSlackMessage(this.params.hooks[group], content);
}
}
}
}
}

View File

@@ -137,42 +137,42 @@ describe("Tests", function() {
"description": "description 1",
"ignoreMorespecifics": false,
"prefix": "165.254.225.0/24",
"user": "default"
"group": "default"
},
{
"asn": [15562],
"description": "description 2",
"ignoreMorespecifics": false,
"prefix": "165.254.255.0/24",
"user": "default",
"group": "default",
},
{
"asn": [15562],
"description": "description 3",
"ignoreMorespecifics": true,
"prefix": "192.147.168.0/24",
"user": "default",
"group": "default",
},
{
"asn": [204092, 45],
"description": "alarig fix test",
"ignoreMorespecifics": false,
"prefix": "2a00:5884::/32",
"user": "default"
"group": "default"
},
{
"asn": [208585],
"description": "alarig fix test 2",
"ignoreMorespecifics": false,
"prefix": "2a0e:f40::/29",
"user": "default"
"group": "default"
},
{
"asn": [1234],
"description": "ignore sub test",
"ignoreMorespecifics": true,
"prefix": "2a0e:f40::/30",
"user": "default"
"group": "default"
}
]
@@ -299,7 +299,7 @@ describe("Tests", function() {
extra: {},
matchedRule: {
prefix: "165.254.255.0/24",
user: "default",
group: "default",
description: "description 2",
asn: [15562],
ignoreMorespecifics: false
@@ -325,7 +325,7 @@ describe("Tests", function() {
extra: {},
matchedRule:{
prefix:"2a00:5884::/32",
user:"default",
group:"default",
description:"alarig fix test",
asn:[204092, 45],
ignoreMorespecifics:false
@@ -351,7 +351,7 @@ describe("Tests", function() {
extra: {},
matchedRule:{
prefix: "2a00:5884::/32",
user: "default",
group: "default",
description: "alarig fix test",
asn:[204092, 45],
ignoreMorespecifics: false
@@ -415,7 +415,7 @@ describe("Tests", function() {
extra: {},
matchedRule: {
prefix: '165.254.255.0/24',
user: 'default',
group: 'default',
description: 'description 2',
asn: [15562],
ignoreMorespecifics: false
@@ -441,7 +441,7 @@ describe("Tests", function() {
extra: {},
matchedRule: {
prefix: '2a00:5884::/32',
user: 'default',
group: 'default',
description: 'alarig fix test',
asn: [ 204092, 45],
ignoreMorespecifics: false