spf 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/spf/model.rb +31 -31
- data/lib/spf/version.rb +1 -1
- data/lib/spf.rb +1 -0
- data/spf.gemspec +2 -2
- metadata +5 -2
data/lib/spf/model.rb
CHANGED
@@ -191,6 +191,13 @@ class SPF::Term
|
|
191
191
|
end
|
192
192
|
end
|
193
193
|
|
194
|
+
def domain(server, request)
|
195
|
+
if self.instance_variable_defined?(:@domain_spec) and @domain_spec
|
196
|
+
return @domain_spec
|
197
|
+
end
|
198
|
+
return request.authority_domain
|
199
|
+
end
|
200
|
+
|
194
201
|
def text
|
195
202
|
if self.instance_variable_defined?(:@text)
|
196
203
|
return @text
|
@@ -257,7 +264,7 @@ class SPF::Mech < SPF::Term
|
|
257
264
|
end
|
258
265
|
end
|
259
266
|
|
260
|
-
def parse_params
|
267
|
+
def parse_params(required = true)
|
261
268
|
# Parse generic string of parameters text (should be overridden in sub-classes):
|
262
269
|
if @parse_text.sub!(/^(.*)/, '')
|
263
270
|
@params_text = $1
|
@@ -288,18 +295,11 @@ class SPF::Mech < SPF::Term
|
|
288
295
|
)
|
289
296
|
end
|
290
297
|
|
291
|
-
def domain(server, request)
|
292
|
-
if self.instance_variable_defined?(:@domain_spec) and @domain_spec
|
293
|
-
return @domain_spec
|
294
|
-
end
|
295
|
-
return request.authority_domain
|
296
|
-
end
|
297
|
-
|
298
298
|
def match_in_domain(server, request, domain)
|
299
299
|
domain = self.domain(server, request) unless domain
|
300
300
|
|
301
|
-
ipv4_prefix_length = @ipv4_prefix_length
|
302
|
-
ipv6_prefix_length = @ipv6_prefix_length
|
301
|
+
ipv4_prefix_length = @ipv4_prefix_length || self.default_ipv4_prefix_length
|
302
|
+
ipv6_prefix_length = @ipv6_prefix_length || self.default_ipv6_prefix_length
|
303
303
|
packet = server.dns_lookup(domain, 'ANY')
|
304
304
|
server.count_void_dns_lookup(request) unless (rrs = packet)
|
305
305
|
|
@@ -345,7 +345,7 @@ class SPF::Mech < SPF::Term
|
|
345
345
|
|
346
346
|
NAME = 'a'
|
347
347
|
|
348
|
-
def parse_params
|
348
|
+
def parse_params(required = true)
|
349
349
|
self.parse_domain_spec
|
350
350
|
self.parse_ipv4_ipv6_prefix_lengths
|
351
351
|
end
|
@@ -375,7 +375,7 @@ class SPF::Mech < SPF::Term
|
|
375
375
|
|
376
376
|
NAME = 'all'
|
377
377
|
|
378
|
-
def parse_params
|
378
|
+
def parse_params(required = true)
|
379
379
|
# No parameters.
|
380
380
|
end
|
381
381
|
|
@@ -389,8 +389,8 @@ class SPF::Mech < SPF::Term
|
|
389
389
|
|
390
390
|
NAME = 'exists'
|
391
391
|
|
392
|
-
def parse_params
|
393
|
-
self.parse_domain_spec(
|
392
|
+
def parse_params(required = true)
|
393
|
+
self.parse_domain_spec(required)
|
394
394
|
# Other method of denoting "potentially ~infinite" netblocks?
|
395
395
|
@ip_netblocks << nil
|
396
396
|
end
|
@@ -418,8 +418,8 @@ class SPF::Mech < SPF::Term
|
|
418
418
|
|
419
419
|
NAME = 'ip4'
|
420
420
|
|
421
|
-
def parse_params
|
422
|
-
self.parse_ipv4_network(
|
421
|
+
def parse_params(required = true)
|
422
|
+
self.parse_ipv4_network(required)
|
423
423
|
@ip_netblocks << @ip_network
|
424
424
|
end
|
425
425
|
|
@@ -444,8 +444,8 @@ class SPF::Mech < SPF::Term
|
|
444
444
|
|
445
445
|
NAME = 'ip6'
|
446
446
|
|
447
|
-
def parse_params
|
448
|
-
self.parse_ipv6_network(
|
447
|
+
def parse_params(required = true)
|
448
|
+
self.parse_ipv6_network(required)
|
449
449
|
@ip_netblocks << @ip_network
|
450
450
|
end
|
451
451
|
|
@@ -471,8 +471,8 @@ class SPF::Mech < SPF::Term
|
|
471
471
|
@nested_record = nil
|
472
472
|
end
|
473
473
|
|
474
|
-
def parse_params
|
475
|
-
self.parse_domain_spec(
|
474
|
+
def parse_params(required = true)
|
475
|
+
self.parse_domain_spec(required)
|
476
476
|
end
|
477
477
|
|
478
478
|
def params
|
@@ -522,7 +522,7 @@ class SPF::Mech < SPF::Term
|
|
522
522
|
|
523
523
|
NAME = 'mx'
|
524
524
|
|
525
|
-
def parse_params
|
525
|
+
def parse_params(required = true)
|
526
526
|
self.parse_domain_spec
|
527
527
|
self.parse_ipv4_ipv6_prefix_lengths
|
528
528
|
end
|
@@ -574,7 +574,7 @@ class SPF::Mech < SPF::Term
|
|
574
574
|
class SPF::Mech::PTR < SPF::Mech
|
575
575
|
NAME = 'ptr'
|
576
576
|
|
577
|
-
def parse_params
|
577
|
+
def parse_params(required = true)
|
578
578
|
self.parse_domain_spec
|
579
579
|
end
|
580
580
|
|
@@ -614,7 +614,7 @@ class SPF::Mod < SPF::Term
|
|
614
614
|
end
|
615
615
|
|
616
616
|
def parse_name
|
617
|
-
@parse_text.sub!(/^(#{NAME})=/i, '')
|
617
|
+
@parse_text.sub!(/^(#{self.class::NAME})=/i, '')
|
618
618
|
if $1
|
619
619
|
@name = $1
|
620
620
|
else
|
@@ -662,11 +662,11 @@ class SPF::Mod < SPF::Term
|
|
662
662
|
|
663
663
|
attr_reader :domain_spec
|
664
664
|
|
665
|
-
NAME
|
666
|
-
PRECEDENCE
|
665
|
+
NAME = 'exp'
|
666
|
+
PRECEDENCE = 0.2
|
667
667
|
|
668
|
-
def parse_params
|
669
|
-
self.parse_domain_spec(
|
668
|
+
def parse_params(required = true)
|
669
|
+
self.parse_domain_spec(required)
|
670
670
|
end
|
671
671
|
|
672
672
|
def params
|
@@ -712,8 +712,8 @@ class SPF::Mod < SPF::Term
|
|
712
712
|
@nested_record = nil
|
713
713
|
end
|
714
714
|
|
715
|
-
def parse_params
|
716
|
-
self.parse_domain_spec(
|
715
|
+
def parse_params(required = true)
|
716
|
+
self.parse_domain_spec(required)
|
717
717
|
end
|
718
718
|
|
719
719
|
def params
|
@@ -852,13 +852,13 @@ class SPF::Record
|
|
852
852
|
# Looks like a modifier:
|
853
853
|
mod_text = $1
|
854
854
|
mod_name = $2.downcase
|
855
|
-
mod_class = self.class::MOD_CLASSES[mod_name]
|
855
|
+
mod_class = self.class::MOD_CLASSES[mod_name.to_sym]
|
856
856
|
if mod_class
|
857
857
|
# Known modifier.
|
858
858
|
term = mod = mod_class.new_from_string(mod_text)
|
859
859
|
if SPF::GlobalMod === mod
|
860
860
|
# Global modifier.
|
861
|
-
|
861
|
+
if @global_mods[mod_name]
|
862
862
|
raise SPF::DuplicateGlobalMod.new("Duplicate global modifier '#{mod_name}' encountered")
|
863
863
|
end
|
864
864
|
@global_mods[mod_name] = mod
|
data/lib/spf/version.rb
CHANGED
data/lib/spf.rb
CHANGED
data/spf.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "spf"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.10"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andrew Flury", "Julian Mehnle"]
|
12
|
-
s.date = "2013-10-
|
12
|
+
s.date = "2013-10-26"
|
13
13
|
s.description = " An object-oriented Ruby implementation of the Sender Policy Framework (SPF)\n e-mail sender authentication system, fully compliant with RFC 4408.\n"
|
14
14
|
s.email = ["code@agari.com", "aflury@agari.com", "jmehnle@agari.com"]
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-10-
|
13
|
+
date: 2013-10-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -119,6 +119,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
119
|
- - ! '>='
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '0'
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
hash: 3838605056692071434
|
122
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
126
|
none: false
|
124
127
|
requirements:
|