Class: SPF::Mod::Redirect
- Defined in:
- lib/spf/model.rb
Constant Summary collapse
- NAME =
'redirect'
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, #record_domain
Instance Method Summary collapse
- #init(options = {}) ⇒ Object
- #nested_record(server = nil, request = nil) ⇒ Object
- #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.
775 776 777 |
# File 'lib/spf/model.rb', line 775 def domain_spec @domain_spec end |
Instance Method Details
#init(options = {}) ⇒ Object
781 782 783 784 |
# File 'lib/spf/model.rb', line 781 def init( = {}) super() @nested_record = nil end |
#nested_record(server = nil, request = nil) ⇒ Object
820 821 822 823 824 825 826 827 |
# File 'lib/spf/model.rb', line 820 def nested_record(server=nil, request=nil) return @nested_record if @nested_record return nil unless server and request server.count_dns_interactive_term(request) = self.domain(server, request) sub_request = request.new_sub_request({:authority_domain => }) return @nested_record = server.select_record(sub_request) end |
#params ⇒ Object
791 792 793 |
# File 'lib/spf/model.rb', line 791 def params return @domain_spec end |
#parse_params(required = true) ⇒ Object
786 787 788 789 |
# File 'lib/spf/model.rb', line 786 def parse_params(required = true) @raw_params = @parse_text.dup self.parse_domain_spec(required) end |
#precedence ⇒ Object
779 |
# File 'lib/spf/model.rb', line 779 def precedence; 0.8; end |
#process(server, request, result) ⇒ Object
795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 |
# File 'lib/spf/model.rb', line 795 def process(server, request, result) server.count_dns_interactive_term(request) # Only perform redirection if no mechanism matched (RFC 4408, 6.1/1): return unless SPF::Result::NeutralByDefault === result # Create sub-request with mutated authorithy domain: sub_request = request.new_sub_request({:authority_domain => @domain_spec}) # Process sub-request: result = server.process(sub_request) @nested_record = sub_request.record # Translate result of sub-request (RFC 4408, 6.1/4): if SPF::Result::None === result server.throw_result(:permerror, request, "Redirect domain '#{}' has no applicable sender policy") end # Propagate any other results as-is: raise result end |