rack_attack_admin 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/app/controllers/rack_attack_admin/banned_ips_controller.rb +3 -2
- data/app/controllers/rack_attack_admin/keys_controller.rb +2 -1
- data/app/views/rack_attack_admin/banned_ips/_banned_ip.html.haml +1 -1
- data/app/views/rack_attack_admin/rack_attack/index.html.haml +13 -11
- data/lib/rack/attack_extensions.rb +0 -16
- data/lib/rack_attack_admin/version.rb +1 -1
- data/lib/rack_attack_admin.rb +1 -0
- data/rack_attack_admin.gemspec +20 -19
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ecd6ce1a1b78254993c7d6b6e72b23c7e0aeea62268282666ff3f9c55177f35
|
4
|
+
data.tar.gz: fb1449910735e43bff061886f9d362c0358b8f37b8de2332701864b3d123f859
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5cb6070210f2b5ba29f3d2c219d9ec3574df58e3e56f0f87294cc60be6c20f719b94379079e3736093a4411584c171445ef2f435e0958d519fee76808ff84c1
|
7
|
+
data.tar.gz: eb24534ef311d712d43647d0804f04ddf193d8f3b623e54bafa80be491e353d83897a05138add8106e0a859f9be8eecc7885d42c0e1318f34c70fde94fe2ff11
|
@@ -19,10 +19,11 @@ module RackAttackAdmin
|
|
19
19
|
end
|
20
20
|
if ban.valid?
|
21
21
|
Rack::Attack::BannedIps.ban! ban.ip, ban.bantime
|
22
|
-
|
22
|
+
flash[:success] = "Added #{ban.ip}"
|
23
23
|
else
|
24
|
-
|
24
|
+
flash[:alert] = "Failed to add: #{ban.errors.full_messages.join('. ')}"
|
25
25
|
end
|
26
|
+
redirect_to root_path
|
26
27
|
end
|
27
28
|
end
|
28
29
|
end
|
@@ -4,7 +4,8 @@ module RackAttackAdmin
|
|
4
4
|
orig_key = params[:id]
|
5
5
|
unprefixed_key = Rack::Attack.unprefix_key(orig_key)
|
6
6
|
Rack::Attack.cache.delete unprefixed_key
|
7
|
-
|
7
|
+
flash[:success] = "Deleted #{unprefixed_key}"
|
8
|
+
redirect_to root_path
|
8
9
|
end
|
9
10
|
end
|
10
11
|
end
|
@@ -11,6 +11,6 @@
|
|
11
11
|
- interval = Rack::Attack.cache.store.ttl("#{Rack::Attack.cache.prefix}:#{key}")
|
12
12
|
- if interval
|
13
13
|
=# distance_of_time_in_words(interval)
|
14
|
-
in #{ActiveSupport::Duration.build(interval)&.
|
14
|
+
in #{ActiveSupport::Duration.build(interval)&.human_str}
|
15
15
|
|
16
16
|
%td= link_to 'Delete', rack_attack_admin.banned_ip_path(key), method: :delete, class: 'btn'
|
@@ -44,12 +44,12 @@
|
|
44
44
|
%tr
|
45
45
|
%th Type:Name
|
46
46
|
%th Discriminator
|
47
|
-
%th
|
48
|
-
Expires<br/>
|
49
|
-
(Time bucket)
|
50
47
|
%th
|
51
48
|
Value<br/>
|
52
49
|
\/Limit
|
50
|
+
%th
|
51
|
+
Expires<br/>
|
52
|
+
(Time bucket)
|
53
53
|
%th Actions
|
54
54
|
- @counters_h.each do |key, value|
|
55
55
|
%tr
|
@@ -63,6 +63,14 @@
|
|
63
63
|
%code= rule.inspect_with_options
|
64
64
|
|
65
65
|
%td= parsed[:discriminator]
|
66
|
+
|
67
|
+
- limit = parsed && (rule = parsed[:rule]) && rule.limit.to_i
|
68
|
+
- over_limit = value >= limit
|
69
|
+
%td{class: ('over_limit' if over_limit), style: ('color: red' if over_limit)}
|
70
|
+
= value
|
71
|
+
- if limit
|
72
|
+
= "/#{limit}"
|
73
|
+
|
66
74
|
%td
|
67
75
|
-# We can get expires_in from redis or directly from the mached throttle rule
|
68
76
|
:ruby
|
@@ -73,7 +81,7 @@
|
|
73
81
|
(time_range.end - Time.now)
|
74
82
|
end
|
75
83
|
- if interval
|
76
|
-
in #{ActiveSupport::Duration.build(interval)&.
|
84
|
+
in #{ActiveSupport::Duration.build(interval)&.human_str}<br/>
|
77
85
|
|
78
86
|
- if parsed and time_range = parsed[:time_range]
|
79
87
|
%small
|
@@ -81,14 +89,8 @@
|
|
81
89
|
%span><
|
82
90
|
\-
|
83
91
|
#{time_range.end .to_s(:time_with_s)}
|
84
|
-
\= #{time_range.duration&.
|
92
|
+
\= #{time_range.duration&.human_str})
|
85
93
|
|
86
|
-
- limit = parsed && (rule = parsed[:rule]) && rule.limit.to_i
|
87
|
-
- over_limit = value >= limit
|
88
|
-
%td{class: ('over_limit' if over_limit), style: ('color: red' if over_limit)}
|
89
|
-
= value
|
90
|
-
- if limit
|
91
|
-
= "/#{limit}"
|
92
94
|
%td= link_to 'Delete', rack_attack_admin.key_path(key), method: :delete, class: 'btn'
|
93
95
|
.current_time.mb-2 (Current time: #{Time.now.to_s(:time_with_s)})
|
94
96
|
|
@@ -1,22 +1,6 @@
|
|
1
1
|
require 'memoist'
|
2
2
|
require 'active_model'
|
3
3
|
|
4
|
-
ActiveSupport::Duration.class_eval do
|
5
|
-
# Returns a concise and human-readable string, like '3 h' or '3 h, 5 m, 7 s'
|
6
|
-
# This is unlike #to_s, which is concise but not very human-readable (gives time in seconds even for large durations),
|
7
|
-
# This is unlike #to_s, which is concise but not very human-readable ("P3Y6M4DT12H30M5S").
|
8
|
-
def human_to_s
|
9
|
-
iso8601.
|
10
|
-
sub('P', '').
|
11
|
-
sub('T', '').
|
12
|
-
downcase.
|
13
|
-
gsub(/
|
14
|
-
\D # Not a digit
|
15
|
-
(?!$) # Not at end
|
16
|
-
/x) { |m| " #{m}, " }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
4
|
Rack::Attack
|
21
5
|
class Rack::Attack
|
22
6
|
class << self
|
data/lib/rack_attack_admin.rb
CHANGED
data/rack_attack_admin.gemspec
CHANGED
@@ -4,37 +4,38 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require "rack_attack_admin/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'rack_attack_admin'
|
8
8
|
spec.version = RackAttackAdmin.version
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.license =
|
9
|
+
spec.authors = ['Tyler Rick']
|
10
|
+
spec.email = ['tyler@tylerrick.com']
|
11
|
+
spec.license = 'MIT'
|
12
12
|
|
13
13
|
spec.summary = %q{A Rack::Attack admin dashboard}
|
14
14
|
spec.description = %q{Lets you see the current state of all throttles and bans. Delete existing keys/bans. Manually add bans.}
|
15
|
-
spec.homepage =
|
15
|
+
spec.homepage = 'https://github.com/TylerRick/rack_attack_admin'
|
16
16
|
|
17
|
-
spec.metadata[
|
18
|
-
spec.metadata[
|
19
|
-
spec.metadata[
|
17
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
18
|
+
spec.metadata['source_code_uri'] = spec.homepage
|
19
|
+
spec.metadata['changelog_uri'] = "#{spec.metadata['source_code_uri']}/blob/master/Changelog.md"
|
20
20
|
|
21
21
|
# Specify which files should be added to the gem when it is released.
|
22
22
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
23
23
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
24
24
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
25
|
end
|
26
|
-
spec.bindir =
|
26
|
+
spec.bindir = 'exe'
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
-
spec.require_paths = [
|
28
|
+
spec.require_paths = ['lib']
|
29
29
|
|
30
|
-
spec.required_ruby_version =
|
31
|
-
spec.add_dependency
|
32
|
-
spec.add_dependency
|
33
|
-
spec.add_dependency
|
34
|
-
spec.add_dependency
|
35
|
-
spec.add_dependency
|
30
|
+
spec.required_ruby_version = '>= 2.3.0'
|
31
|
+
spec.add_dependency 'activesupport', ['>= 4.2', '< 5.3']
|
32
|
+
spec.add_dependency 'activesupport-duration-human_string', '>= 0.1.1'
|
33
|
+
spec.add_dependency 'haml'
|
34
|
+
spec.add_dependency 'memoist'
|
35
|
+
spec.add_dependency 'rack-attack'
|
36
|
+
spec.add_dependency 'rails', ['>= 4.2', '< 5.3']
|
36
37
|
|
37
|
-
spec.add_development_dependency
|
38
|
-
spec.add_development_dependency
|
39
|
-
spec.add_development_dependency
|
38
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
39
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
40
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
40
41
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack_attack_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Rick
|
@@ -30,6 +30,20 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '5.3'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: activesupport-duration-human_string
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 0.1.1
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.1.1
|
33
47
|
- !ruby/object:Gem::Dependency
|
34
48
|
name: haml
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|