From c574d2e5b00165bfdc890d4762e9fddd974801e1 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Fri, 11 Dec 2020 16:45:16 +0100 Subject: [PATCH 1/2] fix: URI router preserves path - we preserve path, so URIs like below work: #ipfs%3A%2F%2FQmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco%2Fwiki%2FDiego_Maradona.html - hide error UI and display "Processing IPFS request.." while redirecting for a nicer UX (no error flash) TODO: add support for dnslink names in ipns namespace --- add-on/manifest.firefox.json | 12 +++--- add-on/src/lib/ipfs-request.js | 2 +- .../ipfs-request-protocol-handlers.test.js | 38 +++++++++---------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/add-on/manifest.firefox.json b/add-on/manifest.firefox.json index 0b67a894d..19e2346d1 100644 --- a/add-on/manifest.firefox.json +++ b/add-on/manifest.firefox.json @@ -37,32 +37,32 @@ { "protocol": "web+dweb", "name": "IPFS Companion: DWEB Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" }, { "protocol": "web+ipns", "name": "IPFS Companion: IPNS Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" }, { "protocol": "web+ipfs", "name": "IPFS Companion: IPFS Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" }, { "protocol": "dweb", "name": "IPFS Companion: DWEB Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" }, { "protocol": "ipns", "name": "IPFS Companion: IPNS Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" }, { "protocol": "ipfs", "name": "IPFS Companion: IPFS Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" } ] } diff --git a/add-on/src/lib/ipfs-request.js b/add-on/src/lib/ipfs-request.js index 66021f62e..a1b37f896 100644 --- a/add-on/src/lib/ipfs-request.js +++ b/add-on/src/lib/ipfs-request.js @@ -508,7 +508,7 @@ function isSafeToRedirect (request, runtime) { // This is just a placeholder that we had to provide -- removed in normalizedRedirectingProtocolRequest() // It has to match URL from manifest.json/protocol_handlers -const redirectingProtocolEndpoint = 'https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#' +const redirectingProtocolEndpoint = 'https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#' function redirectingProtocolRequest (request) { return request.url.startsWith(redirectingProtocolEndpoint) diff --git a/test/functional/lib/ipfs-request-protocol-handlers.test.js b/test/functional/lib/ipfs-request-protocol-handlers.test.js index c036b83fa..acf390e25 100644 --- a/test/functional/lib/ipfs-request-protocol-handlers.test.js +++ b/test/functional/lib/ipfs-request-protocol-handlers.test.js @@ -59,81 +59,81 @@ describe('modifyRequest.onBeforeRequest:', function () { // without web+ prefix (Firefox > 59: https://github.com/ipfs-shipyard/ipfs-companion/issues/164#issuecomment-356301174) it('should not be normalized if ipfs:/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#ipfs%3A%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipfs%3A%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if ipfs://{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#ipfs%3A%2F%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipfs%3A%2F%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?argTest#hashTest') }) it('should not be normalized if ipns:/{fqdn}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#ipns%3A%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipns%3A%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if ipns://{fqdn}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#ipns%3A%2F%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipns%3A%2F%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should be normalized if ipfs://{fqdn}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#ipfs%3A%2F%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipfs%3A%2F%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should be normalized if dweb:/ipfs/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#dweb%3A%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#dweb%3A%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?argTest#hashTest') }) it('should not be normalized if dweb://ipfs/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#dweb%3A%2F%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#dweb%3A%2F%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if dweb:/ipns/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#dweb%3A%2Fipns/ipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#dweb%3A%2Fipns/ipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should not be normalized if dweb://ipns/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#dweb%3A%2F%2Fipns/ipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#dweb%3A%2F%2Fipns/ipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) // web+ prefixed versions (Firefox < 59 and Chrome) it('should not be normalized if web+ipfs:/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bipfs%3A%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bipfs%3A%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if web+ipfs://{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bipfs%3A%2F%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bipfs%3A%2F%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?argTest#hashTest') }) it('should not be normalized if web+ipns:/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bipns%3A%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bipns%3A%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if web+ipns://{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bipns%3A%2F%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bipns%3A%2F%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should be normalized if web+dweb:/ipfs/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bdweb%3A%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bdweb%3A%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?argTest#hashTest') }) it('should not be normalized if web+dweb://ipfs/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bdweb%3A%2F%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bdweb%3A%2F%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if web+dweb:/ipns/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bdweb%3A%2Fipns/ipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bdweb%3A%2Fipns/ipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should not be normalized if web+dweb://ipns/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bdweb%3A%2F%2Fipns/ipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bdweb%3A%2F%2Fipns/ipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should not be normalized if web+{foo}:/bar', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bfoo%3A%2Fbar%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bfoo%3A%2Fbar%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should not be normalized if web+{foo}://bar', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/QmVGC4uCBDVEhCzsaJmvR5nVDgChM97kcYNehVm7L9jxtc#web%2Bfoo%3A%2F%2Fbar%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bfoo%3A%2F%2Fbar%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) }) From f046e45eabf65ac210d6a98378fe67703b43df57 Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Thu, 7 Jan 2021 02:28:42 +0100 Subject: [PATCH 2/2] feat: support DNSLink names in URI router removes cids library and delegates all the conversion to path-router at the subdomain gateway. we still check for broken CIDv0 for a nice UX. this removes the need for bumping library version when new encoding/codec is added, making this more future proof --- add-on/manifest.firefox.json | 12 +++--- add-on/src/lib/ipfs-request.js | 2 +- .../ipfs-request-protocol-handlers.test.js | 38 +++++++++---------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/add-on/manifest.firefox.json b/add-on/manifest.firefox.json index 19e2346d1..369b2e45c 100644 --- a/add-on/manifest.firefox.json +++ b/add-on/manifest.firefox.json @@ -37,32 +37,32 @@ { "protocol": "web+dweb", "name": "IPFS Companion: DWEB Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#%s" }, { "protocol": "web+ipns", "name": "IPFS Companion: IPNS Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#%s" }, { "protocol": "web+ipfs", "name": "IPFS Companion: IPFS Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#%s" }, { "protocol": "dweb", "name": "IPFS Companion: DWEB Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#%s" }, { "protocol": "ipns", "name": "IPFS Companion: IPNS Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#%s" }, { "protocol": "ipfs", "name": "IPFS Companion: IPFS Protocol Handler", - "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#%s" + "uriTemplate": "https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#%s" } ] } diff --git a/add-on/src/lib/ipfs-request.js b/add-on/src/lib/ipfs-request.js index a1b37f896..1f8ca1027 100644 --- a/add-on/src/lib/ipfs-request.js +++ b/add-on/src/lib/ipfs-request.js @@ -508,7 +508,7 @@ function isSafeToRedirect (request, runtime) { // This is just a placeholder that we had to provide -- removed in normalizedRedirectingProtocolRequest() // It has to match URL from manifest.json/protocol_handlers -const redirectingProtocolEndpoint = 'https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#' +const redirectingProtocolEndpoint = 'https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#' function redirectingProtocolRequest (request) { return request.url.startsWith(redirectingProtocolEndpoint) diff --git a/test/functional/lib/ipfs-request-protocol-handlers.test.js b/test/functional/lib/ipfs-request-protocol-handlers.test.js index acf390e25..e7a6715d2 100644 --- a/test/functional/lib/ipfs-request-protocol-handlers.test.js +++ b/test/functional/lib/ipfs-request-protocol-handlers.test.js @@ -59,81 +59,81 @@ describe('modifyRequest.onBeforeRequest:', function () { // without web+ prefix (Firefox > 59: https://github.com/ipfs-shipyard/ipfs-companion/issues/164#issuecomment-356301174) it('should not be normalized if ipfs:/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipfs%3A%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#ipfs%3A%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if ipfs://{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipfs%3A%2F%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#ipfs%3A%2F%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?argTest#hashTest') }) it('should not be normalized if ipns:/{fqdn}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipns%3A%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#ipns%3A%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if ipns://{fqdn}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipns%3A%2F%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#ipns%3A%2F%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should be normalized if ipfs://{fqdn}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#ipfs%3A%2F%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#ipfs%3A%2F%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should be normalized if dweb:/ipfs/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#dweb%3A%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#dweb%3A%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?argTest#hashTest') }) it('should not be normalized if dweb://ipfs/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#dweb%3A%2F%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#dweb%3A%2F%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if dweb:/ipns/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#dweb%3A%2Fipns/ipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#dweb%3A%2Fipns/ipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should not be normalized if dweb://ipns/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#dweb%3A%2F%2Fipns/ipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#dweb%3A%2F%2Fipns/ipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) // web+ prefixed versions (Firefox < 59 and Chrome) it('should not be normalized if web+ipfs:/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bipfs%3A%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bipfs%3A%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if web+ipfs://{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bipfs%3A%2F%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bipfs%3A%2F%2FQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?argTest#hashTest') }) it('should not be normalized if web+ipns:/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bipns%3A%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bipns%3A%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if web+ipns://{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bipns%3A%2F%2Fipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bipns%3A%2F%2Fipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should be normalized if web+dweb:/ipfs/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bdweb%3A%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bdweb%3A%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).to.equal('https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?argTest#hashTest') }) it('should not be normalized if web+dweb://ipfs/{CID}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bdweb%3A%2F%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bdweb%3A%2F%2Fipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should be normalized if web+dweb:/ipns/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bdweb%3A%2Fipns/ipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bdweb%3A%2Fipns/ipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request).redirectUrl).equal('https://ipfs.io/ipns/ipfs.io?argTest#hashTest') }) it('should not be normalized if web+dweb://ipns/{foo}', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bdweb%3A%2F%2Fipns/ipfs.io%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bdweb%3A%2F%2Fipns/ipfs.io%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should not be normalized if web+{foo}:/bar', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bfoo%3A%2Fbar%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bfoo%3A%2Fbar%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) it('should not be normalized if web+{foo}://bar', function () { - const request = url2request('https://gateway.ipfs.io/ipfs/bafkreihnpo5zt7qt3lvmk4zk2opran7ybbe3gfp5ruqf5iirdyxaxqvwtu#web%2Bfoo%3A%2F%2Fbar%3FargTest%23hashTest') + const request = url2request('https://gateway.ipfs.io/ipfs/bafkreiacamq42cltx3ussmxb2ey3mmpisthrs3kelwuxnwt7oofvqsjvgm#web%2Bfoo%3A%2F%2Fbar%3FargTest%23hashTest') expect(modifyRequest.onBeforeRequest(request)).to.equal(undefined) }) })