ip_restriction 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 68e94b900f295426882409cf6dfb3a304612f901
4
+ data.tar.gz: a132349a45a4e0bacd6401b9aac945a4dc7c7b68
5
+ SHA512:
6
+ metadata.gz: 2f334e979fa2aa66dab507cc7fd7bab013ea1671917e65db6b836b0d9872b44bb380a57d699591fd854124130caa9af0a4708def3470b887f749d1327c22ac03
7
+ data.tar.gz: cd12370e41a165550f59a28c287ce7b6bd36f14e60ae8b5cbbaf00af5b2095ae9de35dd5e126be18ceef83fb4460c47a20834e61f429e41c6a32ada09860165c
@@ -0,0 +1,10 @@
1
+ require 'ip_restriction/version'
2
+ require 'ip_restriction/ip_checker'
3
+ require 'ip_restriction/allowed_ips_constraint'
4
+ require 'ip_restriction/ip_loader'
5
+ require 'ip_restriction/configuration'
6
+ require 'ip_restriction/ips_retriever'
7
+
8
+ module IpRestriction
9
+ extend Configuration
10
+ end
@@ -0,0 +1,13 @@
1
+ module IpRestriction
2
+ class AllowedIpsConstraint
3
+ def matches?(request)
4
+ checker.allowed?(request.remote_ip)
5
+ end
6
+
7
+ private
8
+
9
+ def checker
10
+ @checker ||= IpChecker.new(IpsRetriever.new.office_ips)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module IpRestriction
2
+ module Configuration
3
+ DEFAULT_FILE_PATH = 'config/ip_restriction.yml'
4
+
5
+ attr_accessor :file_path
6
+
7
+ def configure
8
+ yield self
9
+ end
10
+
11
+ def file_path
12
+ @file_path || DEFAULT_FILE_PATH
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ require 'ipaddr'
2
+
3
+ module IpRestriction
4
+ class IpChecker
5
+ attr_reader :ranges
6
+
7
+ def initialize(ranges)
8
+ @ranges = ranges
9
+ end
10
+
11
+ def allowed?(ip)
12
+ ranges.any? do |range_or_ip|
13
+ IPAddr.new(range_or_ip).include?(IPAddr.new(ip))
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ require 'yaml'
2
+
3
+ module IpRestriction
4
+ class IpLoader
5
+ DEFAULT_IPS = ['127.0.0.1']
6
+
7
+ attr_reader :file_path
8
+
9
+ def initialize(file_path)
10
+ @file_path = file_path
11
+ end
12
+
13
+ def load
14
+ unless File.exist? file_path
15
+ warn "LwIpRestriction: file #{file_path} does not exist"
16
+ return DEFAULT_IPS
17
+ end
18
+ YAML.load_file(file_path)['ips']
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ module IpRestriction
2
+ class IpsRetriever
3
+ def office_ips
4
+ IpLoader.new(IpRestriction.file_path).load
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ module IpRestriction
2
+ class AllowedIpsConstraint
3
+ def matches?(request)
4
+ checker.allowed?(request.remote_ip)
5
+ end
6
+
7
+ private
8
+
9
+ def checker
10
+ @checker ||= IpChecker.new(IpsRetriever.new.office_ips)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module IpRestriction
2
+ VERSION = '0.0.1'
3
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ip_restriction
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Locaweb
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry-nav
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.0
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.2.4
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 0.2.0
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.2.4
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 3.1.0
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.1.0
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 3.1.0
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.1.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: rubocop
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.27.0
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.27.1
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.27.0
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 0.27.1
73
+ - !ruby/object:Gem::Dependency
74
+ name: yard
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: 0.8.0
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.8.7
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.8.0
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 0.8.7
93
+ - !ruby/object:Gem::Dependency
94
+ name: redcarpet
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: 3.2.0
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 3.2.2
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 3.2.0
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 3.2.2
113
+ description: Restrict some IPs to do something
114
+ email:
115
+ - developers@locaweb.com.br
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - lib/ip_restriction.rb
121
+ - lib/ip_restriction/allowed_ips_constraint.rb
122
+ - lib/ip_restriction/configuration.rb
123
+ - lib/ip_restriction/ip_checker.rb
124
+ - lib/ip_restriction/ip_loader.rb
125
+ - lib/ip_restriction/ips_retriever.rb
126
+ - lib/ip_restriction/locaweb_allowed_ips_constraint.rb
127
+ - lib/ip_restriction/version.rb
128
+ homepage: ''
129
+ licenses:
130
+ - MIT
131
+ metadata: {}
132
+ post_install_message:
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirements: []
147
+ rubyforge_project:
148
+ rubygems_version: 2.4.5
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: Restrict some IPs
152
+ test_files: []
153
+ has_rdoc: