Project

General

Profile

Feature #14771

Add method to create DNS resource from data string

Added by ioquatix (Samuel Williams) 9 days ago. Updated 9 days ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:87138]

Description

I recently played around with DNS over HTTPS.

I found that it's a little bit tricky to generate the appropriate resource using the Resolv::DNS::Resource hierarchy.

Here is what my code ended up:

        if klass = Resolv::DNS::Resource.get_class(answer["type"], resource_class::ClassValue)
          if klass < Resolv::DNS::Resource::DomainName
            resource = klass.new(Resolv::DNS::Name.create(answer["data"]))
          else
            resource = klass.new(answer["data"])
          end

It would be nice to have a simpler interface, e.g.

        if klass = Resolv::DNS::Resource.get_class(answer["type"], resource_class::ClassValue)
          klass.create(answer["data"])
        end

In this case, the Resource#create method would take a data string and convert it to a name if required.

The base resource class could just have alias create new, while the DomainName class could have:

def create(data)
  self.new(Name.create(data))
end

Or something like that.

History

#1 [ruby-core:87139] Updated by ioquatix (Samuel Williams) 9 days ago

The suggested code should be (missing resource =):

        if klass = Resolv::DNS::Resource.get_class(answer["type"], resource_class::ClassValue)
          resource = klass.create(answer["data"])
        end

#2 [ruby-core:87141] Updated by shevegen (Robert A. Heiler) 9 days ago

Although I myself have not used/needed Resolv::DNS::Resource yet,
if the proposed #create method does not conflict with anything in
Resolv, then I think it is fine to add it. (If I understood it correctly
then this is mostly alias-related, with the toplevel create doing a
bit more than just an alias, so it should not be a problem I think?)

Documentation should not be forgotten for the new toplevel create
method, if it is accepted by matz/the ruby core team.

#3 [ruby-core:87149] Updated by ioquatix (Samuel Williams) 9 days ago

The other record where it could be useful would be the TXT record which required to use a chunked string format.

Also available in: Atom PDF