Skip to content

Conversation

@SoftCreatR
Copy link
Contributor

@SoftCreatR SoftCreatR commented Sep 5, 2021

n/t

Copy link
Member

@lidel lidel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SoftCreatR it does not seem to work with IPNS (https://ipfs.1-2.dev/ipns/en.wikipedia-on-ipfs.org) – mind fixing?

@lidel lidel added the need/author-input Needs input from the original author label Sep 24, 2021
@SoftCreatR
Copy link
Contributor Author

SoftCreatR commented Sep 25, 2021

Done. Took me some time, to figure out how to properly make it work in a subdomain environment. Would be nice if go-ipfs would handle the character replacements by it's own.

@SoftCreatR SoftCreatR requested a review from lidel October 1, 2021 10:22
Copy link
Member

@lidel lidel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

What do you mean by:

Would be nice if go-ipfs would handle the character replacements by it's own.
?

@lidel lidel merged commit c764ad6 into ipfs:master Oct 1, 2021
@SoftCreatR
Copy link
Contributor Author

Thanks!

What do you mean by:

Would be nice if go-ipfs would handle the character replacements by it's own.
?

Replacing . by - and - by -- is somewhat, the Webserver shouldn't do by it's own, when using a subdomain setup. Since ipfs performs the redirect, it should also handle these rewrites.

@lidel
Copy link
Member

lidel commented Oct 1, 2021

Mind providing examples? Afaik go-ipfs does all redirects it can (without breaking TLS, as wildcart certs work only for a single label wildcard).

@SoftCreatR SoftCreatR deleted the patch-1 branch October 1, 2021 16:04
@SoftCreatR
Copy link
Contributor Author

The one mentioned: https://ipfs.1-2.dev/ipns/en.wikipedia-on-ipfs.org

go-ipfs is configured for Subdomains, so what it does (or did during my tests) was to redirect to en.wikipedia-on-ipfs.org.ipfs.ipfs.1-2.dev, which isn't working due to the lack of wildcard cert depth.

@lidel
Copy link
Member

lidel commented Oct 11, 2021

I see. It sounds you are doing redirects from https://ipfs.1-2.dev/* to https://*.ipfs.1-2.dev/ subdomains at the level of some reverse proxy (nginx?), which is not smart enough to do necessary DNS label normalization.

Let go-ipfs handle https://ipfs.1-2.dev/* – it will do the redirect to proper https://*.ipfs.1-2.dev/ subdomain and do identifier normalization (if needed) so it works fine with TLS certs.

To be very specific, if you set X-Forwarded-Proto: https at your reverse proxy (before passing to go-ipfs), go-ipfs will take care of converting en.wikipedia-on-ipfs.org to the single label en-wikipedia--on--ipfs-org which will work with wildcard cert just fine.

See gateway recipes and examples at https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#gateway-recipes

@SoftCreatR
Copy link
Contributor Author

It sounds you are doing redirects from https://ipfs.1-2.dev/* to https://*.ipfs.1-2.dev/ subdomains at the level of some reverse proxy (nginx?), which is not smart enough to do necessary DNS label normalization.

No, these redirects are handled by IPFS via proxy_pass http://gateway;, which works just fine, using this IPFS config:

"PublicGateways": {
  "*.1-2.dev": {
    "NoDNSLink": false,
    "Paths": [
      "/ipfs",
      "/ipns"
    ],
    "UseSubdomains": true
  }
},

After your request regarding IPNS, I've implemented this:

    location ~ ^/ipns/(?<name>.*) {
        rewrite_by_lua_block
        {
            local subdomain = ngx.var.name
            subdomain = string.gsub(subdomain, "%-", "--")
            subdomain = string.gsub(subdomain, "%.", "-")
            
            return ngx.redirect(ngx.var.scheme .. "://" .. subdomain .. ".ipns." .. ngx.var.host, 301)
        }
    }

which isn't by far not the most beautiful and convenient solution, but it works so far.

What I didn't know was, that proxy_set_header X-Forwarded-Proto https simply does the trick. So I've removed the lua part and simply added that line and it works, as expected :)

github-actions bot pushed a commit that referenced this pull request Apr 17, 2023
## 1.0.0 (2023-04-17)

### Features

* /ipns/ check ([#313](#313)) ([10a5c13](10a5c13))
* add countly metrics ([#309](#309)) ([c727202](c727202))
* add cthd.icu ([#294](#294)) ([a2e0102](a2e0102))
* add https://ipfs.czip.it ([#374](#374)) ([f3dde51](f3dde51))
* add https://ipfs.joaoleitao.org ([#323](#323)) ([787f131](787f131))
* add ipfs.1-2.dev ([#169](#169)) ([c764ad6](c764ad6))
* add ipfs.drink.cafe ([#116](#116)) ([cc84899](cc84899))
* add ipfs.jpu.jp ([#348](#348)) ([b52b8c7](b52b8c7))
* add ipfs.litnet.work ([#222](#222)) ([1fd2e68](1fd2e68))
* add ipfs.pinksheep.whizzzkid.dev ([#326](#326)) ([d40a2c1](d40a2c1))
* add ipfs.soul-network.com ([#389](#389)) ([57fe04d](57fe04d))
* add nftstorage.link gateway ([#204](#204)) ([e588108](e588108))
* add Onion Gateway (TOR)  fzdqwfb5ml56oadins5jpuhe6ki6bk33umri35p5kt2tue4fpws5efid.onion ([#212](#212)) ([01ff12f](01ff12f))
* add w3s.link gateway ([#288](#288)) ([000a26f](000a26f))
* country flags ([#96](#96)) ([84a31fe](84a31fe))
* Create CODEOWNERS ([#283](#283)) ([b62b41c](b62b41c))
* Deleted https://ipfs.czip.it ([#393](#393)) ([77d67a4](77d67a4))
* Implementing Trustless Server Checks ([#310](#310)) ([4a2c926](4a2c926))
* improved Origin detection via img tag ([#117](#117)) ([8407e80](8407e80))
* improved origin isolation check ([#148](#148)) ([abd4c1c](abd4c1c))
* Introducing Service Worker For Cache Busting ([#357](#357)) ([0536782](0536782))
* new gateway https://ipfs.tayfundogdas.me/ipfs ([#321](#321)) ([9d5b552](9d5b552))
* remove ipfs.foxgirl.dev ([#155](#155)) ([15fd028](15fd028))
* remove smartsignature.io ([#146](#146)) ([77b45b6](77b45b6))
* subdomain gateways and Origin isolation check ([#78](#78)) ([afcbffa](afcbffa))
* update geoip dataset (2020-10-13) ([4187738](4187738))
* update geoip dataset (2020-10-13) ([#115](#115)) ([782b66b](782b66b))
* use typescript ([#194](#194)) ([10958e6](10958e6))

### Bug Fixes

* ⏪ Reverting [#323](#323): ipfs.joaoleitao.org ([#394](#394)) ([b5bb34c](b5bb34c))
* **ci:** add empty commit to fix lint checks on master ([3ae6aa0](3ae6aa0))
* **ci:** skip test if no code changed ([#210](#210)) ([7d6d628](7d6d628))
* cleanup entries missing DNS A record ([#180](#180)) ([2b7ad30](2b7ad30))
* do not redirect IPNS checks ([#325](#325)) ([79bb51d](79bb51d))
* flag column and new ipfs-geoip dataset ([#319](#319)) ([f5fc723](f5fc723))
* metrics consent prompt location and styling ([#353](#353)) ([e709f2b](e709f2b))
* npm start should work without prior cmds ([#307](#307)) ([7ebe2e5](7ebe2e5))
* opt-out from redirects done by browser extension ([6dd5f51](6dd5f51))
* origin typo ([#200](#200)) ([d198abb](d198abb))
* **origin:** confirm paths redirect to subdomain ([#156](#156)) ([b837a35](b837a35))
* remove heart ([#332](#332)) ([f61ec84](f61ec84))
* update ipfs.ivoputzer.xyz gateway entry ([#152](#152)) ([4b760d9](4b760d9))
* update metrics collection banner to modal with management toggle settings ([#373](#373)) ([d925b36](d925b36))
* update redirect opt-out symbol to final version ([efd5dbf](efd5dbf))

### Trivial Changes

* **deps-dev:** bump aegir from 36.2.3 to 37.5.5 ([#305](#305)) ([1d62fc3](1d62fc3))
* **deps-dev:** bump aegir from 37.5.5 to 37.5.6 ([#316](#316)) ([d3cd9bd](d3cd9bd))
* **deps-dev:** bump browserslist from 4.19.3 to 4.21.4 ([#295](#295)) ([7850071](7850071))
* **deps-dev:** bump eslint-config-ipfs from 2.1.0 to 3.1.1 ([#300](#300)) ([f1bce91](f1bce91))
* **deps-dev:** bump eslint-config-ipfs from 3.1.1 to 3.1.2 ([#315](#315)) ([0506c19](0506c19))
* **deps-dev:** bump ipfs from 0.62.1 to 0.64.2 ([#296](#296)) ([d47e503](d47e503))
* **deps-dev:** bump ipfs from 0.64.2 to 0.65.0 ([#322](#322)) ([b400349](b400349))
* **deps-dev:** bump typescript from 4.6.2 to 4.8.3 ([#293](#293)) ([c56afa1](c56afa1))
* **deps-dev:** bump typescript from 4.8.3 to 4.8.4 ([#304](#304)) ([899b4fc](899b4fc))
* **deps:** bump @dutu/rate-limiter from v1.3.0 to v1.3.1 ([#299](#299)) ([5e598e8](5e598e8))
* **deps:** bump aegir from 36.1.3 to 36.2.3 ([#202](#202)) ([8fa5851](8fa5851))
* **deps:** bump jpeg-js from 0.4.3 to 0.4.4 ([#253](#253)) ([65f99f3](65f99f3))
* **deps:** [email protected] ([#308](#308)) ([1bcda7c](1bcda7c))
* improve submission/PR info ([#119](#119)) ([a238f3f](a238f3f))
* improved security notes ([#151](#151)) ([5893f35](5893f35)), closes [#148](#148) [/github.com//pull/151#issuecomment-857193370](https://github.com/ipfs//github.com/ipfs/public-gateway-checker/pull/151/issues/issuecomment-857193370)
* ipfs-geoip v5 ([0d8091e](0d8091e))
* [email protected] ([c4e8180](c4e8180))
* readme cleanup ([798777e](798777e))
* remove dead hostnames ([#280](#280)) ([e861280](e861280))
* remove expired domains ([#179](#179)) ([16c9985](16c9985))
* remove ipfs-zod.tv ([#234](#234)) ([6f79a80](6f79a80))
* removed birds-are-nice.me ([#173](#173)) ([ff2e05c](ff2e05c)), closes [#172](#172)
* removing my gateway for now ([#335](#335)) ([cf61e68](cf61e68))
* style formatting and linting fixes ([#366](#366)) ([a81d48b](a81d48b))
* Update .github/workflows/stale.yml [skip ci] ([5fc4a68](5fc4a68))
* update readme with link to fleek ([#337](#337)) ([3dc5dbe](3dc5dbe))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

need/author-input Needs input from the original author

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants