metasploit_data_models 0.17.3.pre.metasploit.pre.concern-java → 0.18.0-java
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/CONTRIBUTING.md +164 -0
- data/README.md +6 -2
- data/app/models/mdm/host.rb +18 -0
- data/app/models/mdm/service.rb +12 -1
- data/app/models/metasploit_data_models/search/operation/port/number.rb +25 -0
- data/app/models/metasploit_data_models/search/operation/port/range.rb +79 -0
- data/app/models/metasploit_data_models/search/operation/range.rb +56 -0
- data/app/models/metasploit_data_models/search/operator/multitext.rb +73 -0
- data/app/models/metasploit_data_models/search/operator/port/list.rb +67 -0
- data/app/models/metasploit_data_models/search/visitor/attribute.rb +2 -1
- data/app/models/metasploit_data_models/search/visitor/includes.rb +3 -2
- data/app/models/metasploit_data_models/search/visitor/joins.rb +5 -3
- data/app/models/metasploit_data_models/search/visitor/method.rb +3 -2
- data/app/models/metasploit_data_models/search/visitor/where.rb +8 -2
- data/config/locales/en.yml +17 -1
- data/lib/metasploit_data_models.rb +1 -9
- data/lib/metasploit_data_models/version.rb +27 -6
- data/metasploit_data_models.gemspec +2 -2
- data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +41 -0
- data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +140 -0
- data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +235 -0
- data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +162 -0
- data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +164 -0
- data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +48 -26
- data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +10 -7
- data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +44 -30
- data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +16 -0
- data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +273 -65
- data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +42 -2
- data/spec/factories/mdm/services.rb +1 -2
- data/spec/lib/metasploit_data_models/version_spec.rb +141 -0
- data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +1 -1
- metadata +28 -12
- data/lib/metasploit_data_models/models.rb +0 -21
- data/lib/metasploit_data_models/validators.rb +0 -19
@@ -30,12 +30,14 @@ describe MetasploitDataModels::Search::Visitor::Where do
|
|
30
30
|
|
31
31
|
arel_class_by_group_class = {
|
32
32
|
Metasploit::Model::Search::Group::Intersection => Arel::Nodes::And,
|
33
|
-
Metasploit::Model::Search::Group::Union => Arel::Nodes::Or
|
33
|
+
Metasploit::Model::Search::Group::Union => Arel::Nodes::Or,
|
34
|
+
Metasploit::Model::Search::Operation::Group::Intersection => Arel::Nodes::And,
|
35
|
+
Metasploit::Model::Search::Operation::Group::Union => Arel::Nodes::Or
|
34
36
|
}
|
35
37
|
|
36
38
|
arel_class_by_group_class.each do |group_class, arel_class|
|
37
39
|
context "with #{group_class}" do
|
38
|
-
it_should_behave_like 'MetasploitDataModels::Search::Visitor::Where#visit with Metasploit::Model::Search
|
40
|
+
it_should_behave_like 'MetasploitDataModels::Search::Visitor::Where#visit with Metasploit::Model::Search*::Group::Base',
|
39
41
|
:arel_class => arel_class do
|
40
42
|
let(:node_class) do
|
41
43
|
group_class
|
@@ -97,6 +99,44 @@ describe MetasploitDataModels::Search::Visitor::Where do
|
|
97
99
|
end
|
98
100
|
end
|
99
101
|
|
102
|
+
context 'with MetasploitDataModels::Search::Operation::Port::Range' do
|
103
|
+
let(:node) {
|
104
|
+
MetasploitDataModels::Search::Operation::Port::Range.new(
|
105
|
+
operator: operator,
|
106
|
+
value: value
|
107
|
+
)
|
108
|
+
}
|
109
|
+
|
110
|
+
let(:operator) {
|
111
|
+
MetasploitDataModels::Search::Operator::Port::List.new(
|
112
|
+
klass: Mdm::Service
|
113
|
+
)
|
114
|
+
}
|
115
|
+
|
116
|
+
let(:range) {
|
117
|
+
1..2
|
118
|
+
}
|
119
|
+
|
120
|
+
let(:value) {
|
121
|
+
"#{range.begin}-#{range.end}"
|
122
|
+
}
|
123
|
+
|
124
|
+
it 'should visit operation.operator with attribute_visitor' do
|
125
|
+
expect(visitor.attribute_visitor).to receive(:visit).with(operator).and_call_original
|
126
|
+
|
127
|
+
visit
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'should call in on Arel::Attributes::Attribute from attribute_visitor' do
|
131
|
+
attribute = double('Visited Operator')
|
132
|
+
allow(visitor.attribute_visitor).to receive(:visit).with(operator).and_return(attribute)
|
133
|
+
|
134
|
+
expect(attribute).to receive(:in).with(range)
|
135
|
+
|
136
|
+
visit
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
100
140
|
context 'with Metasploit::Model::Search::Query#tree' do
|
101
141
|
let(:node) do
|
102
142
|
query.tree
|
@@ -9,14 +9,13 @@ FactoryGirl.define do
|
|
9
9
|
# Attributes
|
10
10
|
#
|
11
11
|
name { generate :mdm_service_name }
|
12
|
-
port
|
12
|
+
port { generate :port }
|
13
13
|
proto 'snmp'
|
14
14
|
state 'open'
|
15
15
|
|
16
16
|
factory :web_service do
|
17
17
|
proto 'tcp'
|
18
18
|
name { FactoryGirl.generate(:web_service_name) }
|
19
|
-
port { FactoryGirl.generate(:port) }
|
20
19
|
end
|
21
20
|
end
|
22
21
|
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MetasploitDataModels::Version do
|
4
|
+
context 'CONSTANTS' do
|
5
|
+
context 'MAJOR' do
|
6
|
+
subject(:major) do
|
7
|
+
described_class::MAJOR
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'is 0 because the API is not locked yet' do
|
11
|
+
expect(major).to eq(0)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'MINOR' do
|
16
|
+
subject(:minor) do
|
17
|
+
described_class::MINOR
|
18
|
+
end
|
19
|
+
|
20
|
+
it { should be_a Integer }
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'PATCH' do
|
24
|
+
subject(:patch) do
|
25
|
+
described_class::PATCH
|
26
|
+
end
|
27
|
+
|
28
|
+
it { should be_a Integer }
|
29
|
+
end
|
30
|
+
|
31
|
+
pull_request = ENV['TRAVIS_PULL_REQUEST']
|
32
|
+
|
33
|
+
# a pull request cannot check PRERELEASE because it will be tested in the target branch, but the source itself
|
34
|
+
# is from the source branch and so has the source branch PRERELEASE.
|
35
|
+
#
|
36
|
+
# PRERELEASE can only be set appropriately for a merge by merging to the target branch and then updating PRERELEASE
|
37
|
+
# on the target branch before committing and/or pushing to github and travis-ci.
|
38
|
+
if pull_request.nil? || pull_request == 'false'
|
39
|
+
context 'PREPRELEASE' do
|
40
|
+
subject(:prerelease) do
|
41
|
+
described_class::PRERELEASE
|
42
|
+
end
|
43
|
+
|
44
|
+
branch = ENV['TRAVIS_BRANCH']
|
45
|
+
|
46
|
+
if branch.blank?
|
47
|
+
branch = `git rev-parse --abbrev-ref HEAD`.strip
|
48
|
+
end
|
49
|
+
|
50
|
+
if branch == 'master'
|
51
|
+
it 'does not have a PRERELEASE' do
|
52
|
+
expect(defined? described_class::PRERELEASE).to be_nil
|
53
|
+
end
|
54
|
+
else
|
55
|
+
branch_regex = /\A(?<type>bug|chore|feature|staging)(\/(?<story>[^\/]+))?\/(?<prerelease>[^\/]+)\z/
|
56
|
+
match = branch.match(branch_regex)
|
57
|
+
|
58
|
+
if match
|
59
|
+
it 'matches the branch relative name' do
|
60
|
+
expect(prerelease).to eq(match[:prerelease])
|
61
|
+
end
|
62
|
+
else
|
63
|
+
tag_regex = /\Av(?<major>\d+).(?<minor>\d+).(?<patch>\d+)(\.pre\.(?<prerelease>.*))?\z/
|
64
|
+
# travis-ci sets TRAVIS_BRANCH to the tag name for tag builds
|
65
|
+
match = branch.match(tag_regex)
|
66
|
+
|
67
|
+
if match
|
68
|
+
tag_prerelease = match[:prerelease]
|
69
|
+
|
70
|
+
if tag_prerelease
|
71
|
+
it 'matches the tag prerelease converted from a gem version to a VERSION' do
|
72
|
+
expect(prerelease).to eq(tag_prerelease.gsub('.pre.', '-'))
|
73
|
+
end
|
74
|
+
else
|
75
|
+
it 'does not have a PRERELEASE' do
|
76
|
+
expect(defined? described_class::PRERELEASE).to be_nil
|
77
|
+
end
|
78
|
+
end
|
79
|
+
else
|
80
|
+
it 'has a abbreviated reference that can be parsed for prerelease' do
|
81
|
+
fail "Do not know how to parse #{branch.inspect} for PRERELEASE"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
context 'full' do
|
91
|
+
subject(:full) do
|
92
|
+
described_class.full
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
# lets
|
97
|
+
#
|
98
|
+
|
99
|
+
let(:major) do
|
100
|
+
1
|
101
|
+
end
|
102
|
+
|
103
|
+
let(:minor) do
|
104
|
+
2
|
105
|
+
end
|
106
|
+
|
107
|
+
let(:patch) do
|
108
|
+
3
|
109
|
+
end
|
110
|
+
|
111
|
+
before(:each) do
|
112
|
+
stub_const("#{described_class}::MAJOR", major)
|
113
|
+
stub_const("#{described_class}::MINOR", minor)
|
114
|
+
stub_const("#{described_class}::PATCH", patch)
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'with PRERELEASE' do
|
118
|
+
let(:prerelease) do
|
119
|
+
'prerelease'
|
120
|
+
end
|
121
|
+
|
122
|
+
before(:each) do
|
123
|
+
stub_const("#{described_class}::PRERELEASE", prerelease)
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'is <major>.<minor>.<patch>-<prerelease>' do
|
127
|
+
expect(full).to eq("#{major}.#{minor}.#{patch}-#{prerelease}")
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
context 'without PRERELEASE' do
|
132
|
+
before(:each) do
|
133
|
+
hide_const("#{described_class}::PRERELEASE")
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'is <major>.<minor>.<patch>' do
|
137
|
+
expect(full).to eq("#{major}.#{minor}.#{patch}")
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
shared_examples_for 'MetasploitDataModels::Search::Visitor::Where#visit with Metasploit::Model::Search
|
1
|
+
shared_examples_for 'MetasploitDataModels::Search::Visitor::Where#visit with Metasploit::Model::Search*::Group::Base' do |options={}|
|
2
2
|
options.assert_valid_keys(:arel_class)
|
3
3
|
|
4
4
|
arel_class = options.fetch(:arel_class)
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metasploit_data_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Samuel Huckins
|
8
8
|
- Luke Imhoff
|
9
9
|
- David 'thelightcosine' Maloney
|
10
|
-
- Trevor Rosen
|
10
|
+
- Trevor 'burlyscudd' Rosen
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-
|
14
|
+
date: 2014-07-07 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rake
|
@@ -109,18 +109,18 @@ dependencies:
|
|
109
109
|
requirements:
|
110
110
|
- - '>='
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 0.
|
112
|
+
version: 0.25.1
|
113
113
|
- - <
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version: '0.
|
115
|
+
version: '0.26'
|
116
116
|
requirement: !ruby/object:Gem::Requirement
|
117
117
|
requirements:
|
118
118
|
- - '>='
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version: 0.
|
120
|
+
version: 0.25.1
|
121
121
|
- - <
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: '0.
|
123
|
+
version: '0.26'
|
124
124
|
prerelease: false
|
125
125
|
type: :runtime
|
126
126
|
- !ruby/object:Gem::Dependency
|
@@ -182,6 +182,7 @@ files:
|
|
182
182
|
- .simplecov
|
183
183
|
- .travis.yml
|
184
184
|
- .yardopts
|
185
|
+
- CONTRIBUTING.md
|
185
186
|
- Gemfile
|
186
187
|
- LICENSE
|
187
188
|
- README.md
|
@@ -233,6 +234,11 @@ files:
|
|
233
234
|
- app/models/mdm/wmap_request.rb
|
234
235
|
- app/models/mdm/wmap_target.rb
|
235
236
|
- app/models/mdm/workspace.rb
|
237
|
+
- app/models/metasploit_data_models/search/operation/port/number.rb
|
238
|
+
- app/models/metasploit_data_models/search/operation/port/range.rb
|
239
|
+
- app/models/metasploit_data_models/search/operation/range.rb
|
240
|
+
- app/models/metasploit_data_models/search/operator/multitext.rb
|
241
|
+
- app/models/metasploit_data_models/search/operator/port/list.rb
|
236
242
|
- app/models/metasploit_data_models/search/visitor/attribute.rb
|
237
243
|
- app/models/metasploit_data_models/search/visitor/includes.rb
|
238
244
|
- app/models/metasploit_data_models/search/visitor/joins.rb
|
@@ -359,11 +365,9 @@ files:
|
|
359
365
|
- lib/metasploit_data_models/base64_serializer.rb
|
360
366
|
- lib/metasploit_data_models/change_required_columns_to_null_false.rb
|
361
367
|
- lib/metasploit_data_models/engine.rb
|
362
|
-
- lib/metasploit_data_models/models.rb
|
363
368
|
- lib/metasploit_data_models/search.rb
|
364
369
|
- lib/metasploit_data_models/search/visitor.rb
|
365
370
|
- lib/metasploit_data_models/serialized_prefs.rb
|
366
|
-
- lib/metasploit_data_models/validators.rb
|
367
371
|
- lib/metasploit_data_models/version.rb
|
368
372
|
- lib/tasks/yard.rake
|
369
373
|
- metasploit_data_models.gemspec
|
@@ -415,6 +419,11 @@ files:
|
|
415
419
|
- spec/app/models/mdm/wmap_request_spec.rb
|
416
420
|
- spec/app/models/mdm/wmap_target_spec.rb
|
417
421
|
- spec/app/models/mdm/workspace_spec.rb
|
422
|
+
- spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb
|
423
|
+
- spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb
|
424
|
+
- spec/app/models/metasploit_data_models/search/operation/range_spec.rb
|
425
|
+
- spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb
|
426
|
+
- spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb
|
418
427
|
- spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb
|
419
428
|
- spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb
|
420
429
|
- spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb
|
@@ -504,6 +513,7 @@ files:
|
|
504
513
|
- spec/factories/mdm/web_vulns.rb
|
505
514
|
- spec/factories/mdm/workspaces.rb
|
506
515
|
- spec/lib/base64_serializer_spec.rb
|
516
|
+
- spec/lib/metasploit_data_models/version_spec.rb
|
507
517
|
- spec/spec_helper.rb
|
508
518
|
- spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb
|
509
519
|
- spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb
|
@@ -528,12 +538,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
528
538
|
version: '0'
|
529
539
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
530
540
|
requirements:
|
531
|
-
- - '
|
541
|
+
- - '>='
|
532
542
|
- !ruby/object:Gem::Version
|
533
|
-
version:
|
543
|
+
version: '0'
|
534
544
|
requirements: []
|
535
545
|
rubyforge_project:
|
536
|
-
rubygems_version: 2.
|
546
|
+
rubygems_version: 2.1.9
|
537
547
|
signing_key:
|
538
548
|
specification_version: 4
|
539
549
|
summary: Database code for MSF and Metasploit Pro
|
@@ -585,6 +595,11 @@ test_files:
|
|
585
595
|
- spec/app/models/mdm/wmap_request_spec.rb
|
586
596
|
- spec/app/models/mdm/wmap_target_spec.rb
|
587
597
|
- spec/app/models/mdm/workspace_spec.rb
|
598
|
+
- spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb
|
599
|
+
- spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb
|
600
|
+
- spec/app/models/metasploit_data_models/search/operation/range_spec.rb
|
601
|
+
- spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb
|
602
|
+
- spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb
|
588
603
|
- spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb
|
589
604
|
- spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb
|
590
605
|
- spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb
|
@@ -674,6 +689,7 @@ test_files:
|
|
674
689
|
- spec/factories/mdm/web_vulns.rb
|
675
690
|
- spec/factories/mdm/workspaces.rb
|
676
691
|
- spec/lib/base64_serializer_spec.rb
|
692
|
+
- spec/lib/metasploit_data_models/version_spec.rb
|
677
693
|
- spec/spec_helper.rb
|
678
694
|
- spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb
|
679
695
|
- spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'metasploit_data_models/validators'
|
2
|
-
|
3
|
-
module MetasploitDataModels
|
4
|
-
module Models
|
5
|
-
include MetasploitDataModels::Validators
|
6
|
-
|
7
|
-
def models_pathname
|
8
|
-
app_pathname.join('models')
|
9
|
-
end
|
10
|
-
|
11
|
-
def require_models
|
12
|
-
autoload_validators
|
13
|
-
|
14
|
-
models_globs = models_pathname.join('**', '*.rb')
|
15
|
-
|
16
|
-
Dir.glob(models_globs) do |model_path|
|
17
|
-
require model_path
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module MetasploitDataModels
|
2
|
-
module Validators
|
3
|
-
# Mimics behavior of `app/validators` in Rails projects by adding it to
|
4
|
-
# `ActiveSupport::Dependencies.autoload_paths` if it is not already in the Array.
|
5
|
-
#
|
6
|
-
# @return [void]
|
7
|
-
def autoload_validators
|
8
|
-
validators_path = validators_pathname.to_s
|
9
|
-
|
10
|
-
unless ActiveSupport::Dependencies.autoload_paths.include? validators_path
|
11
|
-
ActiveSupport::Dependencies.autoload_paths << validators_path
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def validators_pathname
|
16
|
-
app_pathname.join('validators')
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|