feat(p2p): bootstrap peers
This commit is contained in:
parent
c7a217ec37
commit
10d0a2fbc0
@ -66,6 +66,15 @@ export default class AdminPage extends Page {
|
|||||||
this.forceUpdate()
|
this.forceUpdate()
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
<Toggle
|
||||||
|
style={{marginTop: '10px'}}
|
||||||
|
label="Enabled bootstrap peers"
|
||||||
|
toggled={this.options.p2pBootstrap}
|
||||||
|
onToggle={(e, checked) => {
|
||||||
|
this.options.p2pBootstrap = checked
|
||||||
|
this.forceUpdate()
|
||||||
|
}}
|
||||||
|
/>
|
||||||
<div className='column w100p'>
|
<div className='column w100p'>
|
||||||
<div className='row inline w100p'>
|
<div className='row inline w100p'>
|
||||||
<div style={{flex: 1}}>Scanning port</div>
|
<div style={{flex: 1}}>Scanning port</div>
|
||||||
|
@ -12,6 +12,7 @@ let config = {
|
|||||||
|
|
||||||
p2p: true,
|
p2p: true,
|
||||||
p2pConnections: 10,
|
p2pConnections: 10,
|
||||||
|
p2pBootstrap: true,
|
||||||
|
|
||||||
upnp: true,
|
upnp: true,
|
||||||
|
|
||||||
|
@ -8,9 +8,10 @@ const crypto = require('crypto')
|
|||||||
const P2PServer = require('./p2p')
|
const P2PServer = require('./p2p')
|
||||||
const stun = require('stun')
|
const stun = require('stun')
|
||||||
const natUpnp = require('nat-upnp');
|
const natUpnp = require('nat-upnp');
|
||||||
|
const http = require('https')
|
||||||
//var express = require('express');
|
//var express = require('express');
|
||||||
//var app = express();
|
//var app = express();
|
||||||
//var server = require('http').Server(app);
|
//var server = http.Server(app);
|
||||||
//var io = require('socket.io')(server);
|
//var io = require('socket.io')(server);
|
||||||
//var sm = require('sitemap');
|
//var sm = require('sitemap');
|
||||||
//var phantomjs = require('phantomjs-prebuilt')
|
//var phantomjs = require('phantomjs-prebuilt')
|
||||||
@ -270,6 +271,32 @@ if(dataDirectory && fs.existsSync(dataDirectory + '/peers.p2p'))
|
|||||||
console.log('loaded', peers.length, 'peers')
|
console.log('loaded', peers.length, 'peers')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(config.p2pBootstrap)
|
||||||
|
{
|
||||||
|
http.get('https://api.myjson.com/bins/1e5rmh', (resp) => {
|
||||||
|
let data = '';
|
||||||
|
|
||||||
|
resp.on('data', (chunk) => {
|
||||||
|
data += chunk;
|
||||||
|
});
|
||||||
|
|
||||||
|
resp.on('end', () => {
|
||||||
|
const json = JSON.parse(data)
|
||||||
|
if(json.bootstrap)
|
||||||
|
{
|
||||||
|
const peers = encryptor.decrypt(json.bootstrap)
|
||||||
|
if(peers && peers.length > 0)
|
||||||
|
{
|
||||||
|
peers.forEach(peer => p2p.add(peer))
|
||||||
|
console.log('loaded', peers.length, 'peers from bootstrap')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}).on("error", (err) => {
|
||||||
|
console.log("Error: " + err.message);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
//io.on('connection', function(socket)
|
//io.on('connection', function(socket)
|
||||||
//{
|
//{
|
||||||
@ -1251,21 +1278,49 @@ this.stop = (callback) => {
|
|||||||
if(upnp)
|
if(upnp)
|
||||||
upnp.ratsUnmap()
|
upnp.ratsUnmap()
|
||||||
|
|
||||||
|
const close = () => {
|
||||||
|
torrentClient.destroy(() => {
|
||||||
|
sphinx.end(() => spider.close(() => {
|
||||||
|
mysqlSingle.destroy()
|
||||||
|
console.log('spider closed')
|
||||||
|
callback()
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// safe future peers
|
// safe future peers
|
||||||
if(dataDirectory)
|
if(dataDirectory)
|
||||||
{
|
{
|
||||||
const peersEncripted = encryptor.encrypt(p2p.addresses(p2p.peersList()))
|
const addresses = p2p.addresses(p2p.peersList())
|
||||||
|
const peersEncripted = encryptor.encrypt(addresses)
|
||||||
fs.writeFileSync(dataDirectory + '/peers.p2p', peersEncripted, 'utf8');
|
fs.writeFileSync(dataDirectory + '/peers.p2p', peersEncripted, 'utf8');
|
||||||
console.log('peers saved')
|
console.log('peers saved')
|
||||||
}
|
|
||||||
|
|
||||||
torrentClient.destroy(() => {
|
if(config.p2pBootstrap && addresses.length > 5)
|
||||||
sphinx.end(() => spider.close(() => {
|
{
|
||||||
mysqlSingle.destroy()
|
const options = {
|
||||||
console.log('spider closed')
|
port: 443,
|
||||||
callback()
|
host: 'api.myjson.com',
|
||||||
}))
|
method: 'PUT',
|
||||||
})
|
path: '/bins/1e5rmh',
|
||||||
|
headers: {
|
||||||
|
'Content-Type' : "application/json",
|
||||||
|
}
|
||||||
|
};
|
||||||
|
console.log('save bootstrap peers')
|
||||||
|
const req = http.request(options, close);
|
||||||
|
req.on('error', close)
|
||||||
|
req.end(JSON.stringify({bootstrap: peersEncripted}))
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return this
|
return this
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user