metasploit_data_models 6.0.8 → 6.0.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: edadba0a0b450002d8aa039191ec2afcd6dce324359d6c1f2d4c26cb22e0fbd8
4
- data.tar.gz: 2b7dfd16ff232695a305baab6da43cc9e491357c14b26b3869da3304a6326d91
3
+ metadata.gz: 40fa3cb2ec4dfaface1baab768811f1902882e5e5ff1e11298051e8a46974c28
4
+ data.tar.gz: 611a69c4328a0a0d73d983059db8c3c38e6ca6faa68898859e3e71b6f994c7f0
5
5
  SHA512:
6
- metadata.gz: 5c37530d3bae08e462d4d19f9dd90917e9deb9d0498e88386c4f08359d4494dc4f6bc0efa56124c6bb311d3b383a7d439f7cd7b0751dfb7cb2d884295e8bf2d3
7
- data.tar.gz: 5f596df8353893eb8c7cdac0f0176738c05aa8e8156b424b9d79fbd8712526672fce2acad76e915e3ef571d4c2d7301702c8005e246a85ca0c0a0329bde282e3
6
+ metadata.gz: 522514fd33922e9ca5505563c053194fb7c3116c7d5e862574fe56546873953c56d082e92d7e4d3c701139875634aee8ef686aeb71647367114312ca4fab0963
7
+ data.tar.gz: 57d1cb11239b0cb4fc93e36013cebb75372a04550d2ea6506c7be2ce1521d29cbef7a5514a00ab528cff053093867e9948368a3a5c927b8c49775d2ba680e337
@@ -25,71 +25,14 @@ on:
25
25
  - '*'
26
26
 
27
27
  jobs:
28
- test:
29
- runs-on: ${{ matrix.os }}
30
- timeout-minutes: 40
31
-
32
- services:
33
- postgres:
34
- image: postgres:9.6
35
- ports: ["5432:5432"]
36
- env:
37
- POSTGRES_USER: postgres
38
- POSTGRES_PASSWORD: postgres
39
- options: >-
40
- --health-cmd pg_isready
41
- --health-interval 10s
42
- --health-timeout 5s
43
- --health-retries 5
44
-
45
- strategy:
46
- fail-fast: true
47
- matrix:
48
- ruby:
49
- - '2.7'
50
- - '3.0'
51
- - '3.1'
52
- - '3.2'
53
- rails:
54
- - '~> 7.0.0'
55
- - '~> 7.1.0'
56
- os:
57
- - ubuntu-22.04
58
- - ubuntu-latest
59
- exclude:
60
- - { os: ubuntu-latest, ruby: '2.7' }
61
- - { os: ubuntu-latest, ruby: '3.0' }
62
-
63
- env:
64
- RAILS_ENV: test
65
-
66
- name: ${{ matrix.os }} - Ruby ${{ matrix.ruby }} - Rails ${{ matrix.rails }}
67
- steps:
68
- - name: Install system dependencies
69
- run: sudo apt-get install libpcap-dev graphviz
70
-
71
- - name: Checkout code
72
- uses: actions/checkout@v4
73
-
74
- - name: Setup Ruby
75
- uses: ruby/setup-ruby@v1
76
- with:
77
- ruby-version: ${{ matrix.ruby }}
78
- bundler-cache: true
79
-
80
- - name: Update Rails version
81
- run: |
82
- ruby -pi.bak -e "gsub(/gem ['\"]rails['\"],\s*['\"].+['\"]?/, \"gem 'rails', '${{ matrix.rails }}'\")" Gemfile
83
- bundle update
84
- bundle install
85
-
86
- - name: Test
87
- run: |
88
- cp spec/dummy/config/database.yml.github_actions spec/dummy/config/database.yml
89
- bundle exec rake --version
90
- bundle exec rake db:create db:migrate
91
-
92
- # Disabling this check because it is proving unreliable
93
- # git diff --exit-code spec/dummy/db/structure.sql
94
- bundle exec rake spec
95
- bundle exec rake yard
28
+ build:
29
+ uses: rapid7/metasploit-framework/.github/workflows/shared_gem_verify_rails.yml@master
30
+ with:
31
+ dependencies: '["libpcap-dev", "graphviz"]'
32
+ test_commands: |
33
+ cp spec/dummy/config/database.yml.github_actions spec/dummy/config/database.yml
34
+ bundle exec rake --version
35
+ bundle exec rake db:create db:migrate
36
+ bundle exec rake spec
37
+ bundle exec rake spec
38
+ bundle exec rake yard
@@ -49,6 +49,25 @@ class MetasploitDataModels::Search::Visitor::Where
49
49
  attribute.matches(match_value)
50
50
  end
51
51
 
52
+ visit 'Metasploit::Model::Search::Operation::Jsonb' do |operation|
53
+ attribute = attribute_visitor.visit operation.operator
54
+
55
+ begin
56
+ operation_hash = JSON.parse(operation.value)
57
+ left = Arel::Nodes::InfixOperation.new(
58
+ '->>',
59
+ Arel::Nodes.build_quoted(attribute),
60
+ Arel::Nodes.build_quoted(operation_hash.keys[0])
61
+ )
62
+ right ="%#{operation_hash.values[0]}%"
63
+ rescue JSON::ParserError
64
+ left = Arel::Nodes::NamedFunction.new("cast", [attribute.as('text')])
65
+ right ="%#{operation.value}%"
66
+ end
67
+
68
+ left.matches(right)
69
+ end
70
+
52
71
  visit 'MetasploitDataModels::IPAddress::CIDR' do |cidr|
53
72
  cast_to_inet "#{cidr.address}/#{cidr.prefix_length}"
54
73
  end
@@ -1,6 +1,6 @@
1
1
  module MetasploitDataModels
2
2
  # VERSION is managed by GemRelease
3
- VERSION = '6.0.8'
3
+ VERSION = '6.0.10'
4
4
 
5
5
  # @return [String]
6
6
  #
@@ -46,6 +46,15 @@ Gem::Specification.new do |s|
46
46
  # arel-helpers: Useful tools to help construct database queries with ActiveRecord and Arel.
47
47
  s.add_runtime_dependency 'arel-helpers'
48
48
 
49
+ # Standard libraries: https://www.ruby-lang.org/en/news/2023/12/25/ruby-3-3-0-released/
50
+ %w[
51
+ bigdecimal
52
+ drb
53
+ mutex_m
54
+ ].each do |library|
55
+ s.add_runtime_dependency library
56
+ end
57
+
49
58
  if RUBY_PLATFORM =~ /java/
50
59
  # markdown formatting for yard
51
60
  s.add_development_dependency 'kramdown'
@@ -183,5 +183,49 @@ RSpec.describe MetasploitDataModels::Search::Visitor::Where, type: :model do
183
183
  end
184
184
  end
185
185
  end
186
+
187
+ context 'with MetasploitDataModels::Search::Operation::Jsonb' do
188
+ let(:klass) do
189
+ klass = Class.new(ApplicationRecord)
190
+ Object.const_set('Jsonb', klass)
191
+ klass
192
+ end
193
+
194
+ let(:node) do
195
+ Metasploit::Model::Search::Operation::Jsonb.new(
196
+ :operator => operator,
197
+ :value => value
198
+ )
199
+ end
200
+
201
+ let(:operator) do
202
+ Metasploit::Model::Search::Operator::Attribute.new(
203
+ :klass => klass,
204
+ :attribute => :metadata
205
+ )
206
+ end
207
+
208
+ let(:value) do
209
+ 'adcs_ca:myCA'
210
+ end
211
+
212
+ it 'should visit operation.operator with attribute_visitor' do
213
+ expect(visitor.attribute_visitor).to receive(:visit).with(operator).and_call_original
214
+
215
+ visit
216
+ end
217
+
218
+ it 'should return the expected Arel::Nodes::Matches' do
219
+ attribute = Arel::Attributes::Attribute.new(
220
+ Arel::Table.new(:metasploit_credential_privates),
221
+ 'metadata'
222
+ )
223
+ allow(visitor.attribute_visitor).to receive(:visit).with(operator).and_return(attribute)
224
+
225
+ results = visit
226
+ expect(results).to be_a(Arel::Nodes::Matches)
227
+ expect(results.to_sql).to eq("\"metasploit_credential_privates\".\"metadata\" ->> 'adcs_ca' ILIKE '%myCA%'")
228
+ end
229
+ end
186
230
  end
187
231
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metasploit_data_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.8
4
+ version: 6.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Metasploit Hackers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-01 00:00:00.000000000 Z
11
+ date: 2025-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metasploit-yard
@@ -206,6 +206,48 @@ dependencies:
206
206
  - - ">="
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: bigdecimal
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: drb
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: mutex_m
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
209
251
  - !ruby/object:Gem::Dependency
210
252
  name: redcarpet
211
253
  requirement: !ruby/object:Gem::Requirement