metasploit-model 5.0.2 → 5.0.4
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 +4 -4
- data/.github/workflows/verify.yml +10 -65
- data/Gemfile +3 -0
- data/app/models/metasploit/model/search/operation/jsonb.rb +52 -0
- data/app/models/metasploit/model/search/operator/attribute.rb +2 -1
- data/cortex.yaml +2 -0
- data/lib/metasploit/model/search/operation.rb +1 -0
- data/lib/metasploit/model/version.rb +1 -1
- data/metasploit-model.gemspec +9 -0
- data/spec/app/models/metasploit/model/search/operation/jsonb_spec.rb +106 -0
- data/spec/app/models/metasploit/model/search/operator/attribute_spec.rb +1 -0
- data/spec/dummy/db/schema.rb +1 -1
- metadata +53 -95
- checksums.yaml.gz.sig +0 -2
- data/spec/dummy/config/initializers/secret_token.rb +0 -7
- data.tar.gz.sig +0 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d6eb06b8dfb904b692660f431bb47ccf13a9ecc4d619ad95bfd55aed0354d19
|
4
|
+
data.tar.gz: fb2bf0154bb9ba02fde7b5f03edb33e6f899bfa7cb85d8be251090faae2f98a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb69a1c65b802591474399e7cc5be0f992d2ec7471d2cda0ebca3a5cf6e9b528a857382ba192d247a039981fa7ae83d509f009a904dfd3d31866639b6939fa90
|
7
|
+
data.tar.gz: 6ece110b20595d00987b720460202d7485d1f0942a0925a7ff4afec549009bf3dac92578e526a2698a9d90f2cec3cf8657bc1670a94d9de58ba3291a4d12714e
|
@@ -25,68 +25,13 @@ on:
|
|
25
25
|
- '*'
|
26
26
|
|
27
27
|
jobs:
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|
-
os:
|
54
|
-
- ubuntu-18.04
|
55
|
-
- ubuntu-22.04
|
56
|
-
exclude:
|
57
|
-
- { os: ubuntu-22.04, ruby: '2.7' }
|
58
|
-
- { os: ubuntu-22.04, ruby: '3.0' }
|
59
|
-
|
60
|
-
env:
|
61
|
-
RAILS_ENV: test
|
62
|
-
|
63
|
-
name: ${{ matrix.os }} - Ruby ${{ matrix.ruby }}
|
64
|
-
steps:
|
65
|
-
- name: Install system dependencies
|
66
|
-
run: sudo apt-get install graphviz
|
67
|
-
|
68
|
-
- name: Checkout code
|
69
|
-
uses: actions/checkout@v2
|
70
|
-
|
71
|
-
- name: Setup Ruby
|
72
|
-
uses: ruby/setup-ruby@v1
|
73
|
-
with:
|
74
|
-
ruby-version: ${{ matrix.ruby }}
|
75
|
-
bundler-cache: true
|
76
|
-
|
77
|
-
- name: Test
|
78
|
-
run: |
|
79
|
-
cp spec/dummy/config/database.yml.github_actions spec/dummy/config/database.yml
|
80
|
-
bundle exec rake --version
|
81
|
-
bundle exec rake db:test:prepare
|
82
|
-
|
83
|
-
bundle exec rake spec
|
84
|
-
bundle exec rake yard
|
85
|
-
|
86
|
-
- name: Upload coverage report
|
87
|
-
uses: actions/upload-artifact@v2
|
88
|
-
with:
|
89
|
-
name: coverage-${{ matrix.ruby }}
|
90
|
-
path: |
|
91
|
-
coverage/
|
92
|
-
retention-days: 1
|
28
|
+
build:
|
29
|
+
uses: rapid7/metasploit-framework/.github/workflows/shared_gem_verify_rails.yml@master
|
30
|
+
with:
|
31
|
+
dependencies: '["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:test:prepare
|
36
|
+
bundle exec rake spec
|
37
|
+
bundle exec rake yard
|
data/Gemfile
CHANGED
@@ -9,6 +9,9 @@ end
|
|
9
9
|
|
10
10
|
# used by dummy application
|
11
11
|
group :development, :test do
|
12
|
+
# Temporary, remove once the Rails 7.1 update is complete
|
13
|
+
# see: https://stackoverflow.com/questions/79360526/uninitialized-constant-activesupportloggerthreadsafelevellogger-nameerror
|
14
|
+
gem 'concurrent-ruby', '1.3.4'
|
12
15
|
# supplies factories for producing model instance for specs
|
13
16
|
# Version 4.1.0 or newer is needed to support generate calls without the 'FactoryGirl.' in factory definitions syntax.
|
14
17
|
gem 'factory_bot'
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Search operation with {Metasploit::Model::Search::Operation::Base#operator} with `#type` ':jsonb'.
|
2
|
+
class Metasploit::Model::Search::Operation::Jsonb < Metasploit::Model::Search::Operation::Base
|
3
|
+
#
|
4
|
+
# Validations
|
5
|
+
#
|
6
|
+
|
7
|
+
validates :value,
|
8
|
+
:presence => true
|
9
|
+
|
10
|
+
#
|
11
|
+
# Methods
|
12
|
+
#
|
13
|
+
|
14
|
+
# Sets {Metasploit::Model::Search::Operation::Base#value} by parsing the `formatted_value`
|
15
|
+
# String and attempting to generate a valid JSON if it contains a colon.
|
16
|
+
# Otherwise, it keeps the same value as a String.
|
17
|
+
#
|
18
|
+
# @param formatted_value [#to_s]
|
19
|
+
# @return [String] representing a JSON if `formatted_value` contains a colon.
|
20
|
+
# Otherwise it is a the same as `formatted_value`
|
21
|
+
def value=(formatted_value)
|
22
|
+
@value = transform_value(formatted_value.to_s)
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# Transform an input String to a JSON if it contains a colon. It returns the String if not.
|
29
|
+
# Also, the first colon is used as a delimiter between the key and the value.
|
30
|
+
# Any subsequent colon will be part of the value.
|
31
|
+
# Finally, it handles double/single quotes to escape any colon that are not
|
32
|
+
# suppose to be a delimiter between the key and the value.
|
33
|
+
#
|
34
|
+
# @param input [#to_s]
|
35
|
+
# @return [String] representing a JSON if `input` contains a colon. Otherwise it is a the same as `input`
|
36
|
+
def transform_value(input)
|
37
|
+
# Regex to find the first colon that is NOT inside quotes
|
38
|
+
match = input.match(/((?:[^'":]++|"(?:\\.|[^"])*"|'(?:\\.|[^'])*')*?):(.*)/)
|
39
|
+
|
40
|
+
# If no valid colon is found, return the original string
|
41
|
+
return input unless match
|
42
|
+
|
43
|
+
key = match[1].strip # Extract key (before first valid colon)
|
44
|
+
value = match[2].strip # Extract value (after first valid colon)
|
45
|
+
|
46
|
+
# Remove starting and ending quotes and ensure they are valid JSON strings
|
47
|
+
key = key.gsub(/^["'](.*)["']$/, '\1').to_json
|
48
|
+
value = value.gsub(/^["'](.*)["']$/, '\1').to_json
|
49
|
+
"{#{key}: #{value}}"
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
data/cortex.yaml
CHANGED
@@ -13,6 +13,7 @@ module Metasploit::Model::Search::Operation
|
|
13
13
|
autoload :Set
|
14
14
|
autoload :String
|
15
15
|
autoload :Value
|
16
|
+
autoload :Jsonb
|
16
17
|
|
17
18
|
# @param options [Hash{Symbol => Object}]
|
18
19
|
# @option options [Metasploit::Module::Search::Query] :query The query that the parsed operation is a part.
|
data/metasploit-model.gemspec
CHANGED
@@ -43,4 +43,13 @@ Gem::Specification.new do |spec|
|
|
43
43
|
|
44
44
|
spec.platform = Gem::Platform::RUBY
|
45
45
|
end
|
46
|
+
|
47
|
+
# Standard libraries: https://www.ruby-lang.org/en/news/2023/12/25/ruby-3-3-0-released/
|
48
|
+
%w[
|
49
|
+
bigdecimal
|
50
|
+
drb
|
51
|
+
mutex_m
|
52
|
+
].each do |library|
|
53
|
+
spec.add_runtime_dependency library
|
54
|
+
end
|
46
55
|
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
RSpec.describe Metasploit::Model::Search::Operation::Jsonb, type: :model do
|
2
|
+
context 'validation' do
|
3
|
+
context 'value' do
|
4
|
+
before(:example) do
|
5
|
+
operation.valid?
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:errors) do
|
9
|
+
operation.errors[:value]
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:operation) do
|
13
|
+
described_class.new(:value => value)
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with String' do
|
17
|
+
let(:value) do
|
18
|
+
'search_string'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should not record error' do
|
22
|
+
expect(errors).to be_empty
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with Integer' do
|
27
|
+
let(:value) do
|
28
|
+
3
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should not record error' do
|
32
|
+
expect(errors).to be_empty
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'with a Symbol' do
|
37
|
+
let(:value) do
|
38
|
+
:mysym
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should not record error' do
|
42
|
+
expect(errors).to be_empty
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context '#value' do
|
49
|
+
subject(:value) do
|
50
|
+
operation.value
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:operation) do
|
54
|
+
described_class.new(:value => formatted_value)
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'with String' do
|
58
|
+
let(:formatted_value) do
|
59
|
+
'test value'
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should be passed as a String' do
|
63
|
+
expect(value).to eq(formatted_value.to_s)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with Integer' do
|
68
|
+
let(:formatted_value) do
|
69
|
+
3
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should be passed as a String' do
|
73
|
+
expect(value).to eq(formatted_value.to_s)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'with String containing colon characters' do
|
78
|
+
{
|
79
|
+
'key:value' => '{"key": "value"}',
|
80
|
+
'key:value:extra' => '{"key": "value:extra"}',
|
81
|
+
'"quoted:part":value' => '{"quoted:part": "value"}',
|
82
|
+
'"quoted:part":value:extra' => '{"quoted:part": "value:extra"}',
|
83
|
+
'a:b:c:d' => '{"a": "b:c:d"}',
|
84
|
+
'"x:y:z":a:b' => '{"x:y:z": "a:b"}',
|
85
|
+
"'single:quote':value" => '{"single:quote": "value"}',
|
86
|
+
"'single:quote':value:extra" => '{"single:quote": "value:extra"}',
|
87
|
+
"'a:b':c:d" => '{"a:b": "c:d"}',
|
88
|
+
'"x:y"and"z:w":final' => '{"x:y\"and\"z:w": "final"}',
|
89
|
+
"'x:y'and'z:w':final" => '{"x:y\'and\'z:w": "final"}',
|
90
|
+
'"a:b":c:"d:e"' => '{"a:b": "c:\"d:e\""}',
|
91
|
+
"'a:b':c:'d:e'" => '{"a:b": "c:\'d:e\'"}',
|
92
|
+
}.each do |input, expected|
|
93
|
+
|
94
|
+
context "with the string #{input}" do
|
95
|
+
let(:formatted_value) { input }
|
96
|
+
|
97
|
+
it 'should be passed as a valid JSON string' do
|
98
|
+
expect(value).to eq(expected)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
12
12
|
|
13
|
-
ActiveRecord::Schema[7.
|
13
|
+
ActiveRecord::Schema[7.2].define(version: 0) do
|
14
14
|
# These are extensions that must be enabled in order to support this database
|
15
15
|
enable_extension "plpgsql"
|
16
16
|
|
metadata
CHANGED
@@ -1,99 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metasploit-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Metasploit Hackers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
-
|
12
|
-
-----BEGIN CERTIFICATE-----
|
13
|
-
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
|
14
|
-
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
15
|
-
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
|
16
|
-
b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
|
17
|
-
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
|
18
|
-
cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
|
19
|
-
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
|
20
|
-
JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
|
21
|
-
mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
|
22
|
-
wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
|
23
|
-
VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
|
24
|
-
AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
|
25
|
-
AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
|
26
|
-
BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
|
27
|
-
pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
|
28
|
-
dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
|
29
|
-
fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
|
30
|
-
NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
|
31
|
-
H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
32
|
-
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
33
|
-
-----END CERTIFICATE-----
|
34
|
-
- |
|
35
|
-
-----BEGIN CERTIFICATE-----
|
36
|
-
MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl
|
37
|
-
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
38
|
-
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
|
39
|
-
b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG
|
40
|
-
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
|
41
|
-
cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT
|
42
|
-
aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O
|
43
|
-
Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq
|
44
|
-
8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp
|
45
|
-
wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p
|
46
|
-
fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3
|
47
|
-
jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye
|
48
|
-
n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
|
49
|
-
HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr
|
50
|
-
MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
|
51
|
-
MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
|
52
|
-
RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
|
53
|
-
ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
|
54
|
-
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
|
55
|
-
TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
|
56
|
-
d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq
|
57
|
-
CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP
|
58
|
-
MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX
|
59
|
-
fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf
|
60
|
-
RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al
|
61
|
-
EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+
|
62
|
-
L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8
|
63
|
-
B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
|
64
|
-
-----END CERTIFICATE-----
|
65
|
-
- |
|
66
|
-
-----BEGIN CERTIFICATE-----
|
67
|
-
MIIFIzCCBAugAwIBAgIQCMePMbkSxvnPeJhYXIfaxzANBgkqhkiG9w0BAQsFADBy
|
68
|
-
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
69
|
-
d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg
|
70
|
-
SUQgQ29kZSBTaWduaW5nIENBMB4XDTIwMTAwNzAwMDAwMFoXDTIzMTEwNjEyMDAw
|
71
|
-
MFowYDELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNV
|
72
|
-
BAcTBkJvc3RvbjETMBEGA1UEChMKUmFwaWQ3IExMQzETMBEGA1UEAxMKUmFwaWQ3
|
73
|
-
IExMQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNTz4zvAy7h/vQp
|
74
|
-
4dr1txXHlABAagkwYYwTMCtHs5PXsJITx/5SAjx5swuaLfze5kPBNF2YImvFlOXY
|
75
|
-
WaB+0PsOnXnaARsDZU683xFlj8izU6IN6VrAHzDLKFBzruJENrOJD/ikbEtbjO/q
|
76
|
-
gFbmS9J9v5ohG/pcRSS0t4ZPAwymf8eCp6QsvOKK/Aymp1RhlRaP8N6N5CIpkhz1
|
77
|
-
9p968iCE+DjOXVYxcWE+jE/7uB1dbgrXykNBujMSS3GULOvVEY28n6NCmrPlo23g
|
78
|
-
yRjYVJ2Vy14nBqnxDZ/yRIfWRVjWoT9TsAEbe9gY29oDpSCSs4wSmLQd5zGCpZ9h
|
79
|
-
r0HDFB8CAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZl
|
80
|
-
dQ5YMB0GA1UdDgQWBBTLBL7DTwumVEKtdCdpHVYMXOFeDzAOBgNVHQ8BAf8EBAMC
|
81
|
-
B4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDov
|
82
|
-
L2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGG
|
83
|
-
L2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3Js
|
84
|
-
MEwGA1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
|
85
|
-
d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYw
|
86
|
-
JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcw
|
87
|
-
AoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3Vy
|
88
|
-
ZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL
|
89
|
-
BQADggEBAN+GL5/myPWg7oH4mVrG7/OhXF1MoYQF0ddaNiqaweEHMuKJBQCVZRbL
|
90
|
-
37HojoKXXv2yyRJBCeTB+ojrxX+5PdLVZa0ss7toWzJ2A1poPXZ1eZvm5xeFD32z
|
91
|
-
YQaTmmNWNI3PCDTyJ2PXUc+bDiNNwcZ7yc5o78UNRvp9Jxghya17Q76c9Ov9wvnv
|
92
|
-
dxxQKWGOQy0m4fBrkyjAyH9Djjn81RbQrqYgPuhd5nD0HjN3VUQLhQbIJrk9TVs0
|
93
|
-
EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
|
94
|
-
9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
|
95
|
-
-----END CERTIFICATE-----
|
96
|
-
date: 2023-10-04 00:00:00.000000000 Z
|
10
|
+
cert_chain: []
|
11
|
+
date: 2025-05-02 00:00:00.000000000 Z
|
97
12
|
dependencies:
|
98
13
|
- !ruby/object:Gem::Dependency
|
99
14
|
name: metasploit-yard
|
@@ -221,6 +136,48 @@ dependencies:
|
|
221
136
|
- - ">="
|
222
137
|
- !ruby/object:Gem::Version
|
223
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: bigdecimal
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: drb
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: mutex_m
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
224
181
|
description: Common code, such as validators and mixins, that are shared between ActiveModels
|
225
182
|
in metasploit-framework and ActiveRecords in metasploit_data_models.
|
226
183
|
email:
|
@@ -254,6 +211,7 @@ files:
|
|
254
211
|
- app/models/metasploit/model/search/operation/group/intersection.rb
|
255
212
|
- app/models/metasploit/model/search/operation/group/union.rb
|
256
213
|
- app/models/metasploit/model/search/operation/integer.rb
|
214
|
+
- app/models/metasploit/model/search/operation/jsonb.rb
|
257
215
|
- app/models/metasploit/model/search/operation/null.rb
|
258
216
|
- app/models/metasploit/model/search/operation/set.rb
|
259
217
|
- app/models/metasploit/model/search/operation/set/integer.rb
|
@@ -335,6 +293,7 @@ files:
|
|
335
293
|
- spec/app/models/metasploit/model/search/operation/group/intersection_spec.rb
|
336
294
|
- spec/app/models/metasploit/model/search/operation/group/union_spec.rb
|
337
295
|
- spec/app/models/metasploit/model/search/operation/integer_spec.rb
|
296
|
+
- spec/app/models/metasploit/model/search/operation/jsonb_spec.rb
|
338
297
|
- spec/app/models/metasploit/model/search/operation/null_spec.rb
|
339
298
|
- spec/app/models/metasploit/model/search/operation/set/integer_spec.rb
|
340
299
|
- spec/app/models/metasploit/model/search/operation/set/string_spec.rb
|
@@ -381,7 +340,6 @@ files:
|
|
381
340
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
382
341
|
- spec/dummy/config/initializers/inflections.rb
|
383
342
|
- spec/dummy/config/initializers/mime_types.rb
|
384
|
-
- spec/dummy/config/initializers/secret_token.rb
|
385
343
|
- spec/dummy/config/initializers/session_store.rb
|
386
344
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
387
345
|
- spec/dummy/config/locales/en.yml
|
@@ -437,10 +395,10 @@ files:
|
|
437
395
|
- spec/support/shared/examples/search_association.rb
|
438
396
|
- spec/support/shared/examples/search_attribute.rb
|
439
397
|
- spec/support/shared/examples/search_with.rb
|
440
|
-
homepage:
|
398
|
+
homepage:
|
441
399
|
licenses: []
|
442
400
|
metadata: {}
|
443
|
-
post_install_message:
|
401
|
+
post_install_message:
|
444
402
|
rdoc_options: []
|
445
403
|
require_paths:
|
446
404
|
- app/models
|
@@ -457,8 +415,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
457
415
|
- !ruby/object:Gem::Version
|
458
416
|
version: '0'
|
459
417
|
requirements: []
|
460
|
-
rubygems_version: 3.
|
461
|
-
signing_key:
|
418
|
+
rubygems_version: 3.4.19
|
419
|
+
signing_key:
|
462
420
|
specification_version: 4
|
463
421
|
summary: Metasploit Model Mixins and Validators
|
464
422
|
test_files:
|
@@ -474,6 +432,7 @@ test_files:
|
|
474
432
|
- spec/app/models/metasploit/model/search/operation/group/intersection_spec.rb
|
475
433
|
- spec/app/models/metasploit/model/search/operation/group/union_spec.rb
|
476
434
|
- spec/app/models/metasploit/model/search/operation/integer_spec.rb
|
435
|
+
- spec/app/models/metasploit/model/search/operation/jsonb_spec.rb
|
477
436
|
- spec/app/models/metasploit/model/search/operation/null_spec.rb
|
478
437
|
- spec/app/models/metasploit/model/search/operation/set/integer_spec.rb
|
479
438
|
- spec/app/models/metasploit/model/search/operation/set/string_spec.rb
|
@@ -520,7 +479,6 @@ test_files:
|
|
520
479
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
521
480
|
- spec/dummy/config/initializers/inflections.rb
|
522
481
|
- spec/dummy/config/initializers/mime_types.rb
|
523
|
-
- spec/dummy/config/initializers/secret_token.rb
|
524
482
|
- spec/dummy/config/initializers/session_store.rb
|
525
483
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
526
484
|
- spec/dummy/config/locales/en.yml
|
checksums.yaml.gz.sig
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
# Be sure to restart your server when you modify this file.
|
2
|
-
|
3
|
-
# Your secret key for verifying the integrity of signed cookies.
|
4
|
-
# If you change this key, all old signed cookies will become invalid!
|
5
|
-
# Make sure the secret is at least 30 characters and all random,
|
6
|
-
# no regular words or you'll be exposed to dictionary attacks.
|
7
|
-
Dummy::Application.config.secret_token = 'f04f565f9a4db0f0af88f4bd8b79952d139b02434b889a7c7bb3fe83405e9032409bd16bca7b0d7d68a8b119b6ddfd31b17d19155cd699a27e19a48bd05eb200'
|
data.tar.gz.sig
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
r�bqr:s�D`aT�I�ܭ$Z̖�E�/��*�!��½�}||j�Ib�$x�%}T �MkTy�A�$Ò^6���]���=�F5ԝ+P�vO�rs�����C��S5t�
|
metadata.gz.sig
DELETED
Binary file
|