rack_attack_admin 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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