From 053ecb9ceebc38f0d150db7eb89f707bcd018d42 Mon Sep 17 00:00:00 2001 From: geolffrey Date: Tue, 26 Jan 2021 21:39:17 -0600 Subject: [PATCH 1/4] Adding relays --- public/core/orbit.js | 4 ++-- public/core/settings/ipfs.js | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/public/core/orbit.js b/public/core/orbit.js index 25131e977..015dfdd4c 100644 --- a/public/core/orbit.js +++ b/public/core/orbit.js @@ -55,7 +55,7 @@ module.exports = (ipcMain) => { open(address, settings = {}) { return this.orbit.open(address, { - ...{overwrite: true, replicate: true}, + ...{replicate: true}, ...settings } ) @@ -165,7 +165,7 @@ module.exports = (ipcMain) => { * Orbit db factory */ return (this.orbit && Promise.resolve(this.orbit)) - || OrbitDB.createInstance(this.node, {directory: ROOT_ORBIT_DIR}); + || OrbitDB.createInstance(this.node); } instanceNode(ipc) { diff --git a/public/core/settings/ipfs.js b/public/core/settings/ipfs.js index 224b68fcc..1bd48ab02 100644 --- a/public/core/settings/ipfs.js +++ b/public/core/settings/ipfs.js @@ -14,6 +14,16 @@ module.exports = () => { "/dns4/node3.delegate.ipfs.io/tcp/443/https" ] }, + "Swarm": { + "ConnMgr": { + "GracePeriod": "20s", + "HighWater": 1500, + "LowWater": 450, + "Type": "basic" + }, + "EnableAutoRelay": true, + "EnableRelayHop": false + }, "Discovery": {"MDNS": {"Enabled": true, "Interval": 10}}, "Peering": { "Peers": [ From 0fefe1953e6457df3aa9c1b98735be16a0283f50 Mon Sep 17 00:00:00 2001 From: geolffrey Date: Wed, 27 Jan 2021 10:49:02 -0600 Subject: [PATCH 2/4] FIx provs needed --- public/core/orbit.js | 4 ++-- public/core/provs.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/core/orbit.js b/public/core/orbit.js index 015dfdd4c..77d4d4fcc 100644 --- a/public/core/orbit.js +++ b/public/core/orbit.js @@ -55,7 +55,7 @@ module.exports = (ipcMain) => { open(address, settings = {}) { return this.orbit.open(address, { - ...{replicate: true}, + ...{replicate: true, overwrite: true}, ...settings } ) @@ -165,7 +165,7 @@ module.exports = (ipcMain) => { * Orbit db factory */ return (this.orbit && Promise.resolve(this.orbit)) - || OrbitDB.createInstance(this.node); + || OrbitDB.createInstance(this.node, {directory: ROOT_ORBIT_DIR}); } instanceNode(ipc) { diff --git a/public/core/provs.js b/public/core/provs.js index ba8b59383..6ff5eea46 100644 --- a/public/core/provs.js +++ b/public/core/provs.js @@ -9,7 +9,7 @@ const findProv = async (ipfs, key) => { * @return {Promise} */ - for await (const cid of ipfs.dht.findProvs(key)) { + for await (const cid of ipfs.dht.findProvs(key, {numProviders: 10})) { log.info('Connecting to:', cid.id) const mAddr = cid.addrs.map((m) => `${m.toString()}/p2p/${cid.id}`) From 2d9ce3181bd46fb70eabde92e84d3b3de810dc33 Mon Sep 17 00:00:00 2001 From: geolffrey Date: Wed, 27 Jan 2021 21:22:27 -0600 Subject: [PATCH 3/4] Fix hang ipfs lift up --- public/core/ipfs.js | 11 ++++++++++- public/core/settings/index.js | 4 +++- public/core/utils.js | 14 ++++++++++++++ public/electron.js | 14 ++------------ 4 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 public/core/utils.js diff --git a/public/core/ipfs.js b/public/core/ipfs.js index 2d3e87f36..e10bf7014 100644 --- a/public/core/ipfs.js +++ b/public/core/ipfs.js @@ -4,6 +4,7 @@ const path = require('path') const Ctl = require('ipfsd-ctl') const settings = require('./settings') const ipfsConf = require('./settings/ipfs'); +const {removeFiles} = require('./utils'); const inDev = Object.is(process.env.ENV, 'dev') const resolveIpfsPaths = () => { @@ -28,7 +29,7 @@ const resolveIpfsPaths = () => { module.exports = async (ipc) => { const isInstance = await Ctl.createController({ - ipfsOptions: {config: ipfsConf(), repo: path.join(settings.ROOT_HOME, '.ipfs_w')}, + ipfsOptions: {config: ipfsConf(), repo: settings.ROOT_IPFS_DIR}, ipfsHttpModule: require('ipfs-http-client'), ipfsBin: resolveIpfsPaths(), disposable: false, forceKillTimeout: 2000, @@ -36,6 +37,14 @@ module.exports = async (ipc) => { remote: false, type: 'go' }) + // If api file exists on node setup ipfs-daemon.js line:183 doest spawn process + // Be sure this lock 'api' file doesnt exists before node boot.. + const apiLockFile = path.join(settings.ROOT_IPFS_DIR, 'api') + if (fs.existsSync(apiLockFile)) { + log.warn('Removing old `api` file'); + removeFiles(apiLockFile) + } + // Check if running time dir exists log.warn('Starting node'); ipc.reply('orbit-progress', 'Booting') diff --git a/public/core/settings/index.js b/public/core/settings/index.js index 75f84d090..39825752d 100644 --- a/public/core/settings/index.js +++ b/public/core/settings/index.js @@ -4,7 +4,7 @@ const fs = require('fs') const ROOT_DIR = os.tmpdir(); const ROOT_HOME = os.homedir(); -const ROOT_URI = 'https://vps1.phillm.net/ipfs/'; +const ROOT_URI = 'https://localhost:9090ipfs/'; const ROOT_URI_TORRENT = `${ROOT_URI}`; const ROOT_STORE = process.env.appPath; const ROOT_APP = fs.realpathSync(process.cwd()); @@ -13,6 +13,7 @@ const ROOT_PUBLIC = path.join(ROOT_APP, 'public'); const ROOT_RUNNING_DB = path.join(ROOT_STORE, 'w_alloc') const ROOT_DB_DIR = path.join(ROOT_RUNNING_DB, 'linvo') const ROOT_ORBIT_DIR = path.join(ROOT_RUNNING_DB, 'orbit') +const ROOT_IPFS_DIR = path.join(ROOT_HOME, '.ipfs_w') module.exports = { ROOT_APP, @@ -22,6 +23,7 @@ module.exports = { ROOT_STORE, ROOT_PUBLIC, ROOT_DB_DIR, + ROOT_IPFS_DIR, ROOT_ORBIT_DIR, ROOT_RUNNING_DB, ROOT_TMP_FOLDER, diff --git a/public/core/utils.js b/public/core/utils.js new file mode 100644 index 000000000..9d5f84e51 --- /dev/null +++ b/public/core/utils.js @@ -0,0 +1,14 @@ +const log = require('electron-log'); +const rimraf = require('rimraf'); + +module.exports.removeFiles = (dirOrFIle, options) => { + rimraf(dirOrFIle, { + ...{ + disableGlob: true, + maxBusyTries: 20, + emfileWait: 10 * 1000 + }, ...options + }, () => { + log.warn('Delete file ' + dirOrFIle); + }); +} \ No newline at end of file diff --git a/public/electron.js b/public/electron.js index a3841e169..99ad189e9 100644 --- a/public/electron.js +++ b/public/electron.js @@ -1,7 +1,6 @@ const fs = require('fs'); const path = require('path'); const mime = require('mime'); -const rimarf = require('rimraf'); const log = require('electron-log'); const { autoUpdater @@ -23,6 +22,7 @@ let win, loadingScreen, // Dont move appPath from this line process.env.appPath = appPath; const {ROOT_TMP_FOLDER} = require(`${__dirname}/core/settings/`); +const {removeFiles} = require(`${__dirname}/core/utils`); const Orbit = require(`${__dirname}/core/orbit`); const Auth = require(`${__dirname}/core/auth`); const gotTheLock = app.requestSingleInstanceLock(); @@ -34,17 +34,7 @@ dialog.showErrorBox = (title, content) => { log.info(`${title}\n${content}`); }; -const removeFiles = (dirOrFIle, options) => { - rimarf(dirOrFIle, { - ...{ - disableGlob: true, - maxBusyTries: 20, - emfileWait: 10 * 1000 - }, ...options - }, () => { - log.warn('Delete file ' + dirOrFIle); - }); -}, removeCacheDirs = () => { +const removeCacheDirs = () => { //Auth.removeFromStorage('tmp') fs.readdirSync(appPath).filter( fn => fn.startsWith('w_alloc') || fn.startsWith('w_source') From aabdcea3f2c3d66b7b9e023a86d4697280860d64 Mon Sep 17 00:00:00 2001 From: geolffrey Date: Wed, 27 Jan 2021 21:35:39 -0600 Subject: [PATCH 4/4] Await rimraf promise --- public/core/ipfs.js | 2 +- public/core/utils.js | 21 ++++++++++++--------- public/electron.js | 17 ++++++++--------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/public/core/ipfs.js b/public/core/ipfs.js index e10bf7014..7f115466e 100644 --- a/public/core/ipfs.js +++ b/public/core/ipfs.js @@ -42,7 +42,7 @@ module.exports = async (ipc) => { const apiLockFile = path.join(settings.ROOT_IPFS_DIR, 'api') if (fs.existsSync(apiLockFile)) { log.warn('Removing old `api` file'); - removeFiles(apiLockFile) + await removeFiles(apiLockFile) } // Check if running time dir exists diff --git a/public/core/utils.js b/public/core/utils.js index 9d5f84e51..73475f944 100644 --- a/public/core/utils.js +++ b/public/core/utils.js @@ -2,13 +2,16 @@ const log = require('electron-log'); const rimraf = require('rimraf'); module.exports.removeFiles = (dirOrFIle, options) => { - rimraf(dirOrFIle, { - ...{ - disableGlob: true, - maxBusyTries: 20, - emfileWait: 10 * 1000 - }, ...options - }, () => { - log.warn('Delete file ' + dirOrFIle); - }); + return new Promise((resolve) => { + rimraf(dirOrFIle, { + ...{ + disableGlob: true, + maxBusyTries: 20, + emfileWait: 10 * 1000 + }, ...options + }, () => { + log.warn('Delete file ' + dirOrFIle); + resolve() + }); + }) } \ No newline at end of file diff --git a/public/electron.js b/public/electron.js index 99ad189e9..66984e534 100644 --- a/public/electron.js +++ b/public/electron.js @@ -38,9 +38,9 @@ const removeCacheDirs = () => { //Auth.removeFromStorage('tmp') fs.readdirSync(appPath).filter( fn => fn.startsWith('w_alloc') || fn.startsWith('w_source') - ).forEach((file) => { + ).forEach(async (file) => { log.warn('Removing ' + file); - removeFiles(path.join(appPath, file)) + await removeFiles(path.join(appPath, file)) }); }, wipeInvalidSync = () => { Auth.removeFromStorage('peers') @@ -50,11 +50,11 @@ const removeCacheDirs = () => { } }, wipeTmpSubs = () => { //Loop over files in dir - fs.readdir(ROOT_TMP_FOLDER, (err, files) => { + fs.readdir(ROOT_TMP_FOLDER, async (err, files) => { if (!files || !files.length) return false; for (const file of files) { if (/(srt|vtt|zip)$/g.test(file)) { - removeFiles(path.join(ROOT_TMP_FOLDER, file)); + await removeFiles(path.join(ROOT_TMP_FOLDER, file)); } } }) @@ -279,13 +279,12 @@ app.whenReady().then(() => { Orbit(ipcMain); // Window event - ipcMain.on('rmrf', (dir) => { - removeFiles(dir) - }) + ipcMain.on('close', () => app.quit()) - ipcMain.on('party', () => { - if (Auth.existKey) removeFiles(Auth.keyFile) + ipcMain.on('party', async () => { + if (Auth.existKey) + await removeFiles(Auth.keyFile) removeCacheDirs(); })