coppertone 0.0.7 → 0.0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 739f6dacf79f523ba1cffcab857bd8e569260e48
4
- data.tar.gz: ae128f802f7ab9ab04c3f953ccaf133bf1378ceb
3
+ metadata.gz: 0b252230ab963c880a9621e06ccab4e80228df66
4
+ data.tar.gz: 4429d3c99f23114ee76ae1a3ebb9e8523fabcac2
5
5
  SHA512:
6
- metadata.gz: 6b299645448f6a340a39f608f69ebac56345fcd05296f17cf85bb78306154b51add899345853e5edfa95b157753e5cc8ae9e5e4f51922f6cf5d8f65cffcc96ec
7
- data.tar.gz: d13f36a9a62cb95fd6961cc9716944afdc992706ea727818ebf8fbe3a4dcfb30b8bb6c93622bb7cdfc8f52e31f322398bbbe27789639dc2dd488eb2659dd8e8c
6
+ metadata.gz: a81f77d79f3f6892093d051db6056412fd1b11906e15a923e7dfb0ab8e027be83aedfd0a680d0b794cee045acf940717cc9695747d0607cab7fae560da34b9ce
7
+ data.tar.gz: f539aa4c5f74a5469cafb28a66aa58b056e6cd4a4c071f0e14dd8be1e780dd4f8df20997d5b1948e4230469e11d8381ddfa5f2a28c59a12be02d1e1b3f3ea98a
data/.rubocop.yml CHANGED
@@ -4,6 +4,9 @@ AllCops:
4
4
  Metrics/AbcSize:
5
5
  Exclude:
6
6
  - 'Rakefile'
7
+ Metrics/BlockLength:
8
+ Exclude:
9
+ - 'spec/**/*'
7
10
  Metrics/LineLength:
8
11
  Enabled: false
9
12
  Metrics/MethodLength:
data/.travis.yml CHANGED
@@ -1,9 +1,12 @@
1
1
  sudo: false
2
2
  language: ruby
3
- env:
4
- - CODECLIMATE_REPO_TOKEN=437199ed4348853fa1dd6561b2e17a5668a7a6e78485d7ac3a21d12670fb6f2f
5
3
  rvm:
6
- - 2.2.5
7
- - 2.3.1
4
+ - 2.2.6
5
+ - 2.3.3
6
+ - 2.4.0
8
7
  - jruby-9.1.5.0
9
-
8
+ addons:
9
+ code_climate:
10
+ repo_token: 437199ed4348853fa1dd6561b2e17a5668a7a6e78485d7ac3a21d12670fb6f2f
11
+ after_success:
12
+ - bundle exec codeclimate-test-reporter
data/Gemfile CHANGED
@@ -3,5 +3,5 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in coppertone.gemspec
4
4
  gemspec
5
5
 
6
- gem 'simplecov', group: :test, require: false
7
6
  gem 'codeclimate-test-reporter', group: :test, require: nil
7
+ gem 'simplecov', group: :test, require: false
data/circle.yml ADDED
@@ -0,0 +1,3 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.4.0
@@ -5,8 +5,10 @@ module Coppertone
5
5
  attr_reader :domain_spec
6
6
 
7
7
  def target_name_from_domain_spec(macro_context, request_context)
8
- domain =
9
- domain_spec.expand(macro_context, request_context) if domain_spec
8
+ if domain_spec
9
+ domain =
10
+ domain_spec.expand(macro_context, request_context)
11
+ end
10
12
  Coppertone::Utils::DomainUtils.macro_expanded_domain(domain)
11
13
  end
12
14
 
@@ -2,7 +2,7 @@ module Coppertone
2
2
  class Mechanism
3
3
  # Implements the ip4 mechanism.
4
4
  class IPMechanism < Mechanism
5
- attr_reader :netblock
5
+ attr_reader :netblock, :cidr_length
6
6
  def self.create(attributes)
7
7
  new(attributes)
8
8
  end
@@ -11,7 +11,7 @@ module Coppertone
11
11
  super(attributes)
12
12
  unless attributes.blank?
13
13
  attributes = attributes[1..-1] if attributes[0] == ':'
14
- @netblock = parse_netblock(attributes)
14
+ @netblock, @cidr_length = parse_netblock(attributes)
15
15
  end
16
16
  raise Coppertone::InvalidMechanismError if @netblock.nil?
17
17
  end
@@ -31,13 +31,18 @@ module Coppertone
31
31
 
32
32
  def parse_netblock(ip_as_s)
33
33
  validate_no_leading_zeroes_in_cidr(ip_as_s)
34
- addr, cidr_length, dual = ip_as_s.split('/')
35
- return nil if dual
34
+ addr, cidr_length_as_s, dual = ip_as_s.split('/')
35
+ return [nil, nil] if dual
36
36
  network = IPAddr.new(addr)
37
- network = network.mask(cidr_length.to_i) unless cidr_length.blank?
38
- network
37
+ network = network.mask(cidr_length_as_s.to_i) unless cidr_length_as_s.blank?
38
+ cidr_length = cidr_length_as_s.blank? ? default_cidr(network) : cidr_length_as_s.to_i
39
+ [network, cidr_length]
39
40
  rescue IP_PARSE_ERROR
40
- nil
41
+ [nil, nil]
42
+ end
43
+
44
+ def default_cidr(network)
45
+ network.ipv6? ? 128 : 32
41
46
  end
42
47
 
43
48
  def match?(macro_context, _request_context)
@@ -12,8 +12,10 @@ module Coppertone
12
12
  end
13
13
 
14
14
  def target_name_from_domain_spec(macro_context, request_context)
15
- domain =
16
- domain_spec.expand(macro_context, request_context) if domain_spec
15
+ if domain_spec
16
+ domain =
17
+ domain_spec.expand(macro_context, request_context)
18
+ end
17
19
  Coppertone::Utils::DomainUtils.macro_expanded_domain(domain)
18
20
  end
19
21
 
@@ -1,3 +1,3 @@
1
1
  module Coppertone
2
- VERSION = '0.0.7'.freeze
2
+ VERSION = '0.0.8'.freeze
3
3
  end
@@ -23,6 +23,7 @@ describe Coppertone::Mechanism::IP4 do
23
23
  it 'should not fail if called with an IP v6' do
24
24
  mech = Coppertone::Mechanism::IP4.new(':fe80::202:b3ff:fe1e:8329')
25
25
  expect(mech.netblock).to eq(IPAddr.new('fe80::202:b3ff:fe1e:8329'))
26
+ expect(mech.cidr_length).to eq(128)
26
27
  expect(mech.to_s).to eq('ip4:fe80::202:b3ff:fe1e:8329')
27
28
  expect(mech).not_to be_includes_ptr
28
29
  expect(mech).not_to be_context_dependent
@@ -32,6 +33,7 @@ describe Coppertone::Mechanism::IP4 do
32
33
  it 'should work if called with an IP4' do
33
34
  mech = Coppertone::Mechanism::IP4.new(':1.2.3.4')
34
35
  expect(mech.netblock).to eq(IPAddr.new('1.2.3.4'))
36
+ expect(mech.cidr_length).to eq(32)
35
37
  expect(mech.to_s).to eq('ip4:1.2.3.4')
36
38
  expect(mech).not_to be_includes_ptr
37
39
  expect(mech).not_to be_context_dependent
@@ -41,6 +43,7 @@ describe Coppertone::Mechanism::IP4 do
41
43
  it 'should work if called with an IP4 with a pfxlen' do
42
44
  mech = Coppertone::Mechanism::IP4.new(':1.2.3.4/4')
43
45
  expect(mech.netblock).to eq(IPAddr.new('1.2.3.4/4'))
46
+ expect(mech.cidr_length).to eq(4)
44
47
  expect(mech.to_s).to eq('ip4:1.2.3.4/4')
45
48
  expect(mech).not_to be_includes_ptr
46
49
  expect(mech).not_to be_context_dependent
@@ -23,6 +23,7 @@ describe Coppertone::Mechanism::IP6 do
23
23
  it 'should not fail if called with an IP v4' do
24
24
  mech = Coppertone::Mechanism::IP6.new(':1.2.3.4')
25
25
  expect(mech.netblock).to eq(IPAddr.new('1.2.3.4'))
26
+ expect(mech.cidr_length).to eq(32)
26
27
  expect(mech).not_to be_dns_lookup_term
27
28
  end
28
29
 
@@ -30,6 +31,7 @@ describe Coppertone::Mechanism::IP6 do
30
31
  mech = Coppertone::Mechanism::IP6.new(':fe80::202:b3ff:fe1e:8329')
31
32
  expect(mech.netblock)
32
33
  .to eq(IPAddr.new('fe80::202:b3ff:fe1e:8329'))
34
+ expect(mech.cidr_length).to eq(128)
33
35
  expect(mech).not_to be_dns_lookup_term
34
36
  end
35
37
 
@@ -37,6 +39,7 @@ describe Coppertone::Mechanism::IP6 do
37
39
  mech = Coppertone::Mechanism::IP6.new(':fe80::202:b3ff:fe1e:8329/64')
38
40
  expect(mech.netblock)
39
41
  .to eq(IPAddr.new('fe80::202:b3ff:fe1e:8329/64'))
42
+ expect(mech.cidr_length).to eq(64)
40
43
  expect(mech).not_to be_dns_lookup_term
41
44
  end
42
45
 
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,12 @@
1
1
  require 'simplecov'
2
- require 'codeclimate-test-reporter'
3
- CodeClimate::TestReporter.start || SimpleCov.start
2
+
3
+ # save to CircleCI's artifacts directory if we're on CircleCI
4
+ if ENV['CIRCLE_ARTIFACTS']
5
+ dir = File.join(ENV['CIRCLE_ARTIFACTS'], 'coverage')
6
+ SimpleCov.coverage_dir(dir)
7
+ end
8
+
9
+ SimpleCov.start
4
10
 
5
11
  require 'coppertone'
6
12
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coppertone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter M. Goldstein
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2017-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dns_adapter
@@ -138,6 +138,7 @@ files:
138
138
  - LICENSE
139
139
  - README.md
140
140
  - Rakefile
141
+ - circle.yml
141
142
  - coppertone.gemspec
142
143
  - lib/coppertone.rb
143
144
  - lib/coppertone/class_builder.rb
@@ -267,7 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
268
  version: '0'
268
269
  requirements: []
269
270
  rubyforge_project:
270
- rubygems_version: 2.5.1
271
+ rubygems_version: 2.6.8
271
272
  signing_key:
272
273
  specification_version: 4
273
274
  summary: A Sender Policy Framework (SPF) toolkit