From 29256ddd232c0d7555ed330622d0cfdb323663a2 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Tue, 7 Apr 2020 21:06:44 +0200 Subject: [PATCH 1/5] feat: support for go-ipfs 0.5 This bumps go-ipfs version to 0.5.0-rc1 in preparation for 0.5 release. Small set of fixes was required: - switched API calls from `GET` to `POST` - Origin header: a proper value is set instead of removing it - sending `ipfs-desktop/${version}` in `User-Agent` header License: MIT Signed-off-by: Marcin Rataj --- package.json | 2 +- src/daemon/config.js | 2 +- src/webui/index.js | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9e5c44673..24183674d 100644 --- a/package.json +++ b/package.json @@ -102,6 +102,6 @@ "yargs": "^15.3.1" }, "go-ipfs": { - "version": "v0.4.23" + "version": "v0.5.0-rc1" } } diff --git a/src/daemon/config.js b/src/daemon/config.js index 1954bd6c8..a3d329e28 100644 --- a/src/daemon/config.js +++ b/src/daemon/config.js @@ -109,7 +109,7 @@ const parseCfgMultiaddr = (addr) => (addr.includes('/http') async function checkIfAddrIsDaemon (addr) { const options = { - method: 'GET', + method: 'POST', host: addr.address, port: addr.port, path: '/api/v0/refs?arg=/ipfs/QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn' diff --git a/src/webui/index.js b/src/webui/index.js index 8de0c76d0..b3a7b31ac 100644 --- a/src/webui/index.js +++ b/src/webui/index.js @@ -1,12 +1,14 @@ const { screen, BrowserWindow, ipcMain, app, session } = require('electron') const { join } = require('path') const { URL } = require('url') +const toUri = require('multiaddr-to-uri') const serve = require('electron-serve') const os = require('os') const openExternal = require('./open-external') const logger = require('../common/logger') const store = require('../common/store') const dock = require('../utils/dock') +const { VERSION } = require('../common/consts') serve({ scheme: 'webui', directory: join(__dirname, '../../assets/webui') }) @@ -59,6 +61,16 @@ const createWindow = () => { return window } +// Converts a Multiaddr to a valid value for Origin HTTP header +const apiOrigin = (apiMultiaddr) => { + // Return opaque origin when there is no API yet + // https://html.spec.whatwg.org/multipage/origin.html#concept-origin-opaque + if (!apiMultiaddr) return 'null' + // Return the Origin of HTTP API + const apiUri = toUri(apiMultiaddr, { assumeHttp: true }) + return new URL(apiUri).origin +} + module.exports = async function (ctx) { openExternal() @@ -109,7 +121,9 @@ module.exports = async function (ctx) { }) session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => { - delete details.requestHeaders.Origin + // Avoid setting CORS by acting like /webui loaded from API port + details.requestHeaders.Origin = apiOrigin(apiAddress) + details.requestHeaders['User-Agent'] = `ipfs-desktop/${VERSION}` callback({ cancel: false, requestHeaders: details.requestHeaders }) // eslint-disable-line }) From a754dbb111e0d7e70acc8fa21008d23421d81d76 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Tue, 7 Apr 2020 21:41:49 +0200 Subject: [PATCH 2/5] chore: allow weak libp2p keys during E2E tests License: MIT Signed-off-by: Marcin Rataj --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 24183674d..711152c94 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "start": "cross-env NODE_ENV=development electron src/index.js", "lint": "standard", "test": "cross-env NODE_ENV=test mocha test/unit/**/*.spec.js", - "test:e2e": "xvfb-maybe cross-env NODE_ENV=test mocha test/e2e/**/*.e2e.js --exit", + "test:e2e": "xvfb-maybe cross-env NODE_ENV=test LIBP2P_ALLOW_WEAK_RSA_KEYS=1 mocha test/e2e/**/*.e2e.js --exit", "postinstall": "run-s install-app-deps build:webui", "install-app-deps": "electron-builder install-app-deps", "clean:webui": "shx rm -rf assets/webui/", From ee400776cf47a6ba84f47521cabadb7604f5aa6b Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Tue, 7 Apr 2020 22:25:00 +0200 Subject: [PATCH 3/5] chore: switch APPVEYOR to Node 12 LTS License: MIT Signed-off-by: Marcin Rataj --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 7d0499c69..b15cd2620 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,7 +13,7 @@ init: - git config --global core.autocrlf input install: - - ps: Install-Product node 10 x64 + - ps: Install-Product node 12 x64 - npm install build_script: From f91d15c738914ae9a9143ea00643b04389bd4c4f Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Tue, 21 Apr 2020 22:52:36 +0200 Subject: [PATCH 4/5] test: e2e against go-ipfs v0.5.0-rc2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 711152c94..da55e211a 100644 --- a/package.json +++ b/package.json @@ -102,6 +102,6 @@ "yargs": "^15.3.1" }, "go-ipfs": { - "version": "v0.5.0-rc1" + "version": "v0.5.0-rc2" } } From 5836c9145b10d5092882e6e09ad57f6daffdb3c6 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Thu, 23 Apr 2020 00:58:05 +0200 Subject: [PATCH 5/5] chore: go-ipfs v0.5.0-rc3 License: MIT Signed-off-by: Marcin Rataj --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index da55e211a..1ba3d2112 100644 --- a/package.json +++ b/package.json @@ -102,6 +102,6 @@ "yargs": "^15.3.1" }, "go-ipfs": { - "version": "v0.5.0-rc2" + "version": "v0.5.0-rc3" } }