miteru 0.11.2 → 0.11.3

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: 7a839c5a380dbc9678c0c56cf9e3e5b08c3fe6bde787be8564a6e011c75e98e7
4
- data.tar.gz: 9ceba3911baeaf65d77e9ecf4cb442a8082ae7529b6996ec26b03350d87ae853
3
+ metadata.gz: 1c0d220bd3b7a0ea6ca5b394e27f2bf86ad2f11f4c7ea524226c843f430d5c4e
4
+ data.tar.gz: 9c295c3913fb784eb66a17341d14c89955befbb7daed8d443996f27205e1a4a2
5
5
  SHA512:
6
- metadata.gz: 27239dd2ae663db07b0f21e5cf91eafd9afacaf98efa19303a56b1f2fa03d5b2a7ee25e13df356152eca8ae309508f81347db05aec0792e27377ff27915d29df
7
- data.tar.gz: 64866a271d0db4832f4b40b3d8797905204d626808ce44c39c1130dd364cba389f17cceb4207e9eb5ebd10c0ca6a2cdd4129a7f969cd89252f262d44062c033a
6
+ metadata.gz: aa2a4d9344b6e46da84e052d09335fa20637da4bcca905bc40b23ae8422fb7d420ffff25bed3e103e4e672eba1eb6456e34eba303be883f6abeda2dcd5366c79
7
+ data.tar.gz: e4dc6c7bbc95ba5a7185c44f9ecc7f8ded173278e756544a1c2c4232b31b3725a12a12b73b8b1e8e74e4842943334402aab36bb8a4b13b0d41a98393c5aee92a
@@ -3,4 +3,7 @@ language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
5
  - 2.5.1
6
- before_install: gem install bundler -v 1.17.1
6
+ - 2.6.1
7
+ before_install:
8
+ - gem update --system
9
+ - gem install bundler
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
6
 
5
7
  # Specify your gem's dependencies in miteru.gemspec
6
8
  gemspec
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "bundler/setup"
4
5
  require "miteru"
@@ -1,4 +1,4 @@
1
- FROM ruby:2.5
1
+ FROM ruby:2.6
2
2
 
3
3
  RUN gem install miteru
4
4
 
@@ -7,6 +7,7 @@ require "miteru/http_client"
7
7
  require "miteru/website"
8
8
  require "miteru/downloader"
9
9
  require "miteru/feeds"
10
+ require "miteru/notifier"
10
11
  require "miteru/crawler"
11
12
  require "miteru/cli"
12
13
 
@@ -18,12 +18,12 @@ module Miteru
18
18
  @auto_download = auto_download
19
19
  @directory_traveling = directory_traveling
20
20
  @downloader = Downloader.new(download_to)
21
- @post_to_slack = post_to_slack
22
21
  @size = size
23
22
  @threads = threads
24
23
  @verbose = verbose
25
24
 
26
25
  @feeds = Feeds.new(size, directory_traveling: directory_traveling)
26
+ @notifier = Notifier.new(post_to_slack)
27
27
  end
28
28
 
29
29
  def execute
@@ -32,13 +32,13 @@ module Miteru
32
32
  Parallel.each(feeds.suspicious_urls, in_threads: threads) do |url|
33
33
  website = Website.new(url)
34
34
  if website.has_kit?
35
- message = "#{website.url}: it might contain phishing kit(s) (#{website.compressed_files.join(', ')})."
36
- puts message.colorize(:light_red)
37
- post_a_message_to_slack(message) if post_to_slack? && valid_slack_setting?
38
35
  downloader.download_compressed_files(website.url, website.compressed_files) if auto_download?
36
+ notify(website.url, website.compressed_files)
39
37
  else
40
- puts "#{website.url}: it doesn't contain a phishing kit." if verbose
38
+ notify(website.url, website.compressed_files) if verbose
41
39
  end
40
+ rescue OpenSSL::SSL::SSLError, HTTP::Error, LL::ParserError => _
41
+ next
42
42
  end
43
43
  end
44
44
 
@@ -54,26 +54,12 @@ module Miteru
54
54
  ).execute
55
55
  end
56
56
 
57
- def post_a_message_to_slack(message)
58
- webhook_url = ENV["SLACK_WEBHOOK_URL"]
59
- raise ArgumentError, "Please set the Slack webhook URL via SLACK_WEBHOOK_URL env" unless webhook_url
60
-
61
- channel = ENV["SLACK_CHANNEL"] || "#general"
62
-
63
- payload = { text: message, channel: channel }
64
- HTTPClient.post(webhook_url, json: payload)
65
- end
66
-
67
- def post_to_slack?
68
- @post_to_slack
57
+ def notify(url, message)
58
+ @notifier.notify(url, message)
69
59
  end
70
60
 
71
61
  def auto_download?
72
62
  @auto_download
73
63
  end
74
-
75
- def valid_slack_setting?
76
- ENV["SLACK_WEBHOOK_URL"] != nil
77
- end
78
64
  end
79
65
  end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "colorize"
4
+ require "slack/incoming/webhooks"
5
+
6
+ module Miteru
7
+ class Notifier
8
+ def initialize(post_to_slack = false)
9
+ @post_to_slack = post_to_slack
10
+ end
11
+
12
+ def notify(url, compressed_files)
13
+ message = compressed_files.empty? ? "it doesn't contain a phishing kit." : "it might contain phishing kit(s): (#{compressed_files.join(', ')})."
14
+
15
+ if post_to_slack? && !compressed_files.empty?
16
+ slack = Slack::Incoming::Webhooks.new(slack_webhook_url, channel: slack_channel)
17
+ slack.post url, attachments: [{ text: message }]
18
+ end
19
+
20
+ message = message.colorize(:light_red) unless compressed_files.empty?
21
+ puts "#{url}: #{message}"
22
+ end
23
+
24
+ def post_to_slack?
25
+ @post_to_slack && slack_webhook_url?
26
+ end
27
+
28
+ def slack_webhook_url
29
+ ENV.fetch "SLACK_WEBHOOK_URL"
30
+ end
31
+
32
+ def slack_channel
33
+ ENV.fetch "SLACK_CHANNEL", "#general"
34
+ end
35
+
36
+ def slack_webhook_url?
37
+ ENV.key? "SLACK_WEBHOOK_URL"
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Miteru
4
- VERSION = "0.11.2"
4
+ VERSION = "0.11.3"
5
5
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ["lib"]
26
26
 
27
- spec.add_development_dependency "bundler", "~> 1.17"
27
+ spec.add_development_dependency "bundler", "~> 2.0"
28
28
  spec.add_development_dependency "coveralls", "~> 0.8"
29
29
  spec.add_development_dependency "glint", "~> 0.1"
30
30
  spec.add_development_dependency "rake", "~> 12.3"
@@ -37,5 +37,6 @@ Gem::Specification.new do |spec|
37
37
  spec.add_dependency "http", "~> 4.0"
38
38
  spec.add_dependency "oga", "~> 2.15"
39
39
  spec.add_dependency "parallel", "~> 1.12"
40
+ spec.add_dependency "slack-incoming-webhooks", "~> 0.2"
40
41
  spec.add_dependency "thor", "~> 0.19"
41
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miteru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.11.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu Niseki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-07 00:00:00.000000000 Z
11
+ date: 2019-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.17'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: coveralls
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
180
  version: '1.12'
181
+ - !ruby/object:Gem::Dependency
182
+ name: slack-incoming-webhooks
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.2'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '0.2'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: thor
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -221,6 +235,7 @@ files:
221
235
  - lib/miteru/feeds/feed.rb
222
236
  - lib/miteru/feeds/urlscan.rb
223
237
  - lib/miteru/http_client.rb
238
+ - lib/miteru/notifier.rb
224
239
  - lib/miteru/version.rb
225
240
  - lib/miteru/website.rb
226
241
  - miteru.gemspec