mihari 4.1.2 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/README.md +1 -1
  4. data/lib/mihari/analyzers/base.rb +18 -10
  5. data/lib/mihari/analyzers/rule.rb +1 -1
  6. data/lib/mihari/cli/base.rb +0 -4
  7. data/lib/mihari/commands/init.rb +1 -1
  8. data/lib/mihari/commands/search.rb +11 -58
  9. data/lib/mihari/commands/validator.rb +1 -2
  10. data/lib/mihari/emitters/base.rb +5 -2
  11. data/lib/mihari/emitters/slack.rb +40 -4
  12. data/lib/mihari/enrichers/base.rb +5 -2
  13. data/lib/mihari/enrichers/ipinfo.rb +4 -3
  14. data/lib/mihari/{web/entities → entities}/alert.rb +0 -0
  15. data/lib/mihari/{web/entities → entities}/artifact.rb +0 -0
  16. data/lib/mihari/{web/entities → entities}/autonomous_system.rb +0 -0
  17. data/lib/mihari/{web/entities → entities}/command.rb +0 -0
  18. data/lib/mihari/{web/entities → entities}/config.rb +0 -0
  19. data/lib/mihari/{web/entities → entities}/dns.rb +0 -0
  20. data/lib/mihari/{web/entities → entities}/geolocation.rb +0 -0
  21. data/lib/mihari/{web/entities → entities}/ip_address.rb +0 -0
  22. data/lib/mihari/{web/entities → entities}/message.rb +0 -0
  23. data/lib/mihari/{web/entities → entities}/reverse_dns.rb +0 -0
  24. data/lib/mihari/{web/entities → entities}/rule.rb +0 -0
  25. data/lib/mihari/{web/entities → entities}/source.rb +0 -0
  26. data/lib/mihari/{web/entities → entities}/tag.rb +0 -0
  27. data/lib/mihari/{web/entities → entities}/whois.rb +0 -0
  28. data/lib/mihari/errors.rb +2 -0
  29. data/lib/mihari/feed/reader.rb +11 -55
  30. data/lib/mihari/http.rb +94 -0
  31. data/lib/mihari/mixins/error_notification.rb +20 -0
  32. data/lib/mihari/mixins/retriable.rb +12 -2
  33. data/lib/mihari/mixins/rule.rb +1 -2
  34. data/lib/mihari/structs/ipinfo.rb +2 -3
  35. data/lib/mihari/structs/rule.rb +30 -0
  36. data/lib/mihari/structs/shodan.rb +9 -1
  37. data/lib/mihari/version.rb +1 -1
  38. data/lib/mihari/web/api.rb +0 -20
  39. data/lib/mihari/web/app.rb +2 -2
  40. data/lib/mihari/web/endpoints/rules.rb +3 -1
  41. data/lib/mihari/web/middleware/error_notification_adapter.rb +19 -0
  42. data/lib/mihari/web/public/index.html +1 -1
  43. data/lib/mihari/web/public/redoc-static.html +1881 -165
  44. data/lib/mihari/web/public/static/css/app.43138058.css +1 -0
  45. data/lib/mihari/web/public/static/css/chunk-vendors.3ed9b08e.css +7 -0
  46. data/lib/mihari/web/public/static/fonts/fa-brands-400.1fd0b4d7.ttf +0 -0
  47. data/lib/mihari/web/public/static/fonts/fa-brands-400.5d5236fb.woff2 +0 -0
  48. data/lib/mihari/web/public/static/fonts/fa-regular-400.64b3730e.woff2 +0 -0
  49. data/lib/mihari/web/public/static/fonts/fa-regular-400.95a8a8af.ttf +0 -0
  50. data/lib/mihari/web/public/static/fonts/fa-solid-900.6115ad71.woff2 +0 -0
  51. data/lib/mihari/web/public/static/fonts/fa-solid-900.f0203cfc.ttf +0 -0
  52. data/lib/mihari/web/public/static/fonts/fa-v4compatibility.e1023515.ttf +0 -0
  53. data/lib/mihari/web/public/static/js/app-legacy.46b666f0.js +2 -0
  54. data/lib/mihari/web/public/static/js/app-legacy.46b666f0.js.map +1 -0
  55. data/lib/mihari/web/public/static/js/app.4818aedd.js +2 -0
  56. data/lib/mihari/web/public/static/js/app.4818aedd.js.map +1 -0
  57. data/lib/mihari/web/public/static/js/chunk-vendors-legacy.c99e452e.js +17 -0
  58. data/lib/mihari/web/public/static/js/chunk-vendors-legacy.c99e452e.js.map +1 -0
  59. data/lib/mihari/web/public/static/js/chunk-vendors.15e84e22.js +23 -0
  60. data/lib/mihari/web/public/static/js/chunk-vendors.15e84e22.js.map +1 -0
  61. data/lib/mihari.rb +63 -15
  62. data/mihari.gemspec +3 -3
  63. data/sig/lib/mihari/emitters/slack.rbs +29 -1
  64. data/sig/lib/mihari/feed/reader.rbs +2 -2
  65. data/sig/lib/mihari/http.rbs +65 -0
  66. data/sig/lib/mihari/mixins/error_notification.rbs +12 -0
  67. data/sig/lib/mihari/structs/rule.rbs +6 -0
  68. data/sig/lib/mihari.rbs +4 -8
  69. metadata +68 -55
  70. data/lib/mihari/cli/mixins/utils.rb +0 -72
  71. data/lib/mihari/emitters/stdout.rb +0 -22
  72. data/lib/mihari/notifiers/base.rb +0 -24
  73. data/lib/mihari/notifiers/exception_notifier.rb +0 -126
  74. data/lib/mihari/notifiers/slack.rb +0 -63
  75. data/sig/lib/mihari/cli/mixins/utils.rbs +0 -50
  76. data/sig/lib/mihari/notifiers/base.rbs +0 -18
  77. data/sig/lib/mihari/notifiers/exception_notifier.rbs +0 -75
  78. data/sig/lib/mihari/notifiers/slack.rbs +0 -50
data/lib/mihari.rb CHANGED
@@ -1,5 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # standard libs
4
+ require "ipaddr"
5
+ require "json"
6
+ require "net/http"
7
+ require "net/https"
8
+ require "resolv"
9
+ require "yaml"
10
+
11
+ # Active Support & Active Record
3
12
  require "active_support"
4
13
 
5
14
  require "active_support/core_ext/hash"
@@ -17,23 +26,22 @@ require "dry/struct"
17
26
  require "dry/types"
18
27
  require "dry/validation"
19
28
 
20
- # standard & utility libs
29
+ # Grape
30
+ require "grape"
31
+ require "grape-entity"
32
+
33
+ # Other utility libs
21
34
  require "addressable/uri"
22
35
  require "awrence"
23
- require "colorize"
24
36
  require "email_address"
25
- require "ipaddr"
26
- require "json"
27
37
  require "memist"
28
- require "net/http"
29
- require "net/https"
30
38
  require "net/ping"
39
+ require "parallel"
31
40
  require "plissken"
32
41
  require "public_suffix"
33
- require "resolv"
42
+ require "semantic_logger"
43
+ require "sentry-ruby"
34
44
  require "uuidtools"
35
- require "yaml"
36
- require "parallel"
37
45
 
38
46
  # Load .env
39
47
  require "dotenv/load"
@@ -47,6 +55,7 @@ require "mihari/mixins/autonomous_system"
47
55
  require "mihari/mixins/configurable"
48
56
  require "mihari/mixins/database"
49
57
  require "mihari/mixins/disallowed_data_value"
58
+ require "mihari/mixins/error_notification"
50
59
  require "mihari/mixins/refang"
51
60
  require "mihari/mixins/retriable"
52
61
  require "mihari/mixins/rule"
@@ -88,6 +97,7 @@ module Mihari
88
97
  setting :webhook_url, default: ENV["WEBHOOK_URL"]
89
98
  setting :webhook_use_json_body, constructor: ->(value = ENV["WEBHOOK_USE_JSON_BODY"]) { truthy?(value) }
90
99
  setting :zoomeye_api_key, default: ENV["ZOOMEYE_API_KEY"]
100
+ setting :sentry_dsn, default: ENV["SENTRY_DSN"]
91
101
 
92
102
  class << self
93
103
  include Memist::Memoizable
@@ -106,12 +116,32 @@ module Mihari
106
116
  []
107
117
  end
108
118
  memoize :enrichers
119
+
120
+ def logger
121
+ SemanticLogger.default_level = :info
122
+ SemanticLogger.add_appender(io: $stderr, formatter: :color)
123
+ SemanticLogger["Mihari"]
124
+ end
125
+ memoize :logger
126
+
127
+ def initialize_sentry
128
+ return if Mihari.config.sentry_dsn.nil?
129
+ return if Sentry.initialized?
130
+
131
+ Sentry.init do |config|
132
+ config.dsn = Mihari.config.sentry_dsn
133
+
134
+ config.traces_sample_rate = 0.5
135
+ end
136
+ end
109
137
  end
110
138
  end
111
139
 
112
140
  require "mihari/database"
113
141
  require "mihari/type_checker"
114
142
 
143
+ require "mihari/http"
144
+
115
145
  # Constants
116
146
  require "mihari/constants"
117
147
 
@@ -175,20 +205,35 @@ require "mihari/analyzers/virustotal"
175
205
  require "mihari/analyzers/zoomeye"
176
206
  require "mihari/analyzers/rule"
177
207
 
178
- # Notifiers
179
- require "mihari/notifiers/base"
180
- require "mihari/notifiers/slack"
181
- require "mihari/notifiers/exception_notifier"
182
-
183
208
  # Emitters
184
209
  require "mihari/emitters/base"
185
210
  require "mihari/emitters/database"
186
211
  require "mihari/emitters/misp"
187
212
  require "mihari/emitters/slack"
188
- require "mihari/emitters/stdout"
189
213
  require "mihari/emitters/the_hive"
190
214
  require "mihari/emitters/webhook"
191
215
 
216
+ # Entities
217
+
218
+ require "mihari/entities/message"
219
+
220
+ require "mihari/entities/autonomous_system"
221
+ require "mihari/entities/command"
222
+ require "mihari/entities/config"
223
+ require "mihari/entities/dns"
224
+ require "mihari/entities/geolocation"
225
+ require "mihari/entities/ip_address"
226
+ require "mihari/entities/reverse_dns"
227
+ require "mihari/entities/source"
228
+ require "mihari/entities/tag"
229
+ require "mihari/entities/whois"
230
+
231
+ require "mihari/entities/artifact"
232
+
233
+ require "mihari/entities/alert"
234
+
235
+ require "mihari/entities/rule"
236
+
192
237
  # Status checker
193
238
  require "mihari/status"
194
239
 
@@ -197,3 +242,6 @@ require "mihari/web/app"
197
242
 
198
243
  # CLIs
199
244
  require "mihari/cli/main"
245
+
246
+ # initialize Sentry
247
+ Mihari.initialize_sentry
data/mihari.gemspec CHANGED
@@ -47,7 +47,6 @@ Gem::Specification.new do |spec|
47
47
  spec.add_dependency "awrence", "~> 2.0"
48
48
  spec.add_dependency "binaryedge", "~> 0.1"
49
49
  spec.add_dependency "censysx", "~> 0.1"
50
- spec.add_dependency "colorize", "~> 0.8"
51
50
  spec.add_dependency "crtsh-rb", "~> 0.3"
52
51
  spec.add_dependency "dnpedia", "~> 0.1"
53
52
  spec.add_dependency "dnstwister", "~> 0.1"
@@ -57,7 +56,7 @@ Gem::Specification.new do |spec|
57
56
  spec.add_dependency "dry-files", "0.1.0"
58
57
  spec.add_dependency "dry-initializer", "3.1.1"
59
58
  spec.add_dependency "dry-struct", "1.4.0"
60
- spec.add_dependency "dry-validation", "1.7.0"
59
+ spec.add_dependency "dry-validation", "1.8.0"
61
60
  spec.add_dependency "email_address", "~> 0.2"
62
61
  spec.add_dependency "grape", "1.6.2"
63
62
  spec.add_dependency "grape-entity", "0.10.1"
@@ -65,7 +64,6 @@ Gem::Specification.new do |spec|
65
64
  spec.add_dependency "grape-swagger-entity", "0.5.1"
66
65
  spec.add_dependency "greynoise", "~> 0.1"
67
66
  spec.add_dependency "hachi", "~> 1.0"
68
- spec.add_dependency "http", "~> 5.0"
69
67
  spec.add_dependency "jr-cli", "~> 0.5"
70
68
  spec.add_dependency "launchy", "~> 2.5"
71
69
  spec.add_dependency "memist", "~> 2.0"
@@ -86,6 +84,8 @@ Gem::Specification.new do |spec|
86
84
  spec.add_dependency "rack-cors", "~> 1.1"
87
85
  spec.add_dependency "safe_shell", "~> 1.1"
88
86
  spec.add_dependency "securitytrails", "~> 1.0"
87
+ spec.add_dependency "semantic_logger", "~> 4.10"
88
+ spec.add_dependency "sentry-ruby", "~> 5.1.1"
89
89
  spec.add_dependency "shodanx", "~> 0.2"
90
90
  spec.add_dependency "slack-notifier", "~> 2.4"
91
91
  spec.add_dependency "spysex", "~> 0.2"
@@ -39,7 +39,35 @@ module Mihari
39
39
  end
40
40
 
41
41
  class Slack < Base
42
- def notifier: () -> Mihari::Notifiers::Slack
42
+ SLACK_WEBHOOK_URL_KEY: ::String
43
+
44
+ SLACK_CHANNEL_KEY: ::String
45
+
46
+ DEFAULT_USERNAME: ::String
47
+
48
+ #
49
+ # Slack channel to post
50
+ #
51
+ # @return [String]
52
+ #
53
+ def slack_channel: () -> String
54
+
55
+ #
56
+ # Slack webhook URL
57
+ #
58
+ # @return [String]
59
+ #
60
+ def slack_webhook_url: () -> String
61
+
62
+ #
63
+ # Check Slack webhook URL is set
64
+ #
65
+ # @return [Boolean]
66
+ #
67
+ def slack_webhook_url?: () -> bool
68
+
69
+
70
+ def notifier: () -> ::Slack::Notifier
43
71
 
44
72
  def valid?: () -> bool
45
73
 
@@ -12,8 +12,8 @@ module Mihari
12
12
 
13
13
  def initialize: (
14
14
  String uri,
15
- ?http_request_headers: Hash[(String | Symbol), untyped]] http_request_headers,
16
- ?http_request_method: ::String http_request_method,
15
+ ?http_request_headers: Hash[(String | Symbol), untyped] http_request_headers,
16
+ ?http_request_method: String http_request_method,
17
17
  ?http_request_payload_type: String? http_request_payload_type,
18
18
  ?http_request_payload: Hash[(String | Symbol), untyped] http_request_payload
19
19
  ) -> void
@@ -0,0 +1,65 @@
1
+
2
+ module Mihari
3
+ class HTTP
4
+ attr_reader uri: URI
5
+
6
+ attr_reader headers: Hash[(String | Symbol), untyped]
7
+
8
+ attr_reader payload_type: String?
9
+
10
+ attr_reader payload: Hash[(String | Symbol), untyped]
11
+
12
+ def initialize: (
13
+ String uri,
14
+ ?headers: Hash[(String | Symbol), untyped] headers,
15
+ ?payload_type: String? payload_type,
16
+ ?payload: Hash[(String | Symbol), untyped] payload
17
+ ) -> void
18
+
19
+ #
20
+ # Make a GET request
21
+ #
22
+ # @return [Net::HTTPResponse]
23
+ #
24
+ def get: () -> Net::HTTPResponse
25
+
26
+ #
27
+ # Make a POST request
28
+ #
29
+ # @return [Net::HTTPResponse]
30
+ #
31
+ def post: () -> Net::HTTPResponse
32
+
33
+ def self.get: (
34
+ String uri,
35
+ ?headers: Hash[(String | Symbol), untyped] headers,
36
+ ?payload_type: String? payload_type,
37
+ ?payload: Hash[(String | Symbol), untyped] payload
38
+ ) -> Net::HTTPResponse
39
+
40
+ def self.post: (
41
+ String uri,
42
+ ?headers: Hash[(String | Symbol), untyped] headers,
43
+ ?payload_type: String? payload_type,
44
+ ?payload: Hash[(String | Symbol), untyped] payload
45
+ ) -> Net::HTTPResponse
46
+
47
+ private
48
+
49
+ #
50
+ # Get options for HTTP request
51
+ #
52
+ # @return [Hahs]
53
+ #
54
+ def https_options: () -> ({ use_ssl: ::TrueClass } | ::Hash[untyped, untyped])
55
+
56
+ #
57
+ # Make a HTTP request
58
+ #
59
+ # @param [Net::HTTPRequest] req
60
+ #
61
+ # @return [Net::HTTPResponse]
62
+ #
63
+ def request: (untyped req) -> Net::HTTPResponse
64
+ end
65
+ end
@@ -0,0 +1,12 @@
1
+ module Mihari
2
+ module Mixins
3
+ module ErrorNotification
4
+ #
5
+ # Send an exception notification if there is any error in a block
6
+ #
7
+ # @return [Nil]
8
+ #
9
+ def with_error_notification: () { () -> untyped } -> void
10
+ end
11
+ end
12
+ end
@@ -50,6 +50,12 @@ module Mihari
50
50
  # @return [Mihari::Rule]
51
51
  #
52
52
  def to_model: () -> Mihari::Rule
53
+
54
+ def to_analyzer: () -> Mihari::Analyzers::Rule
55
+
56
+ class << self
57
+ def from_model: (Mihari::Rule model) -> Mihari::Structs::Rule::Rule
58
+ end
53
59
  end
54
60
  end
55
61
  end
data/sig/lib/mihari.rbs CHANGED
@@ -25,6 +25,7 @@ class Configuration
25
25
  attr_accessor webhook_url (): String?
26
26
  attr_accessor webhook_use_json_body (): (bool | nil)
27
27
  attr_accessor database (): String?
28
+ attr_accessor sentry_dsn(): String?
28
29
 
29
30
  attr_reader values: Hash[(String | Symbol), String?]
30
31
  end
@@ -42,14 +43,9 @@ module Mihari
42
43
 
43
44
  def self.enrichers: () -> ::Array[singleton(Mihari::Enrichers::Base)]
44
45
 
45
- #
46
- # Load configuration from YAML file
47
- #
48
- # @param [String] path Path to YAML file
49
- #
50
- # @return [nil]
51
- #
52
- def self.load_config_from_yaml: (String path) -> void
46
+ def self.logger: () -> SemanticLogger
47
+
48
+ def self.initialize_sentry: () -> void
53
49
  end
54
50
 
55
51
  class Object
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mihari
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.2
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu Niseki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-12 00:00:00.000000000 Z
11
+ date: 2022-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -304,20 +304,6 @@ dependencies:
304
304
  - - "~>"
305
305
  - !ruby/object:Gem::Version
306
306
  version: '0.1'
307
- - !ruby/object:Gem::Dependency
308
- name: colorize
309
- requirement: !ruby/object:Gem::Requirement
310
- requirements:
311
- - - "~>"
312
- - !ruby/object:Gem::Version
313
- version: '0.8'
314
- type: :runtime
315
- prerelease: false
316
- version_requirements: !ruby/object:Gem::Requirement
317
- requirements:
318
- - - "~>"
319
- - !ruby/object:Gem::Version
320
- version: '0.8'
321
307
  - !ruby/object:Gem::Dependency
322
308
  name: crtsh-rb
323
309
  requirement: !ruby/object:Gem::Requirement
@@ -450,14 +436,14 @@ dependencies:
450
436
  requirements:
451
437
  - - '='
452
438
  - !ruby/object:Gem::Version
453
- version: 1.7.0
439
+ version: 1.8.0
454
440
  type: :runtime
455
441
  prerelease: false
456
442
  version_requirements: !ruby/object:Gem::Requirement
457
443
  requirements:
458
444
  - - '='
459
445
  - !ruby/object:Gem::Version
460
- version: 1.7.0
446
+ version: 1.8.0
461
447
  - !ruby/object:Gem::Dependency
462
448
  name: email_address
463
449
  requirement: !ruby/object:Gem::Requirement
@@ -556,20 +542,6 @@ dependencies:
556
542
  - - "~>"
557
543
  - !ruby/object:Gem::Version
558
544
  version: '1.0'
559
- - !ruby/object:Gem::Dependency
560
- name: http
561
- requirement: !ruby/object:Gem::Requirement
562
- requirements:
563
- - - "~>"
564
- - !ruby/object:Gem::Version
565
- version: '5.0'
566
- type: :runtime
567
- prerelease: false
568
- version_requirements: !ruby/object:Gem::Requirement
569
- requirements:
570
- - - "~>"
571
- - !ruby/object:Gem::Version
572
- version: '5.0'
573
545
  - !ruby/object:Gem::Dependency
574
546
  name: jr-cli
575
547
  requirement: !ruby/object:Gem::Requirement
@@ -850,6 +822,34 @@ dependencies:
850
822
  - - "~>"
851
823
  - !ruby/object:Gem::Version
852
824
  version: '1.0'
825
+ - !ruby/object:Gem::Dependency
826
+ name: semantic_logger
827
+ requirement: !ruby/object:Gem::Requirement
828
+ requirements:
829
+ - - "~>"
830
+ - !ruby/object:Gem::Version
831
+ version: '4.10'
832
+ type: :runtime
833
+ prerelease: false
834
+ version_requirements: !ruby/object:Gem::Requirement
835
+ requirements:
836
+ - - "~>"
837
+ - !ruby/object:Gem::Version
838
+ version: '4.10'
839
+ - !ruby/object:Gem::Dependency
840
+ name: sentry-ruby
841
+ requirement: !ruby/object:Gem::Requirement
842
+ requirements:
843
+ - - "~>"
844
+ - !ruby/object:Gem::Version
845
+ version: 5.1.1
846
+ type: :runtime
847
+ prerelease: false
848
+ version_requirements: !ruby/object:Gem::Requirement
849
+ requirements:
850
+ - - "~>"
851
+ - !ruby/object:Gem::Version
852
+ version: 5.1.1
853
853
  - !ruby/object:Gem::Dependency
854
854
  name: shodanx
855
855
  requirement: !ruby/object:Gem::Requirement
@@ -1080,7 +1080,6 @@ files:
1080
1080
  - lib/mihari/cli/base.rb
1081
1081
  - lib/mihari/cli/init.rb
1082
1082
  - lib/mihari/cli/main.rb
1083
- - lib/mihari/cli/mixins/utils.rb
1084
1083
  - lib/mihari/cli/validator.rb
1085
1084
  - lib/mihari/commands/init.rb
1086
1085
  - lib/mihari/commands/search.rb
@@ -1092,18 +1091,33 @@ files:
1092
1091
  - lib/mihari/emitters/database.rb
1093
1092
  - lib/mihari/emitters/misp.rb
1094
1093
  - lib/mihari/emitters/slack.rb
1095
- - lib/mihari/emitters/stdout.rb
1096
1094
  - lib/mihari/emitters/the_hive.rb
1097
1095
  - lib/mihari/emitters/webhook.rb
1098
1096
  - lib/mihari/enrichers/base.rb
1099
1097
  - lib/mihari/enrichers/ipinfo.rb
1098
+ - lib/mihari/entities/alert.rb
1099
+ - lib/mihari/entities/artifact.rb
1100
+ - lib/mihari/entities/autonomous_system.rb
1101
+ - lib/mihari/entities/command.rb
1102
+ - lib/mihari/entities/config.rb
1103
+ - lib/mihari/entities/dns.rb
1104
+ - lib/mihari/entities/geolocation.rb
1105
+ - lib/mihari/entities/ip_address.rb
1106
+ - lib/mihari/entities/message.rb
1107
+ - lib/mihari/entities/reverse_dns.rb
1108
+ - lib/mihari/entities/rule.rb
1109
+ - lib/mihari/entities/source.rb
1110
+ - lib/mihari/entities/tag.rb
1111
+ - lib/mihari/entities/whois.rb
1100
1112
  - lib/mihari/errors.rb
1101
1113
  - lib/mihari/feed/parser.rb
1102
1114
  - lib/mihari/feed/reader.rb
1115
+ - lib/mihari/http.rb
1103
1116
  - lib/mihari/mixins/autonomous_system.rb
1104
1117
  - lib/mihari/mixins/configurable.rb
1105
1118
  - lib/mihari/mixins/database.rb
1106
1119
  - lib/mihari/mixins/disallowed_data_value.rb
1120
+ - lib/mihari/mixins/error_notification.rb
1107
1121
  - lib/mihari/mixins/refang.rb
1108
1122
  - lib/mihari/mixins/retriable.rb
1109
1123
  - lib/mihari/mixins/rule.rb
@@ -1117,9 +1131,6 @@ files:
1117
1131
  - lib/mihari/models/tag.rb
1118
1132
  - lib/mihari/models/tagging.rb
1119
1133
  - lib/mihari/models/whois.rb
1120
- - lib/mihari/notifiers/base.rb
1121
- - lib/mihari/notifiers/exception_notifier.rb
1122
- - lib/mihari/notifiers/slack.rb
1123
1134
  - lib/mihari/schemas/analyzer.rb
1124
1135
  - lib/mihari/schemas/macros.rb
1125
1136
  - lib/mihari/schemas/rule.rb
@@ -1147,36 +1158,29 @@ files:
1147
1158
  - lib/mihari/web/endpoints/rules.rb
1148
1159
  - lib/mihari/web/endpoints/sources.rb
1149
1160
  - lib/mihari/web/endpoints/tags.rb
1150
- - lib/mihari/web/entities/alert.rb
1151
- - lib/mihari/web/entities/artifact.rb
1152
- - lib/mihari/web/entities/autonomous_system.rb
1153
- - lib/mihari/web/entities/command.rb
1154
- - lib/mihari/web/entities/config.rb
1155
- - lib/mihari/web/entities/dns.rb
1156
- - lib/mihari/web/entities/geolocation.rb
1157
- - lib/mihari/web/entities/ip_address.rb
1158
- - lib/mihari/web/entities/message.rb
1159
- - lib/mihari/web/entities/reverse_dns.rb
1160
- - lib/mihari/web/entities/rule.rb
1161
- - lib/mihari/web/entities/source.rb
1162
- - lib/mihari/web/entities/tag.rb
1163
- - lib/mihari/web/entities/whois.rb
1164
1161
  - lib/mihari/web/middleware/connection_adapter.rb
1162
+ - lib/mihari/web/middleware/error_notification_adapter.rb
1165
1163
  - lib/mihari/web/public/index.html
1166
1164
  - lib/mihari/web/public/redoc-static.html
1165
+ - lib/mihari/web/public/static/css/app.43138058.css
1166
+ - lib/mihari/web/public/static/css/chunk-vendors.3ed9b08e.css
1167
1167
  - lib/mihari/web/public/static/favicon.ico
1168
1168
  - lib/mihari/web/public/static/fonts/fa-brands-400.099a9556.woff
1169
1169
  - lib/mihari/web/public/static/fonts/fa-brands-400.1a575a41.woff
1170
+ - lib/mihari/web/public/static/fonts/fa-brands-400.1fd0b4d7.ttf
1170
1171
  - lib/mihari/web/public/static/fonts/fa-brands-400.30cc681d.eot
1171
1172
  - lib/mihari/web/public/static/fonts/fa-brands-400.3b89dd10.ttf
1172
1173
  - lib/mihari/web/public/static/fonts/fa-brands-400.513aa607.ttf
1173
1174
  - lib/mihari/web/public/static/fonts/fa-brands-400.592643a8.eot
1175
+ - lib/mihari/web/public/static/fonts/fa-brands-400.5d5236fb.woff2
1174
1176
  - lib/mihari/web/public/static/fonts/fa-brands-400.ed311c7a.woff2
1175
1177
  - lib/mihari/web/public/static/fonts/fa-brands-400.f7307680.woff2
1176
1178
  - lib/mihari/web/public/static/fonts/fa-regular-400.1f77739c.ttf
1179
+ - lib/mihari/web/public/static/fonts/fa-regular-400.64b3730e.woff2
1177
1180
  - lib/mihari/web/public/static/fonts/fa-regular-400.7124eb50.woff
1178
1181
  - lib/mihari/web/public/static/fonts/fa-regular-400.7630483d.eot
1179
1182
  - lib/mihari/web/public/static/fonts/fa-regular-400.766913e6.ttf
1183
+ - lib/mihari/web/public/static/fonts/fa-regular-400.95a8a8af.ttf
1180
1184
  - lib/mihari/web/public/static/fonts/fa-regular-400.b0e2db3b.eot
1181
1185
  - lib/mihari/web/public/static/fonts/fa-regular-400.b91d376b.woff2
1182
1186
  - lib/mihari/web/public/static/fonts/fa-regular-400.d1d7e3b4.woff
@@ -1184,17 +1188,22 @@ files:
1184
1188
  - lib/mihari/web/public/static/fonts/fa-solid-900.0c6bfc66.eot
1185
1189
  - lib/mihari/web/public/static/fonts/fa-solid-900.1042e8ca.eot
1186
1190
  - lib/mihari/web/public/static/fonts/fa-solid-900.605ed792.ttf
1191
+ - lib/mihari/web/public/static/fonts/fa-solid-900.6115ad71.woff2
1187
1192
  - lib/mihari/web/public/static/fonts/fa-solid-900.9fe5a17c.woff
1188
1193
  - lib/mihari/web/public/static/fonts/fa-solid-900.b9625119.ttf
1189
1194
  - lib/mihari/web/public/static/fonts/fa-solid-900.d745348d.woff
1190
1195
  - lib/mihari/web/public/static/fonts/fa-solid-900.d824df7e.woff2
1191
1196
  - lib/mihari/web/public/static/fonts/fa-solid-900.e8a427e1.woff2
1197
+ - lib/mihari/web/public/static/fonts/fa-solid-900.f0203cfc.ttf
1198
+ - lib/mihari/web/public/static/fonts/fa-v4compatibility.e1023515.ttf
1192
1199
  - lib/mihari/web/public/static/img/fa-brands-400.1d5619cd.svg
1193
1200
  - lib/mihari/web/public/static/img/fa-brands-400.ba7ed552.svg
1194
1201
  - lib/mihari/web/public/static/img/fa-regular-400.0bb42845.svg
1195
1202
  - lib/mihari/web/public/static/img/fa-regular-400.c5d109be.svg
1196
1203
  - lib/mihari/web/public/static/img/fa-solid-900.376c1f97.svg
1197
1204
  - lib/mihari/web/public/static/img/fa-solid-900.37bc7099.svg
1205
+ - lib/mihari/web/public/static/js/app-legacy.46b666f0.js
1206
+ - lib/mihari/web/public/static/js/app-legacy.46b666f0.js.map
1198
1207
  - lib/mihari/web/public/static/js/app.06d5cf1c.js
1199
1208
  - lib/mihari/web/public/static/js/app.06d5cf1c.js.map
1200
1209
  - lib/mihari/web/public/static/js/app.0a0cc502.js
@@ -1205,6 +1214,8 @@ files:
1205
1214
  - lib/mihari/web/public/static/js/app.365f1907.js.map
1206
1215
  - lib/mihari/web/public/static/js/app.378da3dc.js
1207
1216
  - lib/mihari/web/public/static/js/app.378da3dc.js.map
1217
+ - lib/mihari/web/public/static/js/app.4818aedd.js
1218
+ - lib/mihari/web/public/static/js/app.4818aedd.js.map
1208
1219
  - lib/mihari/web/public/static/js/app.49ab738a.js
1209
1220
  - lib/mihari/web/public/static/js/app.49ab738a.js.map
1210
1221
  - lib/mihari/web/public/static/js/app.5dc97aae.js
@@ -1231,6 +1242,10 @@ files:
1231
1242
  - lib/mihari/web/public/static/js/app.f2b8890f.js.map
1232
1243
  - lib/mihari/web/public/static/js/app.fbc19869.js
1233
1244
  - lib/mihari/web/public/static/js/app.fbc19869.js.map
1245
+ - lib/mihari/web/public/static/js/chunk-vendors-legacy.c99e452e.js
1246
+ - lib/mihari/web/public/static/js/chunk-vendors-legacy.c99e452e.js.map
1247
+ - lib/mihari/web/public/static/js/chunk-vendors.15e84e22.js
1248
+ - lib/mihari/web/public/static/js/chunk-vendors.15e84e22.js.map
1234
1249
  - mihari.gemspec
1235
1250
  - renovate.json
1236
1251
  - sig/lib/mihari.rbs
@@ -1257,7 +1272,6 @@ files:
1257
1272
  - sig/lib/mihari/cli/base.rbs
1258
1273
  - sig/lib/mihari/cli/init.rbs
1259
1274
  - sig/lib/mihari/cli/main.rbs
1260
- - sig/lib/mihari/cli/mixins/utils.rbs
1261
1275
  - sig/lib/mihari/cli/validator.rbs
1262
1276
  - sig/lib/mihari/commands/init.rbs
1263
1277
  - sig/lib/mihari/commands/json.rbs
@@ -1278,10 +1292,12 @@ files:
1278
1292
  - sig/lib/mihari/errors.rbs
1279
1293
  - sig/lib/mihari/feed/parser.rbs
1280
1294
  - sig/lib/mihari/feed/reader.rbs
1295
+ - sig/lib/mihari/http.rbs
1281
1296
  - sig/lib/mihari/mixins/autonomous_system.rbs
1282
1297
  - sig/lib/mihari/mixins/configurable.rbs
1283
1298
  - sig/lib/mihari/mixins/configuration.rbs
1284
1299
  - sig/lib/mihari/mixins/disallowed_data_value.rbs
1300
+ - sig/lib/mihari/mixins/error_notification.rbs
1285
1301
  - sig/lib/mihari/mixins/hash.rbs
1286
1302
  - sig/lib/mihari/mixins/refang.rbs
1287
1303
  - sig/lib/mihari/mixins/retriable.rbs
@@ -1296,9 +1312,6 @@ files:
1296
1312
  - sig/lib/mihari/models/tag.rbs
1297
1313
  - sig/lib/mihari/models/tagging.rbs
1298
1314
  - sig/lib/mihari/models/whois.rbs
1299
- - sig/lib/mihari/notifiers/base.rbs
1300
- - sig/lib/mihari/notifiers/exception_notifier.rbs
1301
- - sig/lib/mihari/notifiers/slack.rbs
1302
1315
  - sig/lib/mihari/status.rbs
1303
1316
  - sig/lib/mihari/structs/alert.rbs
1304
1317
  - sig/lib/mihari/structs/censys.rbs