首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展Resolv::DNS以获取SPF资源

扩展Resolv::DNS以获取SPF资源
EN

Stack Overflow用户
提问于 2014-01-11 22:55:10
回答 1查看 378关注 0票数 1

我正在尝试扩展Resolv::DNS,以便能够获取SPF资源。为此,我简单地添加了以下内容:

代码语言:javascript
复制
class Resolv::DNS::Resource::IN::SPF < Resolv::DNS::Resource::IN::TXT
end

class Resolv::DNS::Resource::SPF < Resolv::DNS::Resource::TXT
end

当我现在使用SPF而不是TXT进行查询时,我得到一个空的哈希值。所以我试着进一步挖掘..在resolv.rb line 516上,类型类是在创建位于line 1257上的Message对象时作为第二个参数提供的。然而,这让我停止了对事物工作原理的理解。

有没有人能给我一些启发或指导?

EN

回答 1

Stack Overflow用户

发布于 2017-09-27 16:56:09

通过查询我的域,我发现Resolv似乎会自动为它无法识别的记录类型生成类。您可以做的是查询所有记录,然后根据类型代码进行过滤。SPF records have type code 99,所以你最终会得到这样的结果:

代码语言:javascript
复制
require 'resolv'

resolver = Resolv::DNS.new
all_records = resolver.getresources('example.com', Resolv::DNS::Resource::IN::ANY)
spf_records = all_records.select { |r| r.class::TypeValue == 99 }
spf_records.each do |record|
  puts(record.data)
end

查询类型代码的方式有点丑陋(Resolv在生成的类上创建了一个TypeValue常量,但据我所见,它没有添加从实例中获取此值的方法)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21063736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档