This Pull Requests adds support for the SVCB and HTTPS records to the
BUNNY_DNS provider.
- I'm not 100% sure how to make the code look better when it comes to
handling the merging/separating Target/Params from the Value record
(Bunny.net uses a single `Value`). Happy to hear any feedback about
this.
- ~~Tests work... except for `17:HTTPS:Change_HTTPS_params-empty` and
`19:SVCB:Change_SVCB_params-empty` - but this is a requirement from
Bunny.net's side. Not sure if there's anything that needs to be added to
dnscontrol to handle this scenario. (This would be something for
`auditrecords.go`, but there's no module for SVCB/HTTPS that I can
see)~~
## Summary
- Add support for DNScale DNS hosting service (https://dnscale.eu)
- Full CRUD operations for DNS records via DNScale REST API
- Support for common record types: A, AAAA, CNAME, MX, TXT, NS, CAA,
PTR, SRV, SSHFP, TLSA, ALIAS, HTTPS, SVCB
- Automatic zone management with EnsureZoneExists
- Integration test profile included
## Limitations
- Apex NS records are managed automatically by DNScale
- Empty TXT records not supported
- TXT records with leading/trailing whitespace not supported
- TXT records with unescaped double quotes not supported
- Null MX records not supported
## Test plan
- [x] Integration tests pass (all record types)
- [x] Documentation added
---------
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
# Issue
There exists an SPF record with "Ip4:" instead of "ip4". We should be
gracious and parse it.
# Resolution
Be case-insensitive for a, mx, ip4: and ip6: keywords.
Fixes https://github.com/StackExchange/dnscontrol/issues/3981
## Summary
Fixes#3965
Investigation revealed that DigitalOcean's SOA support is too limited to
be useful in DNSControl:
- While the API documentation mentions SOA records exist, only the TTL
can be modified
- The SOA record cannot be deleted
- This makes it impractical to manage via DNSControl
Changes made:
- Disabled `CanUseSOA` capability in the DigitalOcean provider (with
comment "despite docs")
- Updated provider documentation to remove SOA from supported record
types
- Added clarification explaining why SOA is not supported
- Updated the provider feature matrix table to reflect SOA is not
supported
## Test plan
- [x] Reviewed the DigitalOcean API documentation
- [x] Confirmed the limitation matches the test failures from #3963
- [x] Updated all relevant documentation files
- [x] Provider capability correctly set to `Cannot()`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
Fix a format string that used `%s` where `%q` is more appropriate, to
escape the string fully.
This addresses the feedback in #3961 that I didn't get done in time to
be merged.
---------
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
Fixes#3612
It did work if you used the deprecated `create-domains` command, but now
it will also work correctly with the `preview` and `push` commands.
The fetching of zones was already implemented, but it didn't return the
list of domains. I kept the existing implementation where it only
fetches while locked. Both ID lookup and zone listing use the
internally-cached zone list, so the list is still fetched only once.
# Issue
The change of the interface introduced in 4.27.1 causes some issues if
the zone does not exist and we're running the preview command.
# Resolution
Fix the signature for EnsureZoneExists() in BIND so that it can be used
as a zone-creator.
Fixes https://github.com/StackExchange/dnscontrol/issues/3939
ClouDNS uses the same API for DNS and registrar-related operations.
Following the pattern I saw in other provider/registrar combos (autodns,
cscglobal), I implemented the registry call in the `cloudnsProvider`
object type, and when used as a registry it creates an additional
instance of the Provider.
_Incidentally this causes rate-limiting functionality not to function
optimally because each of the instances—the provider and registrar—have
their own requestLimit object, causing the rate limit to be tracked and
applied within each separately. I'm going to follow up with a PR that
will improve the API rate-limit implementation for ClouDNS._
The ClouDNS nameserver API responds with different structures apparently
depending on the number of name servers that the domain has. I observed
three on the same domain:
1. When there are 2 domain names for non-ClouDNS name servers, the
response is an array of name server strings `["abc.ns.cloudflare.net",
"def.ns.cloudflare.net"]`
2. When there are 4 ClouDNS name servers, the response is an object with
string keys containing the 4 entries
`{"1":"pns1.cloudns.net","2":"pns2.cloudns.net","3":"pns3.cloudns.net","4":"pns4.cloudns.net"}`
3. When there are 5 name servers, the response is an object with string
keys containing 8 entries included 3 blank values
`{"1":"pns1.cloudns.net","2":"pns2.cloudns.net","3":"pns3.cloudns.net","4":"pns4.cloudns.net","5":"abc.ns.cloudflare.net","6":"","7":"","8":""}`
This covers all of those cases, plus the possible case where the array
contains blank strings.
The new `setNameservers` API call needed to send multiple copies of the
same key `nameservers[]` in the query value, which is supported by the
http query values object, but was not possible with the existing call
pattern because the `get` function was built to accept a string map
instead of a query values object. So I refactored `get` into a wrapper
function that converts the map into a query values object, which calls
the new `getWithQuery` function with the query values object.
---------
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
BunnyDNS now supports TLS records on their console
<!--
## Before submiting a pull request
Please make sure you've run the following commands from the root
directory.
bin/generate-all.sh
(this runs commands like "go generate", fixes formatting, and so on)
## Release changelog section
Help keep the release changelog clear by pre-naming the proper section
in the GitHub pull request title.
Some examples:
* CICD: Add required GHA permissions for goreleaser
* DOCS: Fixed providers with "contributor support" table
* ROUTE53: Allow R53_ALIAS records to enable target health evaluation
More examples/context can be found in the file .goreleaser.yml under the
'build' > 'changelog' key.
!-->
Signed-off-by: baalajimaestro <baalajimaestro@ptr.moe>
<!--
## Before submiting a pull request
Please make sure you've run the following commands from the root
directory.
bin/generate-all.sh
(this runs commands like "go generate", fixes formatting, and so on)
## Release changelog section
Help keep the release changelog clear by pre-naming the proper section
in the GitHub pull request title.
Some examples:
* CICD: Add required GHA permissions for goreleaser
* DOCS: Fixed providers with "contributor support" table
* ROUTE53: Allow R53_ALIAS records to enable target health evaluation
More examples/context can be found in the file .goreleaser.yml under the
'build' > 'changelog' key.
!-->
Hello,
This pull request add the GeoDNS feature for ClouDNS.
Their API has 2 fields for adding a location, I choose to use only
"geodns-code" because it is more user-friendly.
Following the advice from @tlimoncelli the new metadata name is
``cloudns_geodns_code``
```
// Example syntax using geodns-code instead of geodns-location
A("test", "1.2.3.4", {cloudns_geodns_code: "US"});
A("test", "1.2.3.4", {cloudns_geodns_code: "FR"});
A("test", "1.2.3.4", {cloudns_geodns_code: "PL"});
```
More tests have been added and they all pass!
To compare two records, i have to replace the value "DEFAULT" with an
empty string temporary.
Their API always return "DEFAULT" as value by default instead of an
empty string for any dns record which uses their geodns feature.
```
// API return something like this if your account has GeoDNS and the dns record has GeoDNS
{"id":"XXXX","type":"A","host":"","record":"1.2.3.7","dynamicurl_status":0,"failover":"0","ttl":"300","geodns-location":"2","geodns-location-name":"Africa","geodns-location-code":"AFR","status":1}
// API return something like this if your account doesn't have GeoDNS feature or the dns record is not compatible with their GeoDNS
{"id":"XXXX","type":"TXT","host":"","record":"test","failover":"0","ttl":"3600","status":1}
```
If this implementation is good enough, i will update the documentation
("ClouDNS > Metadata section")
Prior to this it would only work if you did
```js
NewDnsProvider("bind","BIND" {"stuff": "stuff"})
```
But it wouldn't support omitting the optional provider type and
specifying the extra object.
```js
NewDnsProvider("bind", {"stuff": "stuff"})
```
Fixes#3946
<!--
## Before submiting a pull request
Please make sure you've run the following commands from the root
directory.
bin/generate-all.sh
(this runs commands like "go generate", fixes formatting, and so on)
## Release changelog section
Help keep the release changelog clear by pre-naming the proper section
in the GitHub pull request title.
Some examples:
* CICD: Add required GHA permissions for goreleaser
* DOCS: Fixed providers with "contributor support" table
* ROUTE53: Allow R53_ALIAS records to enable target health evaluation
More examples/context can be found in the file .goreleaser.yml under the
'build' > 'changelog' key.
!-->
Changes to APEX NS records will be ignored by their DNS server.
<!--
## Before submiting a pull request
Please make sure you've run the following commands from the root
directory.
bin/generate-all.sh
(this runs commands like "go generate", fixes formatting, and so on)
## Release changelog section
Help keep the release changelog clear by pre-naming the proper section
in the GitHub pull request title.
Some examples:
* CICD: Add required GHA permissions for goreleaser
* DOCS: Fixed providers with "contributor support" table
* ROUTE53: Allow R53_ALIAS records to enable target health evaluation
More examples/context can be found in the file .goreleaser.yml under the
'build' > 'changelog' key.
!-->
Support `URL` and `URL301`, mark `PORKBUN_URLFWD` as DEPRECATED, maybe
delete after one year or shorter.
Manually tested, and integration test mostly passed except #3950close#3793
There was already a [Limiter](https://pkg.go.dev/golang.org/x/time/rate)
in use here to keep the rate of requests below the apparent limit.
The ClouDNS API doesn't give any sort of proper API response when rate
limit is reached. It's a 200 status code and an error message in the
JSON body, and no headers that would help to track or back off for the
right amount of time.
There was a comment in the implementation that mentions an undocumented
10-per-second limit, while the error message they give today says that
the limit is 20 per second. I kept the settings on the Limiter the same
since 10 per second should be plenty fast.
But it will now retry the request when the rate limit is reached. At the
same time, it "steals" some reservations on `rate.Limiter` to quiet
other concurrent ClouDNS API calls for about half a second. This seems
to be plenty to fix my rate-limit issues. (I tested with 20 domains with
ClouDNS as both registrar and DNS provider using the functionality in
#3961.)
When rate limit is reached, it emits a warn-level message. This follows
a pattern I see in `adguardhome` and `desec` providers but I don't love
it—it's less important and less actionable than other warn-level
messages in the project.
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
## Summary
This PR clarifies the DigitalOcean provider's capabilities by replacing
question marks (`❔`) with explicit feature flags in both the provider
code and documentation tables.
## Changes
- Updated `providers/digitalocean/digitaloceanProvider.go` to explicitly
declare support or lack of support for 15 additional record types and
features
- Updated `documentation/provider/index.md` to reflect these explicit
capabilities in the provider feature tables
- All changes based on DigitalOcean's API documentation
## Features Now Explicitly Documented
**Supported:**
- SOA records (Can)
- CAA records (already documented, maintained)
- SRV records (already documented, maintained)
- Concurrency (Can)
- Get Zones (Can)
**Not Supported (per DigitalOcean docs):**
- ALIAS, DNAME records
- DNSSEC-related: DNSKEY, DS, AutoDNSSEC
- DHCID, HTTPS, LOC, NAPTR, PTR, SMIMEA, SSHFP, SVCB, TLSA records
## Testing was done
These are documentation/capability declaration changes only - no
functional code changes. Unit tests ran locally without errors and the
docs generated without errors.
The capabilities system will now properly validate configurations
against DigitalOcean's actual limitations.
## Something to consider
The `commands/types/dnscontrol.d.ts` file changes during documentation
generation, but I haven't added that to this PR because it seems
unrelated. Claude also thinks that this file is why the
`check-git-status` GHA is failing. Should I go ahead and add this file
to prevent this from tripping up future PRs?
🤖 PR summary initially generated with [Claude
Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Bumps alpine from 3.22.2 to 3.23.2.
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
<!--
## Before submiting a pull request
Please make sure you've run the following commands from the root
directory.
bin/generate-all.sh
(this runs commands like "go generate", fixes formatting, and so on)
## Release changelog section
Help keep the release changelog clear by pre-naming the proper section
in the GitHub pull request title.
Some examples:
* CICD: Add required GHA permissions for goreleaser
* DOCS: Fixed providers with "contributor support" table
* ROUTE53: Allow R53_ALIAS records to enable target health evaluation
More examples/context can be found in the file .goreleaser.yml under the
'build' > 'changelog' key.
!-->
<!--
## Before submiting a pull request
Please make sure you've run the following commands from the root
directory.
bin/generate-all.sh
(this runs commands like "go generate", fixes formatting, and so on)
## Release changelog section
Help keep the release changelog clear by pre-naming the proper section
in the GitHub pull request title.
Some examples:
* CICD: Add required GHA permissions for goreleaser
* DOCS: Fixed providers with "contributor support" table
* ROUTE53: Allow R53_ALIAS records to enable target health evaluation
More examples/context can be found in the file .goreleaser.yml under the
'build' > 'changelog' key.
!-->
# Issue
Fixes https://github.com/StackExchange/dnscontrol/issues/3918
New "modern" types like RP had multiple bugs:
* When RP() has an error (for example, wrong # of arguments) no error
was printed.
* DefaultTTL() was ignored.
* FQDNs listed in RP() not properly checked to verify the are part of
the D()/D_EXTEND() domain.
* REFACTOR: Implement "double domain" checking and the skip_fqdn_check
override (instead of in validate.go).
* REFACTOR: Always list "names" as Raw, then ASCII, then Unicode.
* REFACTOR: Generate domain DisplayName once, use many places
# Resolution
Fixed and test-cases added to prevent regressions.
# Issue
The "fmt" command doesn't work like Terraform fmt, gofmt, and others. It
should:
* Default should DTRT: Format the existing dnsconfig.js file in place
* Not output a filename if no changes were made
* Don't modify the file's timestamp if no changes were made
* Accept stdin and stdout
# Resolution
All that.
# Potential breaking change
The default for '-o' is now dnsconfig.js instead of stdout. This may
break shell scripts that redirect stdout instead of using '-o' to
specify an output filename. If you use ">" instead of "-o", please
switch to "-o".
Fixes https://github.com/StackExchange/dnscontrol/issues/3890
# Issue
`no_ns` is undocumented.
# Resolution
Add it to the nameserver examples page and the `D()` page.
---------
Co-authored-by: Jeffrey Cafferata <jeffrey@jcid.nl>
Co-authored-by: ecraven <craven@gmx.net>
Co-authored-by: Peter <peter@nexoid.at>
# Issue
GItHub Discussions can only have 1 category. With a separate category
for the meeting announcements, it can't also appear in the
announcements, which is where people look for it. This lead to bad
user-experience.
# Resolution
Use a label instead, and post the announcements to the "Announcements"
category. Update the link to use labels.
Bumps
[actions/upload-artifact](https://github.com/actions/upload-artifact)
from 5.0.0 to 6.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>v6 - What's new</h2>
<blockquote>
<p>[!IMPORTANT]
actions/upload-artifact@v6 now runs on Node.js 24 (<code>runs.using:
node24</code>) and requires a minimum Actions Runner version of 2.327.1.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>Node.js 24</h3>
<p>This release updates the runtime to Node.js 24. v5 had preliminary
support for Node.js 24, however this action was by default still running
on Node.js 20. Now this action by default will run on Node.js 24.</p>
<h2>What's Changed</h2>
<ul>
<li>Upload Artifact Node 24 support by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/719">actions/upload-artifact#719</a></li>
<li>fix: update <code>@actions/artifact</code> for Node.js 24 punycode
deprecation by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/744">actions/upload-artifact#744</a></li>
<li>prepare release v6.0.0 for Node.js 24 support by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/745">actions/upload-artifact#745</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0">https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b7c566a772"><code>b7c566a</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/745">#745</a>
from actions/upload-artifact-v6-release</li>
<li><a
href="e516bc8500"><code>e516bc8</code></a>
docs: correct description of Node.js 24 support in README</li>
<li><a
href="ddc45ed9bc"><code>ddc45ed</code></a>
docs: update README to correct action name for Node.js 24 support</li>
<li><a
href="615b319bd2"><code>615b319</code></a>
chore: release v6.0.0 for Node.js 24 support</li>
<li><a
href="017748b48f"><code>017748b</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/744">#744</a>
from actions/fix-storage-blob</li>
<li><a
href="38d4c7997f"><code>38d4c79</code></a>
chore: rebuild dist</li>
<li><a
href="7d27270e0c"><code>7d27270</code></a>
chore: add missing license cache files for <code>@actions/core</code>,
<code>@actions/io</code>, and mi...</li>
<li><a
href="5f643d3c94"><code>5f643d3</code></a>
chore: update license files for <code>@actions/artifact</code><a
href="https://github.com/5"><code>@5</code></a>.0.1 dependencies</li>
<li><a
href="1df1684032"><code>1df1684</code></a>
chore: update package-lock.json with <code>@actions/artifact</code><a
href="https://github.com/5"><code>@5</code></a>.0.1</li>
<li><a
href="b5b1a91840"><code>b5b1a91</code></a>
fix: update <code>@actions/artifact</code> to ^5.0.0 for Node.js 24
punycode fix</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/cache](https://github.com/actions/cache) from 4.3.0 to
5.0.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/releases">actions/cache's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.1</h2>
<blockquote>
<p>[!IMPORTANT]
<strong><code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of
<code>2.327.1</code>.</strong></p>
<p>If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<hr />
<h1>v5.0.1</h1>
<h2>What's Changed</h2>
<ul>
<li>fix: update <code>@actions/cache</code> for Node.js 24 punycode
deprecation by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1685">actions/cache#1685</a></li>
<li>prepare release v5.0.1 by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1686">actions/cache#1686</a></li>
</ul>
<h1>v5.0.0</h1>
<h2>What's Changed</h2>
<ul>
<li>Upgrade to use node24 by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1630">actions/cache#1630</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1684">actions/cache#1684</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v5...v5.0.1">https://github.com/actions/cache/compare/v5...v5.0.1</a></p>
<h2>v5.0.0</h2>
<blockquote>
<p>[!IMPORTANT]
<strong><code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of
<code>2.327.1</code>.</strong></p>
<p>If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<hr />
<h2>What's Changed</h2>
<ul>
<li>Upgrade to use node24 by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1630">actions/cache#1630</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1684">actions/cache#1684</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v4.3.0...v5.0.0">https://github.com/actions/cache/compare/v4.3.0...v5.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
changelog</a>.</em></p>
<blockquote>
<h3>5.0.1</h3>
<ul>
<li>Update <code>@azure/storage-blob</code> to <code>^12.29.1</code> via
<code>@actions/cache@5.0.1</code> <a
href="https://redirect.github.com/actions/cache/pull/1685">#1685</a></li>
</ul>
<h3>5.0.0</h3>
<blockquote>
<p>[!IMPORTANT]
<code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of <code>2.327.1</code>.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9255dc7a25"><code>9255dc7</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1686">#1686</a>
from actions/cache-v5.0.1-release</li>
<li><a
href="8ff5423e8b"><code>8ff5423</code></a>
chore: release v5.0.1</li>
<li><a
href="9233019a15"><code>9233019</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1685">#1685</a>
from salmanmkc/node24-storage-blob-fix</li>
<li><a
href="b975f2bb84"><code>b975f2b</code></a>
fix: add peer property to package-lock.json for dependencies</li>
<li><a
href="d0a0e18134"><code>d0a0e18</code></a>
fix: update license files for <code>@actions/cache</code>,
fast-xml-parser, and strnum</li>
<li><a
href="74de208dcf"><code>74de208</code></a>
fix: update <code>@actions/cache</code> to ^5.0.1 for Node.js 24
punycode fix</li>
<li><a
href="ac7f1152ea"><code>ac7f115</code></a>
peer</li>
<li><a
href="b0f846b50b"><code>b0f846b</code></a>
fix: update <code>@actions/cache</code> with storage-blob fix for
Node.js 24 punycode depr...</li>
<li><a
href="a783357455"><code>a783357</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1684">#1684</a>
from actions/prepare-cache-v5-release</li>
<li><a
href="3bb0d78750"><code>3bb0d78</code></a>
docs: highlight v5 runner requirement in releases</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/cache/compare/v4.3.0...v5.0.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Context
Filenames for providers are not consistent.
https://github.com/StackExchange/dnscontrol/issues/3584#issuecomment-3633894582
## Changes
Rename files:
```
R documentation/provider/azure_dns.md -> documentation/provider/azuredns.md
R documentation/provider/azure_private_dns.md -> documentation/provider/azureprivatedns.md
R documentation/provider/bunny_dns.md -> documentation/provider/bunnydns.md
R documentation/provider/gandi_v5.md -> documentation/provider/gandiv5.md
R documentation/provider/hetzner_v2.md -> documentation/provider/hetznerv2.md
R providers/gandiv5/gandi_v5Provider.go -> providers/gandiv5/gandiv5Provider.go
```
## Verify
- `go build` still works.
- docs generation still works for me locally.
- I see. the Azure docs in the test site for the docs again after
f5767f4
---------
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
Either setting these new options OR using --notify on the commandline
will send notification for any specific execution.
Fixes#3906
In a second commit (feel free to remove) I added some logging to
indicate that notifications were enabled or not (useful when testing
each case).
I've manually tested combinations of the various options, for both
preview and push:
* --notify set or unset on commandline
* notify_on_* set to "true" or "ASDAS" or "false" or not mentioned
All seem to provide the correct logging line - invalid boolean values
are considered false (not an error).
I've made an attempt at documentation of the options, not sure if you
want it elsewhere as well.
<!--
## Before submiting a pull request
Please make sure you've run the following commands from the root
directory.
bin/generate-all.sh
(this runs commands like "go generate", fixes formatting, and so on)
## Release changelog section
Help keep the release changelog clear by pre-naming the proper section
in the GitHub pull request title.
Some examples:
* CICD: Add required GHA permissions for goreleaser
* DOCS: Fixed providers with "contributor support" table
* ROUTE53: Allow R53_ALIAS records to enable target health evaluation
More examples/context can be found in the file .goreleaser.yml under the
'build' > 'changelog' key.
!-->
# Issue
Fixes https://github.com/StackExchange/dnscontrol/issues/3898
After the v4.28.0 upgrade, the `%D` option in BIND's `"filenameformat"`
option no longer works (returns "") when reading the zonefile (but it
works for writing to one!). As a result, "push" always re-creates the
zonefile even if there are no changes.
# Resolution
Fix `%D` in the zone reading code.
# Issue
bin/generate-all.sh is trying to reformat VSCode's launch.json, but it
can't because it is not strict json.
```
Reformatting: ./.vscode/launch.json
ERROR: Expecting value: line 17 column 17 (char 465)
```
# Resolution
bin/generate-all.sh should skip the .vscode directory.