diff --git a/providers-scraper-util.js b/providers-scraper-util.js new file mode 100644 index 0000000..8f79f90 --- /dev/null +++ b/providers-scraper-util.js @@ -0,0 +1,45 @@ +// This script is used to scrape the DNS providers from the https://go-acme.github.io/lego/dns/ website +// It will fetch the DNS providers and their respective codes and store them in a Map object +// You can copy the code into the browser console and run it to get the Map object +// Dont forget to remove providers that are not supported by the current acme-lego version that is being used + +const providerArray = []; +document.querySelectorAll('table a[href^="/lego/dns/"]').forEach((provider) => { + fetch(provider.href) + .then(function(response) { return response.text() }) + .then(function(html) { + const parser = new DOMParser(); + const doc = parser.parseFromString(html, "text/html") + + const providerCodes = Array.from(doc.querySelector('table tbody').querySelectorAll('code')).map(code => code.innerHTML); + const providerId = provider.href.match(/.*?\/dns\/(.*?)\//)[1]; + const providerName = provider.innerHTML; + providerArray.push({providerId, providerName, providerCodes}); + }) + .catch(function(err) { + console.log('Failed to fetch page '+provider.href+': ', err); + }); +}) + +// After fetching all the providers, sort them by providerName. You have to run this line in the console after the fetch is done + +providerArray.sort((a,b) => a.providerName.localeCompare(b.providerName)) + + +// Create Dropdown items for the providers + +providerDropdownItems = ""; +providerArray.forEach(provider => { + providerDropdownItems += '