Skip to content

Commit

Permalink
refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
massimocandela committed Jan 6, 2025
1 parent c0d0ee8 commit 4680898
Show file tree
Hide file tree
Showing 7 changed files with 122 additions and 112 deletions.
52 changes: 26 additions & 26 deletions src/connectors/connectorRIS.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@

import WebSocket from "../utils/WebSocket";
import Connector from "./connector";
import { AS, Path } from "../model";
import {AS, Path} from "../model";
import brembo from "brembo";
import ipUtils from "ip-sub";
import batchPromises from 'batch-promises';
import batchPromises from "batch-promises";

const beacons = {
v4: ["84.205.64.0/24", "84.205.65.0/24", "84.205.67.0/24", "84.205.68.0/24", "84.205.69.0/24",
Expand Down Expand Up @@ -111,11 +111,11 @@ export default class ConnectorRIS extends Connector {

_appendListeners = (resolve, reject) => {
if (this._shouldCanaryMonitoringStart()) {
this.ws.on('message', this._messageToJsonCanary);
this.ws.on("message", this._messageToJsonCanary);
} else {
this.ws.on('message', this._messageToJson);
this.ws.on("message", this._messageToJson);
}
this.ws.on('close', (error) => {
this.ws.on("close", (error) => {

if (this.connected) {
this._disconnect("RIPE RIS disconnected (error: " + error + "). Read more at https://github.com/nttgin/BGPalerter/blob/main/docs/ris-disconnections.md");
Expand All @@ -124,10 +124,10 @@ export default class ConnectorRIS extends Connector {
reject();
}
});
this.ws.on('error', error => {
this.ws.on("error", error => {
this._error(`${this.name} ${error.message} (instance:${this.instanceId} connection:${error.connection})`);
});
this.ws.on('open', data => this._openConnect(resolve, data));
this.ws.on("open", data => this._openConnect(resolve, data));
};

connect = () =>
Expand All @@ -140,10 +140,10 @@ export default class ConnectorRIS extends Connector {
perMessageDeflate: this.params.perMessageDeflate
};

if (this.params.authorizationHeader){
if (this.params.authorizationHeader) {
wsOptions.headers = {
Authorization: this.params.authorizationHeader
}
};
}

if (!this.params.noProxy && this.agent) {
Expand All @@ -154,7 +154,7 @@ export default class ConnectorRIS extends Connector {
this.ws.connect();
this._appendListeners(resolve, reject);

} catch(error) {
} catch (error) {
this._error(error);
reject(error);
}
Expand All @@ -176,8 +176,8 @@ export default class ConnectorRIS extends Connector {
_optimizedPathMatch = (regex) => {

if (regex) {
regex = (regex.slice(0,2) === ".*") ? regex.slice(2) : regex;
regex = (regex.slice(-2) === ".*") ? regex.slice(0,-2) : regex;
regex = (regex.slice(0, 2) === ".*") ? regex.slice(2) : regex;
regex = (regex.slice(-2) === ".*") ? regex.slice(0, -2) : regex;
const regexTests = [
"^[\\^]*\\d+[\\$]*$",
"^[\\^]*[\\d+,]+\\d+[\\$]*$",
Expand All @@ -201,13 +201,13 @@ export default class ConnectorRIS extends Connector {

if (monitoredPrefixes.length > risLimitPrefixes) {
this.logger.log({
level: 'error',
level: "error",
message: "Prefix list of abnormal length, truncated to 10000 to prevent RIS overload"
});
monitoredPrefixes = monitoredPrefixes.slice(0, risLimitPrefixes);
}

if (monitoredPrefixes.filter(i => (ipUtils.isEqualPrefix(i.prefix, '0:0:0:0:0:0:0:0/0') || ipUtils.isEqualPrefix(i.prefix,'0.0.0.0/0'))).length === 2) {
if (monitoredPrefixes.filter(i => (ipUtils.isEqualPrefix(i.prefix, "0:0:0:0:0:0:0:0/0") || ipUtils.isEqualPrefix(i.prefix, "0.0.0.0/0"))).length === 2) {

delete params.prefix;

Expand Down Expand Up @@ -257,7 +257,7 @@ export default class ConnectorRIS extends Connector {

if (monitoredASns.length > risLimitAses) {
this.logger.log({
level: 'error',
level: "error",
message: "AS list of abnormal length, truncated to 10 to prevent RIS overload"
});
monitoredASns = monitoredASns.slice(0, risLimitAses);
Expand Down Expand Up @@ -311,13 +311,13 @@ export default class ConnectorRIS extends Connector {
.then(() => {
this._checkCanary();
this.logger.log({
level: 'info',
level: "info",
message: "Subscribed to beacons"
});
})
.catch(() => {
this.logger.log({
level: 'error',
level: "error",
message: "Failed to subscribe to beacons"
});
});
Expand All @@ -328,7 +328,7 @@ export default class ConnectorRIS extends Connector {
clearTimeout(this._timerCheckCanary);
if (!this.connected) {
this.logger.log({
level: 'info',
level: "info",
message: "RIS connected again, the streaming session is working properly"
});
}
Expand All @@ -337,7 +337,7 @@ export default class ConnectorRIS extends Connector {
if (this.connected) {
this.connected = false;
this.logger.log({
level: 'error',
level: "error",
message: "RIS has been silent for too long, probably there is something wrong"
});
}
Expand All @@ -352,14 +352,14 @@ export default class ConnectorRIS extends Connector {
.then(() => this.subscribe(input))
.then(() => {
this.logger.log({
level: 'info',
level: "info",
message: "Prefix rules reloaded"
});
})
.catch(error => {
if (error) {
this.logger.log({
level: 'error',
level: "error",
message: error
});
}
Expand Down Expand Up @@ -387,7 +387,7 @@ export default class ConnectorRIS extends Connector {
: this._subscribeToAll(input))
.then(() => {
this.logger.log({
level: 'info',
level: "info",
message: "Subscribed to monitored resources"
});
if (this._shouldCanaryMonitoringStart()) {
Expand All @@ -405,10 +405,10 @@ export default class ConnectorRIS extends Connector {

return false;
});
}
};

static transform = (message) => {
if (message.type === 'ris_message') {
if (message.type === "ris_message") {
try {
message = message.data;
const components = [];
Expand Down Expand Up @@ -470,8 +470,8 @@ export default class ConnectorRIS extends Connector {
} catch (error) {
throw new Error(`Error during transform (${this.name}): ` + error.message);
}
} else if (message.type === 'ris_error') {
} else if (message.type === "ris_error") {
throw new Error("Error from RIS: " + message.data.message);
}
}
};
};
56 changes: 28 additions & 28 deletions src/inputs/input.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import LongestPrefixMatch from "longest-prefix-match";

export default class Input {

constructor(env){
constructor(env) {
this.prefixes = [];
this.asns = [];
this.config = env.config;
Expand All @@ -53,7 +53,7 @@ export default class Input {
.then(() => this._change())
.catch(error => {
this.logger.log({
level: 'error',
level: "error",
message: error
});
console.log(error);
Expand Down Expand Up @@ -127,7 +127,7 @@ export default class Input {
}
} catch (error) {
this.logger.log({
level: 'error',
level: "error",
message: error.message
});
}
Expand All @@ -136,48 +136,48 @@ export default class Input {
};

getMonitoredMoreSpecifics = () => {
throw new Error('The method getMonitoredMoreSpecifics MUST be implemented');
throw new Error("The method getMonitoredMoreSpecifics MUST be implemented");
};

getMonitoredPrefixes = () => {
throw new Error('The method getMonitoredPrefixes MUST be implemented');
throw new Error("The method getMonitoredPrefixes MUST be implemented");
};


_filterIgnoreMorespecifics = (i, prefix, includeIgnoredMorespecifics) => {
return includeIgnoredMorespecifics
|| !i.ignoreMorespecifics
|| ipUtils._isEqualPrefix(i.prefix, prefix); // last piece says "or it is not a more specific"
}
};

getMoreSpecificMatches = (prefix, includeIgnoredMorespecifics=false) => {
getMoreSpecificMatches = (prefix, includeIgnoredMorespecifics = false) => {
return this.index.getMatch(prefix, false)
.filter(i => this._filterIgnoreMorespecifics(i, prefix, includeIgnoredMorespecifics))
.map(i => ({...i}));
}
};

getMonitoredASns = () => {
throw new Error('The method getMonitoredASns MUST be implemented');
throw new Error("The method getMonitoredASns MUST be implemented");
};

loadPrefixes = () => {
throw new Error('The method loadPrefixes MUST be implemented');
throw new Error("The method loadPrefixes MUST be implemented");
};

save = (data) => {
throw new Error('The method save MUST be implemented');
throw new Error("The method save MUST be implemented");
};

retrieve = () => {
throw new Error('The method retrieve MUST be implemented');
throw new Error("The method retrieve MUST be implemented");
};

generate = () => {
return inquirer
.prompt([
{
type: 'confirm',
name: 'continue',
type: "confirm",
name: "continue",
message: "The file prefixes.yml cannot be loaded. Do you want to auto-configure BGPalerter?",
default: true
}
Expand All @@ -187,32 +187,32 @@ export default class Input {
return inquirer
.prompt([
{
type: 'input',
name: 'asns',
type: "input",
name: "asns",
message: "Which Autonomous System(s) you want to monitor? (comma-separated, e.g., 2914,3333)",
default: null,
validate: function(value) {
validate: function (value) {
const asns = value.split(",").filter(i => i !== "" && !isNaN(i));
return asns.length > 0;
}
},

{
type: 'confirm',
name: 'm',
type: "confirm",
name: "m",
message: "Do you want to be notified when your AS is announcing a new prefix?",
default: true
},

{
type: 'confirm',
name: 'upstreams',
type: "confirm",
name: "upstreams",
message: "Do you want to be notified when a new upstream AS appears in a BGP path?",
default: true
},
{
type: 'confirm',
name: 'downstreams',
type: "confirm",
name: "downstreams",
message: "Do you want to be notified when a new downstream AS appears in a BGP path?",
default: true
}
Expand Down Expand Up @@ -253,7 +253,7 @@ export default class Input {
.catch(error => {
console.log(error);
this.logger.log({
level: 'error',
level: "error",
message: error
});
process.exit();
Expand All @@ -262,7 +262,7 @@ export default class Input {

_reGeneratePrefixList = () => {
this.logger.log({
level: 'info',
level: "info",
message: "Updating prefix list"
});

Expand Down Expand Up @@ -322,7 +322,7 @@ export default class Input {

if (newPrefixesNotMergeable.length) {
this.logger.log({
level: 'info',
level: "info",
message: `The rules about ${newPrefixesNotMergeable.join(", ")} cannot be automatically added to the prefix list since their origin cannot be validated. They are not RPKI valid and they are not announced by a monitored AS. Add the prefixes manually if you want to start monitoring them.`
});
}
Expand All @@ -333,13 +333,13 @@ export default class Input {
.then(this.save)
.then(() => {
this.logger.log({
level: 'info',
level: "info",
message: `Prefix list updated.`
});
})
.catch(error => {
this.logger.log({
level: 'error',
level: "error",
message: error
});
});
Expand Down
Loading

0 comments on commit 4680898

Please sign in to comment.