spf 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|