feat(p2p): peers limitation to prevent connection spam

This commit is contained in:
Alexey Kasyanchuk
2018-03-09 13:23:20 +03:00
parent 936c8b1282
commit 022a6dae79
2 changed files with 15 additions and 1 deletions

View File

@ -9,7 +9,10 @@ let config = {
spiderPort: 4445, spiderPort: 4445,
udpTrackersPort: 4446, udpTrackersPort: 4446,
udpTrackersTimeout: 3 * 60 * 1000, udpTrackersTimeout: 3 * 60 * 1000,
p2p: true, p2p: true,
p2pConnections: 10,
upnp: true, upnp: true,
sitemapMaxSize: 25000, sitemapMaxSize: 25000,
@ -54,6 +57,13 @@ if(app && app.getPath("userData") && app.getPath("userData").length > 0)
const configProxy = new Proxy(config, { const configProxy = new Proxy(config, {
set: (target, prop, value, receiver) => { set: (target, prop, value, receiver) => {
// some values check (important!)
if(prop == 'p2pConnections' && value < 10)
value = 10
if(prop == 'p2pConnections' && value > 300)
value = 300
target[prop] = value target[prop] = value
if(!fs.existsSync(configPath)) if(!fs.existsSync(configPath))

View File

@ -13,7 +13,11 @@ class p2p {
{ {
this.send = send this.send = send
this.tcpServer = net.createServer(); this.tcpServer = net.createServer();
this.tcpServer.maxConnections = config.p2pConnections * 2;
this.tcpServer.on('connection', (socket) => { this.tcpServer.on('connection', (socket) => {
this.tcpServer.getConnections((err, count) => {
console.log('connection', count)
})
socket = new JsonSocket(socket); socket = new JsonSocket(socket);
socket.on('error', (err) => {}) socket.on('error', (err) => {})
socket.on('message', (message) => { socket.on('message', (message) => {
@ -93,7 +97,7 @@ class p2p {
add(address) { add(address) {
const { peers } = this const { peers } = this
if(this.size > 10) if(this.size > config.p2pConnections)
return; return;
if(address.port <= 1 || address.port > 65535) if(address.port <= 1 || address.port > 65535)