mihari 4.1.2 → 4.2.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.
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