da99_rack_protect 2.0.2 → 3.0.0
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 +4 -4
- data/VERSION +1 -1
- data/lib/da99_rack_protect.rb +23 -27
- data/lib/da99_rack_protect/0050_Ensure_Host.rb +7 -7
- data/specs/helpers/config.ru +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a61fb2c3ed3d0700440b6aaeb8d9fceb2c5a4423
|
4
|
+
data.tar.gz: 940af48f2d8700ef87391437eadbfe1079b84956
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28ea632e1cd7d22cc090efc3ccc9753a2c149dcaee72d06d65f807b0fd7b1217ba19041cf98ac6125bf0c8b5757805284364b746c6a4fd85a47ff79f0a30f059
|
7
|
+
data.tar.gz: f0220ff10afed1eaeb4650c218b956ff5dcab3f15dfaa0a0dfe7a781c1949b2bff6cc04ebbbbccf3df7eec5c7beab15106b9dd74a802d83616337659bcccd0a5
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.0
|
data/lib/da99_rack_protect.rb
CHANGED
@@ -3,7 +3,6 @@ require 'rack/protection'
|
|
3
3
|
|
4
4
|
class Da99_Rack_Protect
|
5
5
|
|
6
|
-
HOSTS = []
|
7
6
|
DA99 = self
|
8
7
|
|
9
8
|
# =================================================================
|
@@ -63,31 +62,6 @@ class Da99_Rack_Protect
|
|
63
62
|
|
64
63
|
class << self
|
65
64
|
|
66
|
-
def config *args
|
67
|
-
yield(self) if block_given?
|
68
|
-
case args.length
|
69
|
-
when 0
|
70
|
-
# do nothing
|
71
|
-
|
72
|
-
when 2
|
73
|
-
|
74
|
-
case args.first
|
75
|
-
|
76
|
-
when :host
|
77
|
-
HOSTS.concat args.last
|
78
|
-
|
79
|
-
else
|
80
|
-
fail "Unknown args: #{args.inspect}"
|
81
|
-
|
82
|
-
end # === case
|
83
|
-
|
84
|
-
else
|
85
|
-
fail "Unknown args: #{args.inspect}"
|
86
|
-
end # === case
|
87
|
-
|
88
|
-
self
|
89
|
-
end # === def config
|
90
|
-
|
91
65
|
def redirect new, code = 301
|
92
66
|
res = Rack::Response.new
|
93
67
|
res.redirect new, code
|
@@ -107,6 +81,10 @@ class Da99_Rack_Protect
|
|
107
81
|
end # === class self
|
108
82
|
|
109
83
|
def initialize main_app
|
84
|
+
@configs = configs = {:hosts=>[]}
|
85
|
+
|
86
|
+
yield(self) if block_given?
|
87
|
+
|
110
88
|
@app = Rack::Builder.new do
|
111
89
|
|
112
90
|
use Rack::Lint
|
@@ -120,7 +98,12 @@ class Da99_Rack_Protect
|
|
120
98
|
}
|
121
99
|
|
122
100
|
Names.each { |name|
|
123
|
-
|
101
|
+
case name
|
102
|
+
when :Ensure_Host
|
103
|
+
use Da99_Rack_Protect.const_get(name), *(configs[:hosts])
|
104
|
+
else
|
105
|
+
use Da99_Rack_Protect.const_get(name)
|
106
|
+
end
|
124
107
|
}
|
125
108
|
|
126
109
|
if ENV['IS_DEV']
|
@@ -130,8 +113,21 @@ class Da99_Rack_Protect
|
|
130
113
|
|
131
114
|
run main_app
|
132
115
|
end
|
116
|
+
|
117
|
+
@configs[:hosts].freeze
|
133
118
|
end
|
134
119
|
|
120
|
+
def config settings, *args
|
121
|
+
case settings
|
122
|
+
when :host
|
123
|
+
@configs[:hosts].concat args
|
124
|
+
else
|
125
|
+
fail "Unknown args: #{args.inspect}"
|
126
|
+
end # === case
|
127
|
+
|
128
|
+
self
|
129
|
+
end # === def config
|
130
|
+
|
135
131
|
def call env
|
136
132
|
@app.call env
|
137
133
|
end
|
@@ -3,30 +3,30 @@ class Da99_Rack_Protect
|
|
3
3
|
|
4
4
|
class Ensure_Host
|
5
5
|
|
6
|
-
SERVER_NAME = 'SERVER_NAME'
|
6
|
+
SERVER_NAME = 'SERVER_NAME'.freeze
|
7
7
|
LOCALHOST = /\A(localhost|127\.0\.0\.1)\z/
|
8
|
-
HTT_HOST = 'HTTP_HOST'
|
8
|
+
HTT_HOST = 'HTTP_HOST'.freeze
|
9
9
|
|
10
|
-
def initialize new_app
|
10
|
+
def initialize new_app, *hosts
|
11
11
|
@app = new_app
|
12
|
+
@hosts = hosts
|
12
13
|
end
|
13
14
|
|
14
15
|
def call e
|
15
|
-
hosts = Da99_Rack_Protect::HOSTS
|
16
16
|
name = e[SERVER_NAME]
|
17
17
|
host = e[HTT_HOST]
|
18
18
|
|
19
|
-
is_valid = hosts.include?(name)
|
19
|
+
is_valid = @hosts.include?(name)
|
20
20
|
|
21
21
|
if !is_valid
|
22
|
-
is_local = hosts.include?(:localhost) && name[LOCALHOST]
|
22
|
+
is_local = @hosts.include?(:localhost) && name[LOCALHOST]
|
23
23
|
is_valid = is_local
|
24
24
|
end
|
25
25
|
|
26
26
|
is_match = host[/\A#{name}(:\d+)?\z/]
|
27
27
|
|
28
28
|
return @app.call(e) if is_valid && is_match
|
29
|
-
Da99_Rack_Protect.response 444, :text, '
|
29
|
+
Da99_Rack_Protect.response 444, :text, 'Invalid host specified by client.'
|
30
30
|
end
|
31
31
|
|
32
32
|
end # === class Ensure_Host
|
data/specs/helpers/config.ru
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
require 'cuba'
|
3
3
|
require 'da99_rack_protect'
|
4
4
|
|
5
|
-
Cuba.use Da99_Rack_Protect
|
6
|
-
|
7
|
-
|
5
|
+
Cuba.use Da99_Rack_Protect do |mid|
|
6
|
+
mid.config :host, :localhost, 'da99_sample.com'
|
7
|
+
end
|
8
8
|
|
9
9
|
if ENV['IS_DEV']
|
10
10
|
Cuba.use Rack::ShowExceptions
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: da99_rack_protect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- da99
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack-protection
|