Class: SPF::Mod::Exp
- Defined in:
- lib/spf/model.rb
Constant Summary collapse
- NAME =
'exp'
Constants inherited from Term
Term::DOMAIN_END_PATTERN, Term::DOMAIN_SPEC_PATTERN, Term::HEXWORD_PATTERN, Term::IPV4_ADDRESS_PATTERN, Term::IPV6_ADDRESS_PATTERN, Term::MACRO_DELIMITER, Term::MACRO_EXPAND_PATTERN, Term::MACRO_LITERAL_PATTERN, Term::MACRO_STRING_PATTERN, Term::MACRO_TRANSFORMERS_PATTERN, Term::NAME_PATTERN, Term::QNUM_PATTERN, Term::TOPLABEL_PATTERN, Term::TWO_HEXWORDS_OR_IPV4_ADDRESS_PATTERN
Instance Attribute Summary collapse
-
#domain_spec ⇒ Object
readonly
Returns the value of attribute domain_spec.
Attributes inherited from Term
#errors, #ip_address, #ip_netblocks, #ip_network, #ipv4_prefix_length, #ipv6_prefix_length, #raw_params
Instance Method Summary collapse
- #params ⇒ Object
- #parse_params(required = true) ⇒ Object
- #precedence ⇒ Object
- #process(server, request, result) ⇒ Object
Methods inherited from SPF::Mod
#initialize, #parse, #parse_end, #parse_name, #to_s
Methods inherited from Term
#domain, #error, #initialize, new_from_string, #parse_domain_spec, #parse_ipv4_address, #parse_ipv4_ipv6_prefix_lengths, #parse_ipv4_network, #parse_ipv4_prefix_length, #parse_ipv6_address, #parse_ipv6_network, #parse_ipv6_prefix_length, #text
Constructor Details
This class inherits a constructor from SPF::Mod
Instance Attribute Details
#domain_spec ⇒ Object (readonly)
Returns the value of attribute domain_spec.
728 729 730 |
# File 'lib/spf/model.rb', line 728 def domain_spec @domain_spec end |
Instance Method Details
#params ⇒ Object
739 740 741 |
# File 'lib/spf/model.rb', line 739 def params return @domain_spec end |
#parse_params(required = true) ⇒ Object
734 735 736 737 |
# File 'lib/spf/model.rb', line 734 def parse_params(required = true) @raw_params = @parse_text.dup self.parse_domain_spec(required) end |
#precedence ⇒ Object
732 |
# File 'lib/spf/model.rb', line 732 def precedence; 0.2; end |
#process(server, request, result) ⇒ Object
743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 |
# File 'lib/spf/model.rb', line 743 def process(server, request, result) begin exp_domain = @domain_spec.new({:server => server, :request => request}) txt_packet = server.dns_lookup(exp_domain, 'TXT') txt_rrs = txt_packet.answer.select {|x| x.type == 'TXT'}.map {|x| x.answer} unless text_rrs.length > 0 server.throw_result(:permerror, request, "No authority explanation string available at domain '#{exp_domain}'") # RFC 4408, 6.2/4 end unless text_rrs.length == 1 server.throw_result(:permerror, request, "Redundant authority explanation strings found at domain '#{exp_domain}'") # RFC 4408, 6.2/4 end explanation = SPF::MacroString.new( :text => txt_rrs[0].char_str_list.join(''), :server => server, :request => request, :is_explanation => true ) request.state(:authority_explanation, explanation) rescue SPF::DNSError, SPF::Result::Error # Ignore DNS and other errors. end return request end |