Conversation
Implements the libdns record interfaces and ZoneLister for mittwald mStudio with the official client github.com/mittwald/api-client-go. mStudio keeps one DNS zone per name with one record set per type (A and AAAA together, CNAME, MX, TXT, SRV, CAA); records are read, merged and written per set. Sets managed by mStudio are not returned. The transport follows the rate limit headers, sends the event of the last write as If-Event-Reached and repeats a few recoverable responses, failing fast instead of waiting long, as libdns asks. Tested with unit tests against a fake API and with libdnstest against a real mStudio domain.
- TTLs are clamped to 60s..1 day, and the TTL written applies to the whole record set (A and AAAA share one), as with libdns/hetzner and libdns/ovh; DeleteRecords no longer compares TTLs. - The zone of a name whose last record goes is deleted, except the domain's own zone, a zone with a set mStudio manages and a zone with zones below it. A CAA set is unset first: mStudio refuses CAA for a name for good once its zone was deleted with a CAA set. - 412 is only repeated while the awaited event is not reached; a conflict such as a CNAME next to other records is final. - Delete filters without data, exact duplicate check on append, zone names in any spelling, context-aware waiting for other calls, changes limited to the requested zone.
gucci-on-fleek
approved these changes
Sep 23, 2026
Member
There was a problem hiding this comment.
This looks great; thanks for the contribution! I've created a new repo at libdns/mittwald and given you access.
Member
|
@mholt: I was able to create the new |
Author
|
Thanks a lot for the quick and uncomplicated review! I'll wait for the caddy-dns repo and push the module as soon as it's there. |
Author
|
Finalized the caddy module. Can you create the repo @mholt? |
Contributor
|
@gucci-on-fleek Thanks for reviewing and for the ping! I've elevated your privileges so you won't be blocked by me. However do not feel obligated in any way of course :) @twiesing Thank you for the contribution -- I have also created a caddy-dns repository for you. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Provider for mittwald mStudio.
libdns/libdns#230
provider.go: the libdns interfaces andZoneListerconvert.go: mStudio record sets ↔ libdns record types, TTL handlingclient.go: calls of the official clientgithub.com/mittwald/api-client-goand the transport (rate limit,If-Event-Reached, retries)provider_test.go: unit tests against a fake APIlibdnstest/: the libdns test suite against a live domain, as a separate module