feat(p2p): peers limitation to prevent connection spam
This commit is contained in:
@ -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))
|
||||||
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user