google_safe_browsing 0.5.1 → 0.6.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 +7 -0
- data/README.md +57 -12
- data/lib/google_safe_browsing/chunk_helper.rb +8 -4
- data/lib/google_safe_browsing/full_hash.rb +11 -0
- data/lib/google_safe_browsing/response_helper.rb +1 -7
- data/lib/google_safe_browsing/version.rb +1 -1
- metadata +21 -43
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f5b61271d81882c1bbaea1de9c42b0fcdfa7ae2b
|
4
|
+
data.tar.gz: 1ada1d0d3f7c6e6a4708c2d28a38e9e9e0a1a8a9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fe03c531a15358f5098cff412c809533208161ac0a02a9f11469361a5c753733bc36302a78ee750da13a0706ee7a6cc350a65b0d94424385277db639b4d5692d
|
7
|
+
data.tar.gz: daf865df013d6d94d5ed184be4da95e41dcc52169ab74106cd98a43a61ac6d0b84c23b784cb56a365dbf0c0699f124422749bb9793affa8fa348081e5618a6af
|
data/README.md
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
This gem allows easy Google Safe Browsing APIv2 usage with optional integration
|
4
4
|
into Rails 3 apps.
|
5
5
|
|
6
|
+
[](https://travis-ci.org//mobiledefense/google_safe_browsing)
|
8
|
+
|
6
9
|
It includes:
|
7
10
|
|
8
11
|
* a migration generator for database schema
|
@@ -36,7 +39,8 @@ Then, generate the migration and run it
|
|
36
39
|
|
37
40
|
|
38
41
|
Add your Google Safe Browsing API key to congif/application.rb
|
39
|
-
You can get a key from the [Google
|
42
|
+
You can get a key from the [Google
|
43
|
+
Safe Browsing website](http://code.google.com/apis/safebrowsing/key_signup.html)
|
40
44
|
|
41
45
|
#config/application.rb
|
42
46
|
|
@@ -51,10 +55,15 @@ You can run an update manually
|
|
51
55
|
|
52
56
|
$ rake google_safe_browsing:update
|
53
57
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
+
> Note: The full database is not guarenteed to be returned after a single update.
|
59
|
+
In fact, you aren't likely to have the full database even after several
|
60
|
+
updates. You will know that you have the full database when an update does
|
61
|
+
not return any new Add or Sub Shavars.
|
62
|
+
|
63
|
+
Or, if you have [Resque](https://github.com/defunkt/resque) and
|
64
|
+
[Resque Scheduler](https://github.com/bvandenbos/resque-scheduler) set up, you
|
65
|
+
can run an update and automatically schedule another update based on the 'next
|
66
|
+
polling interval' parameter from the API
|
58
67
|
|
59
68
|
$ rake google_safe_browsing:update_and_reschedule
|
60
69
|
|
@@ -64,19 +73,55 @@ To programatically run an update in your app
|
|
64
73
|
|
65
74
|
GoogleSafeBrowsing::APIv2.update
|
66
75
|
|
67
|
-
Note: This can take a while, especially when first seeding your database. I
|
68
|
-
calling this in a controller for a normal page request.
|
76
|
+
Note: This can take a while, especially when first seeding your database. I
|
77
|
+
wouldn't recommend calling this in a controller for a normal page request.
|
69
78
|
|
70
79
|
To check a url for badness
|
71
80
|
|
72
81
|
GoogleSafeBrowsing::APIv2.lookup('http://bad.url.address.here.com.edu/forProfit')
|
73
82
|
|
74
|
-
The url string parameter does not have to be any specific format or
|
75
|
-
Safe Browsing gem will handle all of that for you.
|
76
|
-
url though. I most likely
|
83
|
+
The url string parameter does not have to be any specific format or
|
84
|
+
Canonicalization the Google Safe Browsing gem will handle all of that for you.
|
85
|
+
Please report any errors from a weirdly formatted url though. I most likely
|
86
|
+
have missed some cases.
|
87
|
+
|
88
|
+
The `lookup` method returns a string ( either 'malware' or 'phishing' ) for
|
89
|
+
the name of the black list which the url appears on, or `nil` if the url is
|
90
|
+
not on Google's list.
|
91
|
+
|
92
|
+
----------------
|
93
|
+
|
94
|
+
## Contributing
|
95
|
+
|
96
|
+
We've already had some [great
|
97
|
+
contributers](https://github.com/mobiledefense/google_safe_browsing/graphs/contributors).
|
98
|
+
If you'd like to join us, we'd love to have you. When contributing please
|
99
|
+
|
100
|
+
1. [Fork](https://github.com/mobiledefense/google_safe_browsing/fork) the repo
|
101
|
+
1. Start a topic branch.
|
102
|
+
1. Write awesome code!
|
103
|
+
1. Please break your commits into logical units.
|
104
|
+
1. Please add specs when necessary.
|
105
|
+
1. Open a [Pull
|
106
|
+
Request](https://github.com/mobiledefense/google_safe_browsing/pulls)
|
107
|
+
1. Make sure [Travis
|
108
|
+
CI](https://travis-ci.org/mobiledefense/google_safe_browsing)
|
109
|
+
builds the PR successfully.
|
110
|
+
1. See your awesomeness merged in!
|
111
|
+
|
112
|
+
### Running specs
|
113
|
+
|
114
|
+
We use [Rspec](http://rspec.info/) for unit testing. You can run the specs with
|
115
|
+
the following command:
|
116
|
+
|
117
|
+
bundle exec rake
|
118
|
+
|
119
|
+
Or individual specs/files:
|
120
|
+
|
121
|
+
bundle exec rspec spec/chunk_helper_spec.rb:10
|
122
|
+
|
77
123
|
|
78
|
-
|
79
|
-
which the url appears on, or `nil` if the url is not on Google's list.
|
124
|
+
Thanks for helping us make browsing safer!
|
80
125
|
|
81
126
|
----------------
|
82
127
|
|
@@ -13,12 +13,16 @@ module GoogleSafeBrowsing
|
|
13
13
|
action_strings = []
|
14
14
|
|
15
15
|
|
16
|
-
nums = GoogleSafeBrowsing::AddShavar.
|
17
|
-
|
16
|
+
nums = GoogleSafeBrowsing::AddShavar.where(list: list)
|
17
|
+
.order(:chunk_number)
|
18
|
+
.select('distinct chunk_number')
|
19
|
+
.map(&:chunk_number)
|
18
20
|
action_strings << "a:#{squish_number_list(nums)}" if nums.any?
|
19
21
|
|
20
|
-
nums = GoogleSafeBrowsing::SubShavar.
|
21
|
-
|
22
|
+
nums = GoogleSafeBrowsing::SubShavar.where(list: list)
|
23
|
+
.order(:chunk_number)
|
24
|
+
.select('distinct chunk_number')
|
25
|
+
.map(&:chunk_number)
|
22
26
|
action_strings << "s:#{squish_number_list(nums)}" if nums.any?
|
23
27
|
|
24
28
|
ret += "#{action_strings.join(':')}#{":mac" if GoogleSafeBrowsing.config.have_keys?}\n"
|
@@ -1,5 +1,16 @@
|
|
1
1
|
module GoogleSafeBrowsing
|
2
2
|
class FullHash < ActiveRecord::Base
|
3
3
|
self.table_name = 'gsb_full_hashes'
|
4
|
+
|
5
|
+
def self.delete_subbed
|
6
|
+
sub_join = <<-SQL
|
7
|
+
INNER JOIN gsb_sub_shavars
|
8
|
+
ON gsb_sub_shavars.add_chunk_number = gsb_full_hashes.add_chunk_number
|
9
|
+
AND gsb_sub_shavars.list = gsb_full_hashes.list
|
10
|
+
SQL
|
11
|
+
|
12
|
+
hash_ids = joins(sub_join).pluck("distinct #{self.table_name}.id")
|
13
|
+
where(id: hash_ids).delete_all
|
14
|
+
end
|
4
15
|
end
|
5
16
|
end
|
@@ -157,13 +157,7 @@ module GoogleSafeBrowsing
|
|
157
157
|
SQL
|
158
158
|
end
|
159
159
|
|
160
|
-
FullHash.
|
161
|
-
DELETE FROM gsb_full_hashes
|
162
|
-
USING gsb_full_hashes
|
163
|
-
INNER JOIN gsb_sub_shavars ON
|
164
|
-
gsb_sub_shavars.add_chunk_number = gsb_full_hashes.add_chunk_number
|
165
|
-
AND gsb_sub_shavars.list = gsb_full_hashes.list;
|
166
|
-
SQL
|
160
|
+
FullHash.delete_subbed
|
167
161
|
|
168
162
|
@add_shavar_values = []
|
169
163
|
@sub_shavar_values = []
|
metadata
CHANGED
@@ -1,126 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_safe_browsing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Chris Marshall
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: ruby-ip
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: activerecord
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: sqlite3
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rspec-rails
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: generator_spec
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: webmock
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
description: Rails 3 plugin using Google's Safe Browsing API for url lookup against
|
@@ -157,32 +142,25 @@ files:
|
|
157
142
|
- README.md
|
158
143
|
homepage: https://github.com/mobiledefense/google_safe_browsing
|
159
144
|
licenses: []
|
145
|
+
metadata: {}
|
160
146
|
post_install_message:
|
161
147
|
rdoc_options: []
|
162
148
|
require_paths:
|
163
149
|
- lib
|
164
150
|
required_ruby_version: !ruby/object:Gem::Requirement
|
165
|
-
none: false
|
166
151
|
requirements:
|
167
|
-
- -
|
152
|
+
- - '>='
|
168
153
|
- !ruby/object:Gem::Version
|
169
154
|
version: '0'
|
170
|
-
segments:
|
171
|
-
- 0
|
172
|
-
hash: -4601497305607067111
|
173
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
|
-
none: false
|
175
156
|
requirements:
|
176
|
-
- -
|
157
|
+
- - '>='
|
177
158
|
- !ruby/object:Gem::Version
|
178
159
|
version: '0'
|
179
|
-
segments:
|
180
|
-
- 0
|
181
|
-
hash: -4601497305607067111
|
182
160
|
requirements: []
|
183
161
|
rubyforge_project:
|
184
|
-
rubygems_version:
|
162
|
+
rubygems_version: 2.0.3
|
185
163
|
signing_key:
|
186
|
-
specification_version:
|
164
|
+
specification_version: 4
|
187
165
|
summary: Rails 3 plugin for Google's Safe Browsing API v2
|
188
166
|
test_files: []
|