alpaca 1.0.2 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5b83cdbfb00c2aaab10f5b06cd8b096019e7d500
4
+ data.tar.gz: 46728adbd38c82af38342fad4bae359eb4668c5e
5
+ SHA512:
6
+ metadata.gz: e959f340854e63384d3e87c6bb2d819333698206627b32838c8af88b3e2bbc83a0508db965be49e1a60f65b20d09e72488daf3806caa20c32ae7f924be45f72b
7
+ data.tar.gz: b57f8032424964f876925ae488d7da00166b20e5433621d7b5a0983515d06f27feaf4e47f18bee653685ff9849dcc07becffd077707196cbd177ac81ced8cbc3
data/lib/rack/alpaca.rb CHANGED
@@ -1,15 +1,17 @@
1
1
  module Rack
2
2
  module Alpaca
3
3
  class << self
4
+
4
5
  attr_reader :whitelist, :blacklist
5
6
  attr_accessor :default
6
7
 
7
8
  def new (app)
9
+ @@config ||= YAML.load_file('config/alpaca.yml')
10
+
8
11
  @app = app
9
- config = YAML.load_file('config/alpaca.yml')
10
- @whitelist ||= config['whitelist'].map { |ip| IPAddr.new(ip) }.freeze
11
- @blacklist ||= config['blacklist'].map { |ip| IPAddr.new(ip) }.freeze
12
- @default = config['default']
12
+ @whitelist ||= Hash[@@config['whitelist'].map { |ip| [IPAddr.new(ip), true] }].freeze
13
+ @blacklist ||= Hash[@@config['blacklist'].map { |ip| [IPAddr.new(ip), true] }].freeze
14
+ @default = @@config['default']
13
15
 
14
16
  self
15
17
  end
@@ -39,9 +41,12 @@ module Rack
39
41
  end
40
42
 
41
43
  def check (type, req)
42
- instance_variable_get("@#{type}").any? do |ip|
43
- ip.include?(req.ip)
44
- end
44
+ req_ip = IPAddr.new(req.ip)
45
+ !instance_variable_get("@#{type}").select { |k, v| k.include? req_ip }.empty?
46
+ #instance_variable_get("@#{type}")[req_ip]
47
+ #instance_variable_get("@#{type}").any? do |ip|
48
+ # ip.include?(req.ip)
49
+ #end
45
50
  end
46
51
 
47
52
  alias_method :whitelisted?, :check
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module Alpaca
3
- VERSION = '1.0.2'
3
+ VERSION = '1.1.2'
4
4
  end
5
5
  end
@@ -1,7 +1,7 @@
1
1
  module Alpaca
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
- source_root File.expand_path('../../../../../../config', __FILE__)
4
+ source_root File.expand_path('../templates', __FILE__)
5
5
 
6
6
  desc 'Copies an Alpaca configuration file to your application.'
7
7
 
@@ -0,0 +1,12 @@
1
+ # The defaults below are reserved IPv4 and IPv6 addresses used for testing.
2
+ # Replace the IP addresses in this configuration file with your own.
3
+
4
+ whitelist:
5
+ - 0.0.0.1
6
+ - 198.18.0.0/15
7
+ - "::/128"
8
+ blacklist:
9
+ - 0.0.0.1
10
+ - 0.0.0.2
11
+ - "2001:db8::/32"
12
+ default: allow
@@ -13,13 +13,13 @@ describe 'Rack::Alpaca' do
13
13
  end
14
14
 
15
15
  it 'should have a whitelist' do
16
- Rack::Alpaca.whitelist.class.must_equal Array
17
- Rack::Alpaca.whitelist.each { |ip| ip.class.must_equal IPAddr }
18
- Rack::Alpaca.whitelist.must_equal @ips
16
+ Rack::Alpaca.whitelist.class.must_equal Hash
17
+ Rack::Alpaca.whitelist.each { |ip, v| ip.class.must_equal IPAddr }
18
+ Rack::Alpaca.whitelist.keys.must_equal @ips
19
19
  end
20
20
 
21
21
  it 'should permit IP addresses on the whitelist' do
22
- Rack::Alpaca.whitelist.each do |ip|
22
+ Rack::Alpaca.whitelist.each do |ip, v|
23
23
  get '/', {}, 'REMOTE_ADDR' => ip.to_s
24
24
  last_response.status.must_equal 200
25
25
  last_response.body.must_equal 'foo'
@@ -41,15 +41,15 @@ describe 'Rack::Alpaca' do
41
41
  end
42
42
 
43
43
  it 'should have a blacklist' do
44
- Rack::Alpaca.blacklist.class.must_equal Array
45
- Rack::Alpaca.whitelist.each { |ip| ip.class.must_equal IPAddr }
46
- Rack::Alpaca.blacklist.must_equal @ips
44
+ Rack::Alpaca.blacklist.class.must_equal Hash
45
+ Rack::Alpaca.whitelist.each { |ip, v| ip.class.must_equal IPAddr }
46
+ Rack::Alpaca.blacklist.keys.must_equal @ips
47
47
  end
48
48
 
49
49
  it 'should reject IP addresses on the blacklist' do
50
- Rack::Alpaca.blacklist.each do |ip|
50
+ Rack::Alpaca.blacklist.each do |ip, v|
51
51
  get '/', {}, 'REMOTE_ADDR' => ip.to_s
52
- unless Rack::Alpaca.whitelist.include? ip
52
+ unless Rack::Alpaca.whitelist.keys.include? ip
53
53
  last_response.status.must_equal 503
54
54
  last_response.body.must_equal "Request blocked\n"
55
55
  end
metadata CHANGED
@@ -1,110 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alpaca
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
5
- prerelease:
4
+ version: 1.1.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jeff Chao
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-27 00:00:00.000000000 Z
11
+ date: 2013-10-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rack
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: activesupport
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: 3.0.0
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: 3.0.0
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: minitest
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: simplecov
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rack-test
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  description: A rack middleware for whitelisting and blacklisting IPs
@@ -118,6 +105,7 @@ files:
118
105
  - lib/rack/alpaca/version.rb
119
106
  - lib/rack/alpaca.rb
120
107
  - lib/rails/generators/alpaca/install/install_generator.rb
108
+ - lib/rails/generators/alpaca/install/templates/alpaca.yml
121
109
  - Rakefile
122
110
  - README.md
123
111
  - spec/alpaca_controller_additions_spec.rb
@@ -131,28 +119,27 @@ files:
131
119
  homepage: http://github.com/jeffchao/alpaca
132
120
  licenses:
133
121
  - MIT
122
+ metadata: {}
134
123
  post_install_message:
135
124
  rdoc_options:
136
125
  - --charset=UTF-8
137
126
  require_paths:
138
127
  - lib
139
128
  required_ruby_version: !ruby/object:Gem::Requirement
140
- none: false
141
129
  requirements:
142
- - - ! '>='
130
+ - - '>='
143
131
  - !ruby/object:Gem::Version
144
132
  version: 1.9.3
145
133
  required_rubygems_version: !ruby/object:Gem::Requirement
146
- none: false
147
134
  requirements:
148
- - - ! '>='
135
+ - - '>='
149
136
  - !ruby/object:Gem::Version
150
137
  version: '0'
151
138
  requirements: []
152
139
  rubyforge_project:
153
- rubygems_version: 1.8.25
140
+ rubygems_version: 2.0.6
154
141
  signing_key:
155
- specification_version: 3
142
+ specification_version: 4
156
143
  summary: Whitelist and blacklist IPs
157
144
  test_files:
158
145
  - spec/alpaca_controller_additions_spec.rb
@@ -163,4 +150,3 @@ test_files:
163
150
  - spec/support/baz_controller.rb
164
151
  - spec/support/filters.rb
165
152
  - spec/support/foo_controller.rb
166
- has_rdoc: