ipfs-shipyard / ipfs-deploy

Zero-Config CLI to Deploy Static Websites to IPFS
Other
1.16k stars 122 forks source link

400 when updating Cloudflare dns-link if web3 gateway is enabled #236

Open AnthonyTsang opened 2 years ago

AnthonyTsang commented 2 years ago

Cloudflare is having a new way to handle dns-link.

Instead of using PUT zones/:zone_identifier/dns_records/:identifier like it is an ordinary DNS record, there is a new endpoint PATCH zones/:zone_identifier/web3/hostnames/:identifier

My original issue is that, I was trying to run ipd -p infura -d cloudflare . with IPFS_DEPLOY_CLOUDFLARE__ZONE, IPFS_DEPLOY_CLOUDFLARE__RECORD and IPFS_DEPLOY_CLOUDFLARE__API_TOKEN are set.

The Cloudflare API token has Account : Account Settings : Read Zone : Zone Settings : Edit Zone : Zone : Edit Zone : DNS : Edit

just like https://github.com/ipfs-shipyard/ipfs-deploy/issues/148 said.

But it throws

HTTPError: Response code 400 (Bad Request)
 at Request.<anonymous> (...\node_modules\ipfs-deploy\node_modules\got\dist\source\as-promise\index.js:118:42)

So I dig into the mentioned line and add console.log(response.body) It prints out

{
  result: null,
  success: false,
  errors: [
    {
      code: 1049,
      message: 'Unable to edit this record. It was generated by Cloudflare and can be modified in your Web3 Gateway configuration.'
    }
  ],
  messages: []
}

It seems that it has to use the new endpoint to do the job.

banciur commented 2 years ago

You can take a look at my forks of ipfs-deploy and dnslink-cloudflare. I updated them but as project seems dead (previous PR I did with unpin feature hangs since April) I'm now not caring about backward compatibiliy or tests.

I didn't implement all cases as you could still use "old way" to host ipfs files without using Cloudflare web3 features.

emilianobonassi commented 1 year ago

@AnthonyTsang https://github.com/ipfs-shipyard/ipfs-deploy/pull/255