Block connections with blacklisted multiaddrs (#373)

* Block connections from blacklisted multiaddrs in relay node

* Block connections from blacklisted multiaddrs in peer nodes

* Block dials for blacklisted multiaddrs

* Update package version
This commit is contained in:
prathamesh0
2023-05-04 16:33:29 +05:30
committed by GitHub
parent f2595d7ae4
commit 2e1652d772
19 changed files with 110 additions and 33 deletions
+22
View File
@@ -6,6 +6,8 @@
import { hideBin } from 'yargs/helpers';
import yargs from 'yargs';
import debug from 'debug';
import fs from 'fs';
import path from 'path';
import {
PeerInitConfig,
@@ -19,6 +21,7 @@ const log = debug('vulcanize:peer');
interface Arguments {
relayMultiaddr: string;
denyMultiaddrs?: string;
maxConnections: number;
dialTimeout: number;
maxRelayConnections: number;
@@ -38,7 +41,22 @@ export class PeerCmd {
peerIdObj = readPeerId(argv.peerIdFile);
}
let denyMultiaddrsList: string[] = [];
if (argv.denyMultiaddrs) {
const denyMultiaddrsFilePath = path.resolve(argv.denyMultiaddrs);
if (!fs.existsSync(denyMultiaddrsFilePath)) {
console.log(`File at given path ${denyMultiaddrsFilePath} not found, exiting`);
process.exit();
}
console.log(`Reading blacklisted multiaddr(s) from file ${denyMultiaddrsFilePath}`);
const denyMultiaddrsListObj = fs.readFileSync(denyMultiaddrsFilePath, 'utf-8');
denyMultiaddrsList = JSON.parse(denyMultiaddrsListObj);
}
const peerNodeInit: PeerInitConfig = {
denyMultiaddrs: denyMultiaddrsList,
maxConnections: argv.maxConnections,
dialTimeout: argv.dialTimeout,
maxRelayConnections: argv.maxRelayConnections,
@@ -73,6 +91,10 @@ function _getArgv (): any {
describe: 'Multiaddr of the primary relay node for this peer',
demandOption: true
},
denyMultiaddrs: {
type: 'string',
describe: 'Blacklisted multiaddr(s) list file path (json)'
},
maxConnections: {
type: 'number',
describe: 'Max number of connections for a peer'
+2
View File
@@ -173,6 +173,7 @@ export class ServerCmd {
port: relayConfig.port ?? RELAY_DEFAULT_PORT,
announceDomain: relayConfig.announce,
relayPeers: relayConfig.relayPeers ?? [],
denyMultiaddrs: relayConfig.denyMultiaddrs ?? [],
dialTimeout: relayConfig.dialTimeout ?? DIAL_TIMEOUT,
pingInterval: relayConfig.pingInterval ?? DEFAULT_PING_INTERVAL,
redialInterval: relayConfig.redialInterval ?? RELAY_REDIAL_INTERVAL,
@@ -198,6 +199,7 @@ export class ServerCmd {
const peerNodeInit: PeerInitConfig = {
pingInterval: peerConfig.pingInterval,
pingTimeout: peerConfig.pingTimeout,
denyMultiaddrs: peerConfig.denyMultiaddrs,
maxRelayConnections: peerConfig.maxRelayConnections,
relayRedialInterval: peerConfig.relayRedialInterval,
maxConnections: peerConfig.maxConnections,