mirror of
https://github.com/cerc-io/watcher-ts
synced 2026-09-08 08:54:05 +00:00
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:
@@ -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'
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user