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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b25176b34b9df57026a574d6d1906baa6f38c807ba0390106df0753e57c16f2e
4
- data.tar.gz: 1524e2a57ea8c775e6a8085bc10a29c6ed50b98aff069e0d3e0cb2bca6cb7359
3
+ metadata.gz: 9ecd6ce1a1b78254993c7d6b6e72b23c7e0aeea62268282666ff3f9c55177f35
4
+ data.tar.gz: fb1449910735e43bff061886f9d362c0358b8f37b8de2332701864b3d123f859
5
5
  SHA512:
6
- metadata.gz: 984d71bfb9849fb22794beb7614a92c27466f5ace13700bc5e608afe4b5a0f913239766345dcda4b98cfbcb3f23587be3617e23eae798199549245d9c059affe
7
- data.tar.gz: b8e4996db88b3eb01808f85ed1fa4e6407694fc3488ca9fb7ea1cb475531ca201398089426a64599f82e578f982938e18e7bf4250bff9aaf272a97c1c6f64f79
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
- redirect_to root_path, success: "Added: #{ban.ip}"
22
+ flash[:success] = "Added #{ban.ip}"
23
23
  else
24
- redirect_to root_path, alert: "Failed to add: #{ban.errors.full_messages}"
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
- redirect_to root_path, success: "Deleted: #{unprefixed_key}"
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)&.human_to_s}
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)&.human_to_s}<br/>
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&.human_to_s})
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
@@ -1,5 +1,5 @@
1
1
  module RackAttackAdmin
2
2
  def self.version
3
- "0.1.0"
3
+ "0.1.1"
4
4
  end
5
5
  end
@@ -1,5 +1,6 @@
1
1
  require 'rails'
2
2
  require 'rack/attack'
3
+ require 'active_support/duration/human_string'
3
4
 
4
5
  # TODO: Figure out why renaming it to be this (consistent) path causes it to not load
5
6
  # config/routes.rb and to not add routes even if we force it to be loaded.
@@ -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 = "rack_attack_admin"
7
+ spec.name = 'rack_attack_admin'
8
8
  spec.version = RackAttackAdmin.version
9
- spec.authors = ["Tyler Rick"]
10
- spec.email = ["tyler@tylerrick.com"]
11
- spec.license = "MIT"
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 = "https://github.com/TylerRick/rack_attack_admin"
15
+ spec.homepage = 'https://github.com/TylerRick/rack_attack_admin'
16
16
 
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"
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 = "exe"
26
+ spec.bindir = 'exe'
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
28
+ spec.require_paths = ['lib']
29
29
 
30
- spec.required_ruby_version = ">= 2.3.0"
31
- spec.add_dependency "activesupport", [">= 4.2", "< 5.3"]
32
- spec.add_dependency "haml"
33
- spec.add_dependency "memoist"
34
- spec.add_dependency "rack-attack"
35
- spec.add_dependency "rails", [">= 4.2", "< 5.3"]
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 "bundler", "~> 2.0"
38
- spec.add_development_dependency "rake", "~> 10.0"
39
- spec.add_development_dependency "rspec", "~> 3.0"
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.0
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