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 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: