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 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(true)
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(true)
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(true)
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(true)
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 = 'exp'
666
- PRECEDENCE = 0.2
665
+ NAME = 'exp'
666
+ PRECEDENCE = 0.2
667
667
 
668
- def parse_params
669
- self.parse_domain_spec(true)
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(true)
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
- unless @global_mods[mod_name]
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
@@ -1,5 +1,5 @@
1
1
  module SPF
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
4
4
 
5
5
  # vim:sw=2 sts=2
data/lib/spf.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'spf/version'
1
2
  require 'spf/error'
2
3
  require 'spf/model'
3
4
  require 'spf/request'
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.9"
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-25"
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.9
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-25 00:00:00.000000000 Z
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: