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 # - newprefix
# - visibility # - visibility
# params: # params:
# hookUrl: _YOUR_SLACK_WEBHOOK_URL_ # hooks:
# default: _YOUR_SLACK_WEBHOOK_URL_
checkStaleNotificationsSeconds: 60 checkStaleNotificationsSeconds: 60

View File

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

View File

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

View File

@@ -70,8 +70,8 @@ export default class ReportEmail extends Report {
getEmails = (content) => { getEmails = (content) => {
const users = content.data const users = content.data
.map(item => { .map(item => {
if (item.matchedRule && item.matchedRule.user){ if (item.matchedRule && item.matchedRule.group){
return item.matchedRule.user; return item.matchedRule.group;
} else { } else {
return false; return false;
} }
@@ -86,7 +86,7 @@ export default class ReportEmail extends Report {
} catch (error) { } catch (error) {
this.logger.log({ this.logger.log({
level: 'error', 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) { constructor(channels, params, env) {
super(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({ axios({
url: this.params.hookUrl, url: url,
method: "POST", method: "POST",
resposnseType: "json", resposnseType: "json",
data: { data: {
@@ -55,7 +66,18 @@ export default class ReportSlack extends Report {
message: error 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", "description": "description 1",
"ignoreMorespecifics": false, "ignoreMorespecifics": false,
"prefix": "165.254.225.0/24", "prefix": "165.254.225.0/24",
"user": "default" "group": "default"
}, },
{ {
"asn": [15562], "asn": [15562],
"description": "description 2", "description": "description 2",
"ignoreMorespecifics": false, "ignoreMorespecifics": false,
"prefix": "165.254.255.0/24", "prefix": "165.254.255.0/24",
"user": "default", "group": "default",
}, },
{ {
"asn": [15562], "asn": [15562],
"description": "description 3", "description": "description 3",
"ignoreMorespecifics": true, "ignoreMorespecifics": true,
"prefix": "192.147.168.0/24", "prefix": "192.147.168.0/24",
"user": "default", "group": "default",
}, },
{ {
"asn": [204092, 45], "asn": [204092, 45],
"description": "alarig fix test", "description": "alarig fix test",
"ignoreMorespecifics": false, "ignoreMorespecifics": false,
"prefix": "2a00:5884::/32", "prefix": "2a00:5884::/32",
"user": "default" "group": "default"
}, },
{ {
"asn": [208585], "asn": [208585],
"description": "alarig fix test 2", "description": "alarig fix test 2",
"ignoreMorespecifics": false, "ignoreMorespecifics": false,
"prefix": "2a0e:f40::/29", "prefix": "2a0e:f40::/29",
"user": "default" "group": "default"
}, },
{ {
"asn": [1234], "asn": [1234],
"description": "ignore sub test", "description": "ignore sub test",
"ignoreMorespecifics": true, "ignoreMorespecifics": true,
"prefix": "2a0e:f40::/30", "prefix": "2a0e:f40::/30",
"user": "default" "group": "default"
} }
] ]
@@ -299,7 +299,7 @@ describe("Tests", function() {
extra: {}, extra: {},
matchedRule: { matchedRule: {
prefix: "165.254.255.0/24", prefix: "165.254.255.0/24",
user: "default", group: "default",
description: "description 2", description: "description 2",
asn: [15562], asn: [15562],
ignoreMorespecifics: false ignoreMorespecifics: false
@@ -325,7 +325,7 @@ describe("Tests", function() {
extra: {}, extra: {},
matchedRule:{ matchedRule:{
prefix:"2a00:5884::/32", prefix:"2a00:5884::/32",
user:"default", group:"default",
description:"alarig fix test", description:"alarig fix test",
asn:[204092, 45], asn:[204092, 45],
ignoreMorespecifics:false ignoreMorespecifics:false
@@ -351,7 +351,7 @@ describe("Tests", function() {
extra: {}, extra: {},
matchedRule:{ matchedRule:{
prefix: "2a00:5884::/32", prefix: "2a00:5884::/32",
user: "default", group: "default",
description: "alarig fix test", description: "alarig fix test",
asn:[204092, 45], asn:[204092, 45],
ignoreMorespecifics: false ignoreMorespecifics: false
@@ -415,7 +415,7 @@ describe("Tests", function() {
extra: {}, extra: {},
matchedRule: { matchedRule: {
prefix: '165.254.255.0/24', prefix: '165.254.255.0/24',
user: 'default', group: 'default',
description: 'description 2', description: 'description 2',
asn: [15562], asn: [15562],
ignoreMorespecifics: false ignoreMorespecifics: false
@@ -441,7 +441,7 @@ describe("Tests", function() {
extra: {}, extra: {},
matchedRule: { matchedRule: {
prefix: '2a00:5884::/32', prefix: '2a00:5884::/32',
user: 'default', group: 'default',
description: 'alarig fix test', description: 'alarig fix test',
asn: [ 204092, 45], asn: [ 204092, 45],
ignoreMorespecifics: false ignoreMorespecifics: false