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

added yaml configuration

This commit is contained in:
Massimo Candela
2019-06-15 23:06:34 +02:00
parent 37faf5f24b
commit 557e59e850
8 changed files with 826 additions and 31 deletions

View File

@@ -1,17 +1,13 @@
import MonitorHijack from "./monitors/monitorHijack";
import yaml from "js-yaml";
import fs from "fs";
module.exports = {
bufferSize: 10,
wsParams: {
moreSpecific: false,
type: "UPDATE",
// host: "rrc21",
socketOptions: {
includeRaw: false
}
},
const configFile = yaml.safeLoad(fs.readFileSync('./config.yml', 'utf8'));
const config = {
monitors: [
MonitorHijack
]
};
};
module.exports = Object.assign(config, configFile);

44
config.yml Normal file
View File

@@ -0,0 +1,44 @@
# Please, rename this file to config.yml
testMode: true
bufferSize: 10,
wsParams:
moreSpecific: true
type: "UPDATE"
host: "rrc21"
socketOptions:
includeRaw: false
# The streaming services used to have real-time data
# This is an array (use new lines and dashes!)
websocketDataService: wss://ris-live.ripe.net/v1/ws/
senderNotificationsEmail: me@test.net
notifiedEmails:
- email1@test.net
- email2@test.net
# The file containing the monitored prefixes. Please see monitored_prefixes_test.yml for an example
# This is an array (use new lines and dashes!)
monitoredPrefixesFiles:
- monitored_prefixes.base.yml
# After how many announcements from different peers we trigger an alter?
numberPeersBeforeHijackAlert: 0
# After how many withdrawals from different peers we trigger an alter?
numberPeersBeforeLowVisibilityAlert: 0
# 10 seconds is the default
repeatAlertAfterSeconds: 1
# delete or 0 for never
repeatStatusHeartbeatAfterSeconds: 400
# stop sending the same alert after x seconds. Default 600
resetAfterSeconds: 4

View File

@@ -6,10 +6,9 @@ export default class Consumer {
this.monitors = config.monitors.map(monitor => new monitor());
};
dispatch = (message) => {
console.log("ere");
dispatch = (data) => {
try {
message = JSON.parse(message);
const message = JSON.parse(data);
switch (message.type) {
case "ris_message": this.handleUpdate(message)
}
@@ -18,10 +17,48 @@ export default class Consumer {
}
};
handleUpdate = (message) => {
handleUpdate = (data) => {
const messages = this.transform(data);
for (let monitor of this.monitors){
monitor.monitor(message);
for (const message of messages){
monitor.monitor(message);
}
}
};
transform = (message) => {
message = message.data;
const components = [];
const announcements = message["announcements"] || [];
const withdrawals = message["withdrawals"] || [];
const peer = message["peer"];
const path = message["path"];
for (let announcement of announcements){
const nextHop = announcement["next_hop"];
const prefixes = announcement["prefixes"] || [];
for (let prefix of prefixes){
components.push({
type: "announcement",
prefix,
peer,
path,
nextHop
})
}
}
for (let prefix of withdrawals){
components.push({
type: "withdrawal",
prefix,
peer
})
}
return components;
}
}

View File

@@ -2,33 +2,46 @@
import config from "./config";
import cluster from "cluster";
import WebSocket from "ws";
import sleep from "sleep";
import Consumer from "./consumer";
if (cluster.isMaster) {
let bufferSize = config.bufferSize;
const worker = cluster.fork();
const ws = new WebSocket("wss://ris-live.ripe.net/v1/ws/");
ws.on('message', (message) => {
worker.send(message);
});
if (config.testMode){
const message = JSON.stringify({
data: {
withdrawals: ["123.0.0.1/23"],
peer: "124.0.0.2"
},
type: "ris_message"
});
ws.on('open', () => {
ws.send(JSON.stringify({
type: "ris_subscribe",
data: config.wsParams
}));
});
while (true){
worker.send(message);
sleep.sleep(1);
}
} else {
ws.on('close', function close() {
console.log('Disconnected');
});
const ws = new WebSocket("wss://ris-live.ripe.net/v1/ws/");
ws.on('message', (message) => {
worker.send(message);
});
ws.on('open', () => {
ws.send(JSON.stringify({
type: "ris_subscribe",
data: config.wsParams
}));
});
ws.on('close', function close() {
console.log('Disconnected');
});
}
} else {
new Consumer()

View File

@@ -11,4 +11,6 @@ export default class MonitorHijack extends Monitor {
};
}

View File

@@ -22,6 +22,7 @@
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-env": "^1.7.0",
"event-stream": "^4.0.1",
"js-yaml": "^3.13.1",
"sleep": "^6.1.0",
"websocket-stream": "^5.5.0",
"ws": "^7.0.0",

677
prefixes.yml Normal file
View File

@@ -0,0 +1,677 @@
27.114.0.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
58.88.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
60.32.0.0/12:
description: OCN
asn: 4713
ignore_morespecifics: False
61.112.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
61.113.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
61.118.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
61.119.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
61.120.144.0/20:
description: subas 64600
asn: 2914
61.126.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
61.199.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
61.200.80.0/20:
description: subas 64600
asn: 2914
61.207.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
61.208.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
61.213.144.0/20:
description: subas 64600
asn: 2914
61.213.160.0/19:
description: subas 64600
asn: 2914
61.214.0.0/16:
description: OCN
asn: 4713
80.74.8.0/22:
description: subas 65316
asn: 2914
83.217.224.0/23:
description: subas 65316
asn: 2914
91.212.152.0/24:
description: subas 65310
asn: 2914
114.144.0.0/12:
description: OCN
asn: 4713
ignore_morespecifics: False
114.160.0.0/11:
description: OCN
asn: 4713
ignore_morespecifics: False
117.103.176.0/20:
description: subas 64600
asn: 2914
117.104.64.0/18:
description: subas 64600
asn: 2914
117.104.128.0/19:
description: subas 64600
asn: 2914
118.0.0.0/12:
description: OCN
asn: 4713
ignore_morespecifics: False
118.16.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
120.29.144.0/21:
description: subas 64600
asn: 2914
120.88.48.0/21:
description: subas 64600
asn: 2914
121.112.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
122.1.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
122.16.0.0/12:
description: OCN
asn: 4713
ignore_morespecifics: False
123.216.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
123.224.0.0/14:
description: OCN
asn: 4713
ignore_morespecifics: False
124.40.0.0/18:
description: subas 64600
asn: 2914
ignore_morespecifics: False
124.40.32.0/19:
description: iboss
asn: 137922
ignore_morespecifics: True
124.40.56.0/24:
description: capitalonline
asn: 63199
124.40.57.0/24:
description: capitalonline
asn: 63199
124.84.0.0/14:
description: OCN
asn: 4713
ignore_morespecifics: False
124.96.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
125.170.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
125.172.0.0/14:
description: OCN
asn: 4713
ignore_morespecifics: False
125.200.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
130.94.19.0/24:
description: subas 65061
asn: 2914
153.128.0.0/11:
description: OCN
asn: 4713
153.160.0.0/12:
description: OCN
asn: 4713
153.176.0.0/12:
description: OCN
asn: 4713
ignore_morespecifics: False
153.192.0.0/11:
description: OCN
asn: 4713
ignore_morespecifics: False
153.224.0.0/12:
description: OCN
asn: 4713
ignore_morespecifics: False
153.240.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
153.248.0.0/14:
description: OCN
asn: 4713
ignore_morespecifics: False
153.252.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
153.254.0.0/15:
description: subas 64600
asn: 2914
180.0.0.0/10:
description: OCN
asn: 4713
ignore_morespecifics: False
180.12.169.0/24:
description: OCN
asn: 4713
ignore_morespecifics: False
180.12.168.0/24:
description: OCN
asn: 4713
ignore_morespecifics: False
180.12.170.0/24:
description: OCN
asn: 4713
ignore_morespecifics: False
180.12.171.0/24:
description: OCN
asn: 4713
ignore_morespecifics: False
180.12.172.0/24:
description: OCN
asn: 4713
ignore_morespecifics: False
180.12.173.0/24:
description: OCN
asn: 4713
ignore_morespecifics: False
180.210.232.0/24:
description: subas 64600
asn: 2914
198.252.194.0/23:
description: subas 65017
asn: 2914
199.164.210.0/24:
description: subas 65052
asn: 2914
202.47.16.0/20:
description: subas 64600
asn: 2914
202.234.192.0/18:
description: OCN
asn: 4713
ignore_morespecifics: False
203.105.64.0/19:
description: subas 64600
asn: 2914
203.139.160.0/19:
description: OCN
asn: 4713
ignore_morespecifics: False
203.140.96.0/20:
description: OCN
asn: 4713
ignore_morespecifics: False
203.140.112.0/20:
description: OCN
asn: 4713
ignore_morespecifics: False
203.205.112.0/20:
description: subas 64600
asn: 2914
206.197.81.0/24:
description: subas 65061
asn: 2914
207.158.192.0/18:
description: formerly subas 65043
asn: 2914
207.201.128.0/18:
description: formerly subas 65043
asn: 2914
208.55.0.0/16:
description: formerly subas 65043
asn: 2914
209.41.0.0/18:
description: subas 65062
asn: 2914
209.130.0.0/17:
description: formerly subas 65043
asn: 2914
209.207.128.0/17:
description: subas 65061
asn: 2914
209.238.0.0/16:
description: subas 65062
asn: 2914
210.132.0.0/18:
description: OCN
asn: 4713
ignore_morespecifics: False
210.145.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.154.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.160.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.161.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.162.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.163.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.164.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.170.64.0/18:
description: OCN
asn: 4713
ignore_morespecifics: False
210.175.160.0/19:
description: subas 64600
asn: 2914
210.190.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.225.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.226.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
210.232.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.248.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
210.254.128.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
211.0.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
211.6.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
211.11.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
211.16.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
211.122.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
211.129.0.0/16:
description: OCN
asn: 4713
211.130.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
211.130.96.0/19:
description: subas 64600
asn: 2914
216.167.0.0/17:
description: subas 65061
asn: 2914
218.43.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
218.44.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
218.47.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
218.224.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
218.230.128.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
219.96.128.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
219.114.0.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
219.160.0.0/14:
description: OCN
asn: 4713
ignore_morespecifics: False
219.164.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
219.166.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
220.96.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
220.98.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
220.99.0.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
220.99.128.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
220.104.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
220.106.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
220.108.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
220.110.0.0/16:
description: OCN
asn: 4713
ignore_morespecifics: False
220.111.0.0/19:
description: OCN
asn: 4713
ignore_morespecifics: False
220.111.32.0/20:
description: OCN
asn: 4713
ignore_morespecifics: False
220.111.48.0/20:
description: OCN
asn: 4713
ignore_morespecifics: False
220.111.64.0/18:
description: OCN
asn: 4713
ignore_morespecifics: False
220.111.128.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
220.220.0.0/15:
description: OCN
asn: 4713
ignore_morespecifics: False
221.113.128.0/17:
description: OCN
asn: 4713
ignore_morespecifics: False
221.184.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
222.144.0.0/13:
description: OCN
asn: 4713
ignore_morespecifics: False
223.216.0.0/14:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
114.163.192.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
124.85.96.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
180.0.248.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
180.13.216.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
180.22.248.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
180.3.96.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
180.39.216.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
180.50.120.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
180.57.120.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
180.57.128.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
219.162.32.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
220.96.8.0/21:
description: OCN prefix
asn: 4713
ignore_morespecifics: False
124.40.52.128/26:
description: Solid Trading / Crossivity
asn: 50601
ignore_morespecifics: False

View File

@@ -73,6 +73,13 @@ are-we-there-yet@~1.1.2:
delegates "^1.0.0"
readable-stream "^2.0.6"
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
arr-diff@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
@@ -1089,6 +1096,11 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
@@ -1713,6 +1725,14 @@ js-tokens@^3.0.2:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
js-yaml@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
jsesc@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
@@ -2520,6 +2540,11 @@ split@^1.0.1:
dependencies:
through "2"
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
static-extend@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"