Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement support for a "tdns plugin" to MUSIC (the MUlti-SIgner Controller) #54

Open
3 tasks
johanix opened this issue Aug 21, 2024 · 0 comments
Open
3 tasks

Comments

@johanix
Copy link
Owner

johanix commented Aug 21, 2024

MUSIC has a rather simple interface requirement (as described in https://github.com/DNSSEC-Provisioning/music/blob/main/music/updater.go). It essentially boils down to implementing three API calls:

Update(), FetchRRset() and RemoveRRset().

Each of these deal with DNS RRs in [][]dns.RR. An "updater plugin" in MUSIC will need to implement the existing interface and translate that to API calls into TDNS-{SERVER,AGENT}. TDNS doesn't really use []dns.RR much and instead uses its own RRset struct. Whether the conversion between []dns.RR and RRset is done in the plugin or in the TDNS end doesn't really matter.

However, if the RRset struct is a better alternative than []dns.RR then that's an argument for perhaps even converting MUSIC to use RRset instead of []dns.RR, but that's a separate discussion.

In the TDNS end we need three new endpoints:

  • /multisigner/update: MUSIC wants to send lists of dns.RRs to add and/or remove. TDNS has support for add/remove operations (as part of the DNS UPDATE support), so this is mostly a question of conversion of datastructures.
  • /multisigner/fetch-rrset: return a single RRset from a zone that TDNS serves.
  • /multisigner/remove-rrset: delete a single RRset from a zone that TDNS serves.

Then on the MUSIC side the actual plugin that accesses these endpoints need to be implemented. See DNSSEC-Provisioning/music#218

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant