mihari 5.2.4 → 5.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -1
  3. data/README.md +0 -10
  4. data/Rakefile +13 -1
  5. data/build_frontend.sh +1 -1
  6. data/frontend/.eslintrc.cjs +22 -0
  7. data/frontend/.gitignore +18 -12
  8. data/frontend/.prettierrc.json +8 -0
  9. data/frontend/env.d.ts +5 -0
  10. data/frontend/package-lock.json +5213 -9655
  11. data/frontend/package.json +38 -25
  12. data/frontend/src/App.vue +5 -5
  13. data/frontend/src/api-helper.ts +38 -40
  14. data/frontend/src/api.ts +40 -40
  15. data/frontend/src/components/ErrorMessage.vue +8 -8
  16. data/frontend/src/components/Loading.vue +4 -4
  17. data/frontend/src/components/Navbar.vue +10 -27
  18. data/frontend/src/components/Pagination.vue +35 -42
  19. data/frontend/src/components/alert/Alert.vue +22 -27
  20. data/frontend/src/components/alert/Alerts.vue +23 -25
  21. data/frontend/src/components/alert/AlertsWithPagination.vue +34 -34
  22. data/frontend/src/components/alert/AlertsWrapper.vue +43 -50
  23. data/frontend/src/components/alert/Form.vue +39 -40
  24. data/frontend/src/components/artifact/AS.vue +7 -7
  25. data/frontend/src/components/artifact/Artifact.vue +69 -86
  26. data/frontend/src/components/artifact/ArtifactTag.vue +21 -27
  27. data/frontend/src/components/artifact/ArtifactTags.vue +8 -8
  28. data/frontend/src/components/artifact/ArtifactWrapper.vue +22 -25
  29. data/frontend/src/components/artifact/CPEs.vue +6 -6
  30. data/frontend/src/components/artifact/DnsRecords.vue +9 -9
  31. data/frontend/src/components/artifact/Ports.vue +6 -6
  32. data/frontend/src/components/artifact/ReverseDnsNames.vue +7 -7
  33. data/frontend/src/components/artifact/Tags.vue +6 -6
  34. data/frontend/src/components/artifact/WhoisRecord.vue +7 -9
  35. data/frontend/src/components/config/Configs.vue +9 -12
  36. data/frontend/src/components/config/ConfigsWrapper.vue +14 -20
  37. data/frontend/src/components/link/Link.vue +7 -7
  38. data/frontend/src/components/link/Links.vue +16 -21
  39. data/frontend/src/components/rule/EditRule.vue +23 -23
  40. data/frontend/src/components/rule/EditRuleWrapper.vue +22 -28
  41. data/frontend/src/components/rule/Form.vue +28 -28
  42. data/frontend/src/components/rule/InputForm.vue +31 -25
  43. data/frontend/src/components/rule/NewRule.vue +19 -19
  44. data/frontend/src/components/rule/Rule.vue +28 -30
  45. data/frontend/src/components/rule/RuleWrapper.vue +24 -31
  46. data/frontend/src/components/rule/Rules.vue +26 -30
  47. data/frontend/src/components/rule/RulesWrapper.vue +40 -43
  48. data/frontend/src/components/rule/YAML.vue +19 -22
  49. data/frontend/src/components/tag/Tag.vue +24 -32
  50. data/frontend/src/components/tag/Tags.vue +11 -11
  51. data/frontend/src/countries.ts +23 -23
  52. data/frontend/src/index.ts +9 -12
  53. data/frontend/src/links/anyrun.ts +10 -10
  54. data/frontend/src/links/base.ts +3 -3
  55. data/frontend/src/links/censys.ts +10 -10
  56. data/frontend/src/links/crtsh.ts +10 -10
  57. data/frontend/src/links/dnslytics.ts +18 -18
  58. data/frontend/src/links/greynoise.ts +10 -10
  59. data/frontend/src/links/index.ts +15 -15
  60. data/frontend/src/links/intezer.ts +10 -10
  61. data/frontend/src/links/otx.ts +14 -14
  62. data/frontend/src/links/securitytrails.ts +15 -15
  63. data/frontend/src/links/shodan.ts +10 -10
  64. data/frontend/src/links/urlscan.ts +19 -19
  65. data/frontend/src/links/virustotal.ts +27 -27
  66. data/frontend/src/main.ts +38 -8
  67. data/frontend/src/router/index.ts +20 -20
  68. data/frontend/src/rule.ts +6 -6
  69. data/frontend/src/shims-vue.d.ts +2 -2
  70. data/frontend/src/types.ts +91 -91
  71. data/frontend/src/utils.ts +23 -29
  72. data/frontend/src/views/Alerts.vue +7 -7
  73. data/frontend/src/views/Artifact.vue +17 -17
  74. data/frontend/src/views/Configs.vue +7 -7
  75. data/frontend/src/views/EditRule.vue +17 -17
  76. data/frontend/src/views/NewRule.vue +10 -10
  77. data/frontend/src/views/Rule.vue +17 -17
  78. data/frontend/src/views/Rules.vue +7 -7
  79. data/frontend/tests/utils.spec.ts +9 -0
  80. data/frontend/tsconfig.app.json +21 -0
  81. data/frontend/tsconfig.json +10 -36
  82. data/frontend/tsconfig.node.json +13 -0
  83. data/frontend/tsconfig.vitest.json +12 -0
  84. data/frontend/vite.config.ts +24 -0
  85. data/frontend/vitest.config.ts +21 -0
  86. data/lefthook.yml +4 -2
  87. data/lib/mihari/analyzers/base.rb +48 -14
  88. data/lib/mihari/analyzers/binaryedge.rb +10 -15
  89. data/lib/mihari/analyzers/censys.rb +12 -15
  90. data/lib/mihari/analyzers/circl.rb +10 -10
  91. data/lib/mihari/analyzers/crtsh.rb +10 -6
  92. data/lib/mihari/analyzers/dnstwister.rb +6 -8
  93. data/lib/mihari/analyzers/feed.rb +21 -10
  94. data/lib/mihari/analyzers/greynoise.rb +10 -20
  95. data/lib/mihari/analyzers/onyphe.rb +9 -14
  96. data/lib/mihari/analyzers/otx.rb +8 -9
  97. data/lib/mihari/analyzers/passivetotal.rb +10 -10
  98. data/lib/mihari/analyzers/pulsedive.rb +21 -31
  99. data/lib/mihari/analyzers/securitytrails.rb +8 -6
  100. data/lib/mihari/analyzers/shodan.rb +8 -13
  101. data/lib/mihari/analyzers/urlscan.rb +15 -20
  102. data/lib/mihari/analyzers/virustotal.rb +16 -26
  103. data/lib/mihari/analyzers/virustotal_intelligence.rb +11 -17
  104. data/lib/mihari/analyzers/zoomeye.rb +12 -17
  105. data/lib/mihari/config.rb +133 -0
  106. data/lib/mihari/constants.rb +3 -0
  107. data/lib/mihari/emitters/slack.rb +13 -3
  108. data/lib/mihari/errors.rb +1 -1
  109. data/lib/mihari/http.rb +2 -3
  110. data/lib/mihari/schemas/analyzer.rb +2 -0
  111. data/lib/mihari/type_checker.rb +6 -6
  112. data/lib/mihari/version.rb +1 -1
  113. data/lib/mihari/web/endpoints/configs.rb +5 -1
  114. data/lib/mihari/web/public/assets/{index-eed1bcd8.css → index-b17c40c6.css} +1 -5
  115. data/lib/mihari/web/public/assets/index-f740e4f9.js +799 -0
  116. data/lib/mihari/web/public/index.html +2 -2
  117. data/lib/mihari/web/public/redoc-static.html +388 -2193
  118. data/lib/mihari.rb +9 -59
  119. data/mihari.gemspec +8 -8
  120. metadata +29 -117
  121. data/frontend/.browserslistrc +0 -3
  122. data/frontend/.eslintrc.js +0 -33
  123. data/frontend/babel.config.js +0 -3
  124. data/frontend/jest.config.js +0 -9
  125. data/frontend/tests/unit/utils.spec.ts +0 -7
  126. data/frontend/vite.config.js +0 -24
  127. data/lib/mihari/web/public/assets/fa-brands-400-20c4a58b.ttf +0 -0
  128. data/lib/mihari/web/public/assets/fa-brands-400-74833209.woff2 +0 -0
  129. data/lib/mihari/web/public/assets/fa-regular-400-528d022d.ttf +0 -0
  130. data/lib/mihari/web/public/assets/fa-regular-400-8e7e5ea1.woff2 +0 -0
  131. data/lib/mihari/web/public/assets/fa-solid-900-67a65763.ttf +0 -0
  132. data/lib/mihari/web/public/assets/fa-solid-900-7152a693.woff2 +0 -0
  133. data/lib/mihari/web/public/assets/fa-v4compatibility-0515a423.ttf +0 -0
  134. data/lib/mihari/web/public/assets/fa-v4compatibility-694a17c3.woff2 +0 -0
  135. data/lib/mihari/web/public/assets/index-ac4e5ffa.js +0 -50
data/lib/mihari.rb CHANGED
@@ -19,7 +19,6 @@ require "active_support/core_ext/object/deep_dup"
19
19
  require "active_record"
20
20
 
21
21
  # dry-rb
22
- require "dry/configurable"
23
22
  require "dry/files"
24
23
  require "dry/initializer"
25
24
  require "dry/schema"
@@ -51,6 +50,8 @@ require "dotenv/load"
51
50
  require "mihari/version"
52
51
  require "mihari/errors"
53
52
 
53
+ require "mihari/config"
54
+
54
55
  # Mixins
55
56
  require "mihari/mixins/autonomous_system"
56
57
  require "mihari/mixins/configurable"
@@ -60,55 +61,6 @@ require "mihari/mixins/refang"
60
61
  require "mihari/mixins/retriable"
61
62
 
62
63
  module Mihari
63
- extend Dry::Configurable
64
-
65
- setting :binaryedge_api_key, default: ENV.fetch("BINARYEDGE_API_KEY", nil)
66
-
67
- setting :censys_id, default: ENV.fetch("CENSYS_ID", nil)
68
- setting :censys_secret, default: ENV.fetch("CENSYS_SECRET", nil)
69
-
70
- setting :circl_passive_password, default: ENV.fetch("CIRCL_PASSIVE_PASSWORD", nil)
71
- setting :circl_passive_username, default: ENV.fetch("CIRCL_PASSIVE_USERNAME", nil)
72
-
73
- setting :database_url, default: URI(ENV.fetch("DATABASE_URL", "sqlite3:///mihari.db"))
74
-
75
- setting :greynoise_api_key, default: ENV.fetch("GREYNOISE_API_KEY", nil)
76
-
77
- setting :ipinfo_api_key, default: ENV.fetch("IPINFO_API_KEY", nil)
78
-
79
- setting :misp_url, default: ENV.fetch("MISP_URL", nil)
80
- setting :misp_api_key, default: ENV.fetch("MISP_API_KEY", nil)
81
-
82
- setting :onyphe_api_key, default: ENV.fetch("ONYPHE_API_KEY", nil)
83
-
84
- setting :otx_api_key, default: ENV.fetch("OTX_API_KEY", nil)
85
-
86
- setting :passivetotal_api_key, default: ENV.fetch("PASSIVETOTAL_API_KEY", nil)
87
- setting :passivetotal_username, default: ENV.fetch("PASSIVETOTAL_USERNAME", nil)
88
-
89
- setting :pulsedive_api_key, default: ENV.fetch("PULSEDIVE_API_KEY", nil)
90
-
91
- setting :securitytrails_api_key, default: ENV.fetch("SECURITYTRAILS_API_KEY", nil)
92
-
93
- setting :shodan_api_key, default: ENV.fetch("SHODAN_API_KEY", nil)
94
-
95
- setting :slack_channel, default: ENV.fetch("SLACK_CHANNEL", nil)
96
- setting :slack_webhook_url, default: ENV.fetch("SLACK_WEBHOOK_URL", nil)
97
-
98
- setting :thehive_url, default: ENV.fetch("THEHIVE_URL", nil)
99
- setting :thehive_api_key, default: ENV.fetch("THEHIVE_API_KEY", nil)
100
- setting :thehive_api_version, default: ENV.fetch("THEHIVE_API_VERSION", nil)
101
-
102
- setting :urlscan_api_key, default: ENV.fetch("URLSCAN_API_KEY", nil)
103
-
104
- setting :virustotal_api_key, default: ENV.fetch("VIRUSTOTAL_API_KEY", nil)
105
-
106
- setting :zoomeye_api_key, default: ENV.fetch("ZOOMEYE_API_KEY", nil)
107
-
108
- setting :sentry_dsn, default: ENV.fetch("SENTRY_DSN", nil)
109
-
110
- setting :hide_config_values, default: ENV.fetch("HIDE_CONFIG_VALUES", false)
111
-
112
64
  class << self
113
65
  include Memist::Memoizable
114
66
 
@@ -127,10 +79,8 @@ module Mihari
127
79
  end
128
80
  memoize :enrichers
129
81
 
130
- def configs
131
- (Mihari.analyzers + Mihari.emitters + Mihari.enrichers).map do |klass|
132
- Mihari::Structs::Config.from_class(klass)
133
- end.compact
82
+ def config
83
+ @config ||= Config.new
134
84
  end
135
85
 
136
86
  def logger
@@ -153,17 +103,17 @@ module Mihari
153
103
  end
154
104
  end
155
105
 
156
- require "mihari/database"
157
- require "mihari/type_checker"
158
-
159
- require "mihari/http"
160
-
161
106
  # Constants
162
107
  require "mihari/constants"
163
108
 
164
109
  # Types
165
110
  require "mihari/types"
166
111
 
112
+ # Core classes
113
+ require "mihari/database"
114
+ require "mihari/type_checker"
115
+ require "mihari/http"
116
+
167
117
  # Structs
168
118
  require "mihari/structs/censys"
169
119
  require "mihari/structs/config"
data/mihari.gemspec CHANGED
@@ -28,6 +28,9 @@ Gem::Specification.new do |spec|
28
28
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
29
29
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|images|docker|.github)/}) }
30
30
  end
31
+ # Include frontend assets in lib/mihari/web/public
32
+ spec.files += Dir.glob("lib/mihari/web/public/**/*")
33
+
31
34
  spec.bindir = "exe"
32
35
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
36
  spec.require_paths = ["lib"]
@@ -46,24 +49,21 @@ Gem::Specification.new do |spec|
46
49
  spec.add_development_dependency "simplecov-lcov", "~> 0.8.0"
47
50
  spec.add_development_dependency "standard", "~> 1.29"
48
51
  spec.add_development_dependency "timecop", "~> 0.9"
49
- spec.add_development_dependency "vcr", "~> 6.1"
52
+ spec.add_development_dependency "vcr", "~> 6.2"
50
53
  spec.add_development_dependency "webmock", "~> 3.18"
51
54
 
52
55
  unless ci_env?
53
56
  spec.add_development_dependency "lefthook", "~> 1.4"
54
- spec.add_development_dependency "ruby-lsp", "~> 0.5"
55
57
  spec.add_development_dependency "solargraph", "~> 0.49"
56
58
  spec.add_development_dependency "steep", "~> 1.4"
57
59
  end
58
60
 
59
- spec.add_dependency "activerecord", "7.0.5"
61
+ spec.add_dependency "activerecord", "7.0.6"
60
62
  spec.add_dependency "addressable", "2.8.4"
61
63
  spec.add_dependency "awrence", "2.0.1"
62
64
  spec.add_dependency "dotenv", "2.8.1"
63
- spec.add_dependency "dry-configurable", "1.0.1"
64
65
  spec.add_dependency "dry-container", "0.11.0"
65
66
  spec.add_dependency "dry-files", "1.0.1"
66
- spec.add_dependency "dry-initializer", "3.1.1"
67
67
  spec.add_dependency "dry-schema", "1.13.2"
68
68
  spec.add_dependency "dry-struct", "1.6.0"
69
69
  spec.add_dependency "dry-validation", "1.10.0"
@@ -71,7 +71,7 @@ Gem::Specification.new do |spec|
71
71
  spec.add_dependency "grape", "1.7.0"
72
72
  spec.add_dependency "grape-entity", "1.0.0"
73
73
  spec.add_dependency "grape-swagger", "1.6.1"
74
- spec.add_dependency "grape-swagger-entity", "0.5.1"
74
+ spec.add_dependency "grape-swagger-entity", "0.5.2"
75
75
  spec.add_dependency "insensitive_hash", "0.3.3"
76
76
  spec.add_dependency "jr-cli", "0.6.0"
77
77
  spec.add_dependency "launchy", "2.5.2"
@@ -80,13 +80,13 @@ Gem::Specification.new do |spec|
80
80
  spec.add_dependency "normalize_country", "0.3.2"
81
81
  spec.add_dependency "parallel", "1.23.0"
82
82
  spec.add_dependency "plissken", "2.0.1"
83
- spec.add_dependency "public_suffix", "5.0.1"
83
+ spec.add_dependency "public_suffix", "5.0.3"
84
84
  spec.add_dependency "puma", "6.3.0"
85
85
  spec.add_dependency "rack", "3.0.8"
86
86
  spec.add_dependency "rack-cors", "2.0.1"
87
87
  spec.add_dependency "rackup", "2.1.0"
88
88
  spec.add_dependency "semantic_logger", "4.13.0"
89
- spec.add_dependency "sentry-ruby", "5.9.0"
89
+ spec.add_dependency "sentry-ruby", "5.10.0"
90
90
  spec.add_dependency "slack-notifier", "2.4.0"
91
91
  spec.add_dependency "sqlite3", "1.6.3"
92
92
  spec.add_dependency "thor", "1.2.2"
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: 5.2.4
4
+ version: 5.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu Niseki
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-18 00:00:00.000000000 Z
11
+ date: 2023-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: '6.1'
215
+ version: '6.2'
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: '6.1'
222
+ version: '6.2'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: webmock
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -234,76 +234,20 @@ dependencies:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
236
  version: '3.18'
237
- - !ruby/object:Gem::Dependency
238
- name: lefthook
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - "~>"
242
- - !ruby/object:Gem::Version
243
- version: '1.4'
244
- type: :development
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - "~>"
249
- - !ruby/object:Gem::Version
250
- version: '1.4'
251
- - !ruby/object:Gem::Dependency
252
- name: ruby-lsp
253
- requirement: !ruby/object:Gem::Requirement
254
- requirements:
255
- - - "~>"
256
- - !ruby/object:Gem::Version
257
- version: '0.5'
258
- type: :development
259
- prerelease: false
260
- version_requirements: !ruby/object:Gem::Requirement
261
- requirements:
262
- - - "~>"
263
- - !ruby/object:Gem::Version
264
- version: '0.5'
265
- - !ruby/object:Gem::Dependency
266
- name: solargraph
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - "~>"
270
- - !ruby/object:Gem::Version
271
- version: '0.49'
272
- type: :development
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - "~>"
277
- - !ruby/object:Gem::Version
278
- version: '0.49'
279
- - !ruby/object:Gem::Dependency
280
- name: steep
281
- requirement: !ruby/object:Gem::Requirement
282
- requirements:
283
- - - "~>"
284
- - !ruby/object:Gem::Version
285
- version: '1.4'
286
- type: :development
287
- prerelease: false
288
- version_requirements: !ruby/object:Gem::Requirement
289
- requirements:
290
- - - "~>"
291
- - !ruby/object:Gem::Version
292
- version: '1.4'
293
237
  - !ruby/object:Gem::Dependency
294
238
  name: activerecord
295
239
  requirement: !ruby/object:Gem::Requirement
296
240
  requirements:
297
241
  - - '='
298
242
  - !ruby/object:Gem::Version
299
- version: 7.0.5
243
+ version: 7.0.6
300
244
  type: :runtime
301
245
  prerelease: false
302
246
  version_requirements: !ruby/object:Gem::Requirement
303
247
  requirements:
304
248
  - - '='
305
249
  - !ruby/object:Gem::Version
306
- version: 7.0.5
250
+ version: 7.0.6
307
251
  - !ruby/object:Gem::Dependency
308
252
  name: addressable
309
253
  requirement: !ruby/object:Gem::Requirement
@@ -346,20 +290,6 @@ dependencies:
346
290
  - - '='
347
291
  - !ruby/object:Gem::Version
348
292
  version: 2.8.1
349
- - !ruby/object:Gem::Dependency
350
- name: dry-configurable
351
- requirement: !ruby/object:Gem::Requirement
352
- requirements:
353
- - - '='
354
- - !ruby/object:Gem::Version
355
- version: 1.0.1
356
- type: :runtime
357
- prerelease: false
358
- version_requirements: !ruby/object:Gem::Requirement
359
- requirements:
360
- - - '='
361
- - !ruby/object:Gem::Version
362
- version: 1.0.1
363
293
  - !ruby/object:Gem::Dependency
364
294
  name: dry-container
365
295
  requirement: !ruby/object:Gem::Requirement
@@ -388,20 +318,6 @@ dependencies:
388
318
  - - '='
389
319
  - !ruby/object:Gem::Version
390
320
  version: 1.0.1
391
- - !ruby/object:Gem::Dependency
392
- name: dry-initializer
393
- requirement: !ruby/object:Gem::Requirement
394
- requirements:
395
- - - '='
396
- - !ruby/object:Gem::Version
397
- version: 3.1.1
398
- type: :runtime
399
- prerelease: false
400
- version_requirements: !ruby/object:Gem::Requirement
401
- requirements:
402
- - - '='
403
- - !ruby/object:Gem::Version
404
- version: 3.1.1
405
321
  - !ruby/object:Gem::Dependency
406
322
  name: dry-schema
407
323
  requirement: !ruby/object:Gem::Requirement
@@ -506,14 +422,14 @@ dependencies:
506
422
  requirements:
507
423
  - - '='
508
424
  - !ruby/object:Gem::Version
509
- version: 0.5.1
425
+ version: 0.5.2
510
426
  type: :runtime
511
427
  prerelease: false
512
428
  version_requirements: !ruby/object:Gem::Requirement
513
429
  requirements:
514
430
  - - '='
515
431
  - !ruby/object:Gem::Version
516
- version: 0.5.1
432
+ version: 0.5.2
517
433
  - !ruby/object:Gem::Dependency
518
434
  name: insensitive_hash
519
435
  requirement: !ruby/object:Gem::Requirement
@@ -632,14 +548,14 @@ dependencies:
632
548
  requirements:
633
549
  - - '='
634
550
  - !ruby/object:Gem::Version
635
- version: 5.0.1
551
+ version: 5.0.3
636
552
  type: :runtime
637
553
  prerelease: false
638
554
  version_requirements: !ruby/object:Gem::Requirement
639
555
  requirements:
640
556
  - - '='
641
557
  - !ruby/object:Gem::Version
642
- version: 5.0.1
558
+ version: 5.0.3
643
559
  - !ruby/object:Gem::Dependency
644
560
  name: puma
645
561
  requirement: !ruby/object:Gem::Requirement
@@ -716,14 +632,14 @@ dependencies:
716
632
  requirements:
717
633
  - - '='
718
634
  - !ruby/object:Gem::Version
719
- version: 5.9.0
635
+ version: 5.10.0
720
636
  type: :runtime
721
637
  prerelease: false
722
638
  version_requirements: !ruby/object:Gem::Requirement
723
639
  requirements:
724
640
  - - '='
725
641
  - !ruby/object:Gem::Version
726
- version: 5.9.0
642
+ version: 5.10.0
727
643
  - !ruby/object:Gem::Dependency
728
644
  name: slack-notifier
729
645
  requirement: !ruby/object:Gem::Requirement
@@ -808,7 +724,7 @@ dependencies:
808
724
  - - '='
809
725
  - !ruby/object:Gem::Version
810
726
  version: 2.0.0
811
- description:
727
+ description:
812
728
  email:
813
729
  - manabu.niseki@gmail.com
814
730
  executables:
@@ -830,13 +746,12 @@ files:
830
746
  - build_frontend.sh
831
747
  - config.ru
832
748
  - exe/mihari
833
- - frontend/.browserslistrc
834
- - frontend/.eslintrc.js
749
+ - frontend/.eslintrc.cjs
835
750
  - frontend/.gitignore
751
+ - frontend/.prettierrc.json
836
752
  - frontend/README.md
837
- - frontend/babel.config.js
753
+ - frontend/env.d.ts
838
754
  - frontend/index.html
839
- - frontend/jest.config.js
840
755
  - frontend/package-lock.json
841
756
  - frontend/package.json
842
757
  - frontend/public/favicon.ico
@@ -909,9 +824,13 @@ files:
909
824
  - frontend/src/views/NewRule.vue
910
825
  - frontend/src/views/Rule.vue
911
826
  - frontend/src/views/Rules.vue
912
- - frontend/tests/unit/utils.spec.ts
827
+ - frontend/tests/utils.spec.ts
828
+ - frontend/tsconfig.app.json
913
829
  - frontend/tsconfig.json
914
- - frontend/vite.config.js
830
+ - frontend/tsconfig.node.json
831
+ - frontend/tsconfig.vitest.json
832
+ - frontend/vite.config.ts
833
+ - frontend/vitest.config.ts
915
834
  - lefthook.yml
916
835
  - lib/mihari.rb
917
836
  - lib/mihari/analyzers/base.rb
@@ -960,6 +879,7 @@ files:
960
879
  - lib/mihari/commands/search.rb
961
880
  - lib/mihari/commands/version.rb
962
881
  - lib/mihari/commands/web.rb
882
+ - lib/mihari/config.rb
963
883
  - lib/mihari/constants.rb
964
884
  - lib/mihari/database.rb
965
885
  - lib/mihari/emitters/base.rb
@@ -1039,16 +959,8 @@ files:
1039
959
  - lib/mihari/web/endpoints/tags.rb
1040
960
  - lib/mihari/web/middleware/connection_adapter.rb
1041
961
  - lib/mihari/web/middleware/error_notification_adapter.rb
1042
- - lib/mihari/web/public/assets/fa-brands-400-20c4a58b.ttf
1043
- - lib/mihari/web/public/assets/fa-brands-400-74833209.woff2
1044
- - lib/mihari/web/public/assets/fa-regular-400-528d022d.ttf
1045
- - lib/mihari/web/public/assets/fa-regular-400-8e7e5ea1.woff2
1046
- - lib/mihari/web/public/assets/fa-solid-900-67a65763.ttf
1047
- - lib/mihari/web/public/assets/fa-solid-900-7152a693.woff2
1048
- - lib/mihari/web/public/assets/fa-v4compatibility-0515a423.ttf
1049
- - lib/mihari/web/public/assets/fa-v4compatibility-694a17c3.woff2
1050
- - lib/mihari/web/public/assets/index-ac4e5ffa.js
1051
- - lib/mihari/web/public/assets/index-eed1bcd8.css
962
+ - lib/mihari/web/public/assets/index-b17c40c6.css
963
+ - lib/mihari/web/public/assets/index-f740e4f9.js
1052
964
  - lib/mihari/web/public/favicon.ico
1053
965
  - lib/mihari/web/public/index.html
1054
966
  - lib/mihari/web/public/redoc-static.html
@@ -1059,7 +971,7 @@ licenses:
1059
971
  - MIT
1060
972
  metadata:
1061
973
  rubygems_mfa_required: 'true'
1062
- post_install_message:
974
+ post_install_message:
1063
975
  rdoc_options: []
1064
976
  require_paths:
1065
977
  - lib
@@ -1074,8 +986,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1074
986
  - !ruby/object:Gem::Version
1075
987
  version: '0'
1076
988
  requirements: []
1077
- rubygems_version: 3.4.1
1078
- signing_key:
989
+ rubygems_version: 3.4.10
990
+ signing_key:
1079
991
  specification_version: 4
1080
992
  summary: A framework for continuous OSINT based threat hunting
1081
993
  test_files: []
@@ -1,3 +0,0 @@
1
- > 1%
2
- last 2 versions
3
- not dead
@@ -1,33 +0,0 @@
1
- module.exports = {
2
- root: true,
3
- env: {
4
- node: true,
5
- },
6
- plugins: ["simple-import-sort"],
7
- extends: [
8
- "plugin:vue/vue3-essential",
9
- "eslint:recommended",
10
- "@vue/typescript/recommended",
11
- "plugin:prettier/recommended",
12
- ],
13
- parserOptions: {
14
- ecmaVersion: 2020,
15
- },
16
- rules: {
17
- "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
18
- "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
19
- "simple-import-sort/imports": "error",
20
- "simple-import-sort/exports": "error",
21
- },
22
- overrides: [
23
- {
24
- files: [
25
- "**/__tests__/*.{j,t}s?(x)",
26
- "**/tests/unit/**/*.spec.{j,t}s?(x)",
27
- ],
28
- env: {
29
- jest: true,
30
- },
31
- },
32
- ],
33
- };
@@ -1,3 +0,0 @@
1
- module.exports = {
2
- presets: ["@vue/cli-plugin-babel/preset"],
3
- };
@@ -1,9 +0,0 @@
1
- module.exports = {
2
- moduleNameMapper: {
3
- "^@/(.*)$": "<rootDir>/src/$1",
4
- },
5
- transform: {
6
- "^.+\\.vue$": "@vue/vue3-jest",
7
- "^.+\\.ts$": "ts-jest",
8
- },
9
- };
@@ -1,7 +0,0 @@
1
- import { getHumanizedRelativeTime } from "@/utils";
2
-
3
- describe("getHumanizedRelativeTime", () => {
4
- it("returns a relative time in humanized format", () => {
5
- expect(getHumanizedRelativeTime("1970-01-01 00:00:00")).toContain("years");
6
- });
7
- });
@@ -1,24 +0,0 @@
1
- import vue from "@vitejs/plugin-vue";
2
- import path from "path";
3
- import { defineConfig, loadEnv } from "vite";
4
-
5
- export default defineConfig(({ _, mode }) => {
6
- const env = loadEnv(mode, process.cwd(), "");
7
- const target = env.BACKEND_URL || "http://localhost:9292/";
8
- const port = env.port || 8080;
9
-
10
- return {
11
- plugins: [vue()],
12
- server: {
13
- port,
14
- proxy: {
15
- "/api": target,
16
- },
17
- },
18
- resolve: {
19
- alias: {
20
- "@": path.resolve(__dirname, "./src"),
21
- },
22
- },
23
- };
24
- });