invisible_captcha 0.10.0 → 0.11.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/.travis.yml +9 -15
- data/Appraisals +4 -4
- data/CHANGELOG.md +106 -0
- data/README.md +8 -2
- data/gemfiles/{rails_4.1.gemfile → rails_5.2.gemfile} +1 -1
- data/lib/invisible_captcha/controller_ext.rb +11 -3
- data/lib/invisible_captcha/version.rb +1 -1
- data/spec/view_helpers_spec.rb +2 -2
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e681b453a7901d41d318ded90fa7ef465537654
|
4
|
+
data.tar.gz: 41f47473ce607a8610cdf784d60407c83d294cbf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 293b6539d38e67f8a95fc109aaf54d2d0f3af25695ab76c91b6427f8c132fb9bc7397c0aebef2bd2f78af65af65fc44a8468f9a6bd766294b496d781171d9104
|
7
|
+
data.tar.gz: f64232b5bbaf63be0a41b5996bbb97b2960b13c0c31b3d87f379444e6017420b32941310d891c52d613fadc8d2cf33bb5ea90b2839942692f8ccd5661b0c47bf
|
data/.travis.yml
CHANGED
@@ -3,29 +3,23 @@ cache: bundler
|
|
3
3
|
sudo: false
|
4
4
|
rvm:
|
5
5
|
- ruby-head
|
6
|
-
- 2.
|
7
|
-
- 2.
|
8
|
-
- 2.
|
9
|
-
- 2.
|
6
|
+
- 2.5.1
|
7
|
+
- 2.4.4
|
8
|
+
- 2.3.6
|
9
|
+
- 2.2.9
|
10
10
|
gemfile:
|
11
|
+
- gemfiles/rails_5.2.gemfile
|
11
12
|
- gemfiles/rails_5.1.gemfile
|
12
13
|
- gemfiles/rails_5.0.gemfile
|
13
14
|
- gemfiles/rails_4.2.gemfile
|
14
|
-
- gemfiles/rails_4.1.gemfile
|
15
15
|
- gemfiles/rails_3.2.gemfile
|
16
16
|
matrix:
|
17
17
|
exclude:
|
18
|
-
- rvm: 2.1.10
|
19
|
-
gemfile: gemfiles/rails_5.0.gemfile
|
20
|
-
- rvm: 2.1.10
|
21
|
-
gemfile: gemfiles/rails_5.1.gemfile
|
22
|
-
- rvm: 2.4.2
|
23
|
-
gemfile: gemfiles/rails_4.1.gemfile
|
24
|
-
- rvm: 2.4.2
|
25
|
-
gemfile: gemfiles/rails_3.2.gemfile
|
26
|
-
- rvm: ruby-head
|
27
|
-
gemfile: gemfiles/rails_4.1.gemfile
|
28
18
|
- rvm: ruby-head
|
29
19
|
gemfile: gemfiles/rails_3.2.gemfile
|
20
|
+
- rvm: 2.5.1
|
21
|
+
gemfile: gemfiles/rails_3.2.gemfile
|
22
|
+
- rvm: 2.4.4
|
23
|
+
gemfile: gemfiles/rails_3.2.gemfile
|
30
24
|
allow_failures:
|
31
25
|
- rvm: ruby-head
|
data/Appraisals
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
appraise "rails-5.2" do
|
2
|
+
gem "rails", "~> 5.2.0"
|
3
|
+
end
|
4
|
+
|
1
5
|
appraise "rails-5.1" do
|
2
6
|
gem "rails", "~> 5.1.0"
|
3
7
|
end
|
@@ -10,10 +14,6 @@ appraise "rails-4.2" do
|
|
10
14
|
gem "rails", github: 'rails/rails', branch: '4-2-stable'
|
11
15
|
end
|
12
16
|
|
13
|
-
appraise "rails-4.1" do
|
14
|
-
gem "rails", "~> 4.1.0"
|
15
|
-
end
|
16
|
-
|
17
17
|
appraise "rails-3.2" do
|
18
18
|
gem "rails", "~> 3.2.0"
|
19
19
|
end
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
## [0.11.0]
|
6
|
+
|
7
|
+
- Improve logging (#40, #41)
|
8
|
+
- Official Rails 5.2 support
|
9
|
+
- Drop Ruby 2.1 from CI
|
10
|
+
|
11
|
+
## [0.10.0]
|
12
|
+
|
13
|
+
- New timestamp on each request to avoid stale timestamps (#24)
|
14
|
+
- Allow to inject styles manually anywhere in the layout (#27)
|
15
|
+
- Allow to change threshold per action
|
16
|
+
- Dynamic css strategy to hide the honeypot
|
17
|
+
- Remove Ruby 1.9 support
|
18
|
+
- Random default honeypots on each restart
|
19
|
+
- Allow to pass html_options to honeypot input (#28)
|
20
|
+
- Improvements on demo application and tests
|
21
|
+
- Better strong parameters interaction (#30, #33)
|
22
|
+
|
23
|
+
## [0.9.3]
|
24
|
+
|
25
|
+
- Rails 5.1 support (#29)
|
26
|
+
- Modernize CI Rubies
|
27
|
+
|
28
|
+
## [0.9.2]
|
29
|
+
|
30
|
+
- Rails 5.0 official support (#23)
|
31
|
+
- Travis CI matrix improvements
|
32
|
+
|
33
|
+
## [0.9.1]
|
34
|
+
|
35
|
+
- Add option (`timestamp_enabled`) to disable timestamp check (#22)
|
36
|
+
|
37
|
+
## [0.9.0]
|
38
|
+
|
39
|
+
- Remove model style validations (#14)
|
40
|
+
- Consider as spam if timestamp not in session (#11)
|
41
|
+
- Allow to define a different threshold per action (#8)
|
42
|
+
- Appraisals integration (#8)
|
43
|
+
- CI improvements: use new Travis infrastructure (#8)
|
44
|
+
|
45
|
+
## [0.8.2]
|
46
|
+
|
47
|
+
- Default timestamp action redirects to back (#19)
|
48
|
+
- Stores timestamps as string in session (#17)
|
49
|
+
|
50
|
+
## [0.8.1]
|
51
|
+
|
52
|
+
- Time-sensitive form submissions (#7)
|
53
|
+
- I18n integration (#13)
|
54
|
+
|
55
|
+
## [0.8.0]
|
56
|
+
|
57
|
+
- Better Rails integration with `ActiveSupport.on_load` callbacks (#5)
|
58
|
+
- Allow to override settings via the view helper (#5)
|
59
|
+
|
60
|
+
## [0.7.0]
|
61
|
+
|
62
|
+
- Revamped code base to allow more customizations (#2)
|
63
|
+
- Added basic specs (#2)
|
64
|
+
- Travis integration (#2)
|
65
|
+
- Demo app (#2)
|
66
|
+
|
67
|
+
## [0.6.5]
|
68
|
+
|
69
|
+
- Stop using Jeweler
|
70
|
+
|
71
|
+
## [0.6.4]
|
72
|
+
|
73
|
+
- Docs! (#1)
|
74
|
+
|
75
|
+
## [0.6.3]
|
76
|
+
|
77
|
+
- Internal re-naming
|
78
|
+
|
79
|
+
## [0.6.2]
|
80
|
+
|
81
|
+
- Fix gem initialization
|
82
|
+
|
83
|
+
## [0.6.0]
|
84
|
+
|
85
|
+
- Allow to configure via `InvisibleCaptcha.setup` block
|
86
|
+
|
87
|
+
## [0.5.0]
|
88
|
+
|
89
|
+
- First version of controller filters
|
90
|
+
|
91
|
+
[0.11.0]: https://github.com/markets/invisible_captcha/compare/v0.10.0...v0.11.0
|
92
|
+
[0.10.0]: https://github.com/markets/invisible_captcha/compare/v0.9.3...v0.10.0
|
93
|
+
[0.9.3]: https://github.com/markets/invisible_captcha/compare/v0.9.2...v0.9.3
|
94
|
+
[0.9.2]: https://github.com/markets/invisible_captcha/compare/v0.9.1...v0.9.2
|
95
|
+
[0.9.1]: https://github.com/markets/invisible_captcha/compare/v0.9.0...v0.9.1
|
96
|
+
[0.9.0]: https://github.com/markets/invisible_captcha/compare/v0.8.2...v0.9.0
|
97
|
+
[0.8.2]: https://github.com/markets/invisible_captcha/compare/v0.8.1...v0.8.2
|
98
|
+
[0.8.1]: https://github.com/markets/invisible_captcha/compare/v0.8.0...v0.8.1
|
99
|
+
[0.8.0]: https://github.com/markets/invisible_captcha/compare/v0.7.0...v0.8.0
|
100
|
+
[0.7.0]: https://github.com/markets/invisible_captcha/compare/v0.6.5...v0.7.0
|
101
|
+
[0.6.5]: https://github.com/markets/invisible_captcha/compare/v0.6.4...v0.6.5
|
102
|
+
[0.6.4]: https://github.com/markets/invisible_captcha/compare/v0.6.3...v0.6.4
|
103
|
+
[0.6.3]: https://github.com/markets/invisible_captcha/compare/v0.6.2...v0.6.3
|
104
|
+
[0.6.2]: https://github.com/markets/invisible_captcha/compare/v0.6.0...v0.6.2
|
105
|
+
[0.6.0]: https://github.com/markets/invisible_captcha/compare/v0.5.0...v0.6.0
|
106
|
+
[0.5.0]: https://github.com/markets/invisible_captcha/compare/v0.4.1...v0.5.0
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ It also comes with a time-sensitive :hourglass: form submission.
|
|
18
18
|
|
19
19
|
## Installation
|
20
20
|
|
21
|
-
Invisible Captcha is tested against Rails `>= 3.2` and Ruby `>= 2.
|
21
|
+
Invisible Captcha is tested against Rails `>= 3.2` and Ruby `>= 2.2`.
|
22
22
|
|
23
23
|
Add this line to you Gemfile:
|
24
24
|
|
@@ -121,7 +121,7 @@ The `invisible_captcha` method accepts some options:
|
|
121
121
|
* `honeypot`: name of custom honeypot.
|
122
122
|
* `scope`: name of scope, ie: 'topic[subtitle]' -> 'topic' is the scope.
|
123
123
|
* `on_spam`: custom callback to be called on spam detection.
|
124
|
-
* `
|
124
|
+
* `timestamp_enabled`: enable/disable this technique at action level.
|
125
125
|
* `on_timestamp_spam`: custom callback to be called when form submitted too quickly. The default action redirects to `:back` printing a warning in `flash[:error]`.
|
126
126
|
* `timestamp_threshold`: custom threshold per controller/action. Overrides the global value for `InvisibleCaptcha.timestamp_threshold`.
|
127
127
|
|
@@ -179,6 +179,12 @@ $ bundle exec appraisal install
|
|
179
179
|
$ bundle exec appraisal rspec
|
180
180
|
```
|
181
181
|
|
182
|
+
Run specs against specific version:
|
183
|
+
|
184
|
+
```
|
185
|
+
$ bundle exec appraisal rails-5.2 rspec
|
186
|
+
```
|
187
|
+
|
182
188
|
### Demo
|
183
189
|
|
184
190
|
Start a sample Rails app ([source code](spec/dummy)) with `InvisibleCaptcha` integrated:
|
@@ -57,7 +57,7 @@ module InvisibleCaptcha
|
|
57
57
|
|
58
58
|
# Consider as spam if timestamp not in session, cause that means the form was not fetched at all
|
59
59
|
unless timestamp
|
60
|
-
|
60
|
+
warn("Invisible Captcha timestamp not found in session.")
|
61
61
|
return true
|
62
62
|
end
|
63
63
|
|
@@ -66,7 +66,7 @@ module InvisibleCaptcha
|
|
66
66
|
|
67
67
|
# Consider as spam if form submitted too quickly
|
68
68
|
if time_to_submit < threshold
|
69
|
-
|
69
|
+
warn("Invisible Captcha timestamp threshold not reached (took #{time_to_submit.to_i}s).")
|
70
70
|
return true
|
71
71
|
end
|
72
72
|
|
@@ -82,6 +82,7 @@ module InvisibleCaptcha
|
|
82
82
|
# - honeypot: params[:subtitle]
|
83
83
|
# - honeypot with scope: params[:topic][:subtitle]
|
84
84
|
if params[honeypot].present? || (params[scope] && params[scope][honeypot].present?)
|
85
|
+
warn("Invisible Captcha honeypot param '#{honeypot}' was present.")
|
85
86
|
return true
|
86
87
|
else
|
87
88
|
# No honeypot spam detected, remove honeypot from params to avoid UnpermittedParameters exceptions
|
@@ -90,11 +91,18 @@ module InvisibleCaptcha
|
|
90
91
|
end
|
91
92
|
else
|
92
93
|
InvisibleCaptcha.honeypots.each do |default_honeypot|
|
93
|
-
|
94
|
+
if params[default_honeypot].present?
|
95
|
+
warn("Invisible Captcha honeypot param '#{default_honeypot}' was present.")
|
96
|
+
return true
|
97
|
+
end
|
94
98
|
end
|
95
99
|
end
|
96
100
|
|
97
101
|
false
|
98
102
|
end
|
103
|
+
|
104
|
+
def warn(message)
|
105
|
+
logger.warn("Potential spam detected for IP #{request.remote_ip}. #{message}")
|
106
|
+
end
|
99
107
|
end
|
100
108
|
end
|
data/spec/view_helpers_spec.rb
CHANGED
@@ -62,14 +62,14 @@ describe InvisibleCaptcha::ViewHelpers, type: :helper do
|
|
62
62
|
context 'injectable_styles option' do
|
63
63
|
it 'by default, render styles along with the honeypot' do
|
64
64
|
expect(invisible_captcha).to match(/display:none/)
|
65
|
-
expect(
|
65
|
+
expect(@view_flow.content[:invisible_captcha_styles]).to be_blank
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'if injectable_styles is set, do not append styles inline' do
|
69
69
|
InvisibleCaptcha.injectable_styles = true
|
70
70
|
|
71
71
|
expect(invisible_captcha).not_to match(/display:none;/)
|
72
|
-
expect(
|
72
|
+
expect(@view_flow.content[:invisible_captcha_styles]).to match(/display:none;/)
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invisible_captcha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc Anguera Insa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -91,15 +91,16 @@ files:
|
|
91
91
|
- ".gitignore"
|
92
92
|
- ".travis.yml"
|
93
93
|
- Appraisals
|
94
|
+
- CHANGELOG.md
|
94
95
|
- Gemfile
|
95
96
|
- LICENSE
|
96
97
|
- README.md
|
97
98
|
- Rakefile
|
98
99
|
- gemfiles/rails_3.2.gemfile
|
99
|
-
- gemfiles/rails_4.1.gemfile
|
100
100
|
- gemfiles/rails_4.2.gemfile
|
101
101
|
- gemfiles/rails_5.0.gemfile
|
102
102
|
- gemfiles/rails_5.1.gemfile
|
103
|
+
- gemfiles/rails_5.2.gemfile
|
103
104
|
- invisible_captcha.gemspec
|
104
105
|
- lib/invisible_captcha.rb
|
105
106
|
- lib/invisible_captcha/controller_ext.rb
|