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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +164 -0
  3. data/README.md +6 -2
  4. data/app/models/mdm/host.rb +18 -0
  5. data/app/models/mdm/service.rb +12 -1
  6. data/app/models/metasploit_data_models/search/operation/port/number.rb +25 -0
  7. data/app/models/metasploit_data_models/search/operation/port/range.rb +79 -0
  8. data/app/models/metasploit_data_models/search/operation/range.rb +56 -0
  9. data/app/models/metasploit_data_models/search/operator/multitext.rb +73 -0
  10. data/app/models/metasploit_data_models/search/operator/port/list.rb +67 -0
  11. data/app/models/metasploit_data_models/search/visitor/attribute.rb +2 -1
  12. data/app/models/metasploit_data_models/search/visitor/includes.rb +3 -2
  13. data/app/models/metasploit_data_models/search/visitor/joins.rb +5 -3
  14. data/app/models/metasploit_data_models/search/visitor/method.rb +3 -2
  15. data/app/models/metasploit_data_models/search/visitor/where.rb +8 -2
  16. data/config/locales/en.yml +17 -1
  17. data/lib/metasploit_data_models.rb +1 -9
  18. data/lib/metasploit_data_models/version.rb +27 -6
  19. data/metasploit_data_models.gemspec +2 -2
  20. data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +41 -0
  21. data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +140 -0
  22. data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +235 -0
  23. data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +162 -0
  24. data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +164 -0
  25. data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +48 -26
  26. data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +10 -7
  27. data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +44 -30
  28. data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +16 -0
  29. data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +273 -65
  30. data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +42 -2
  31. data/spec/factories/mdm/services.rb +1 -2
  32. data/spec/lib/metasploit_data_models/version_spec.rb +141 -0
  33. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +1 -1
  34. metadata +28 -12
  35. data/lib/metasploit_data_models/models.rb +0 -21
  36. 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::Group::Base',
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 4567
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::Group::Base' do |options={}|
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.17.3.pre.metasploit.pre.concern
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-06-19 00:00:00.000000000 Z
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.24.1.pre.semantic.pre.versioning.pre.2.pre.0
112
+ version: 0.25.1
113
113
  - - <
114
114
  - !ruby/object:Gem::Version
115
- version: '0.25'
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.24.1.pre.semantic.pre.versioning.pre.2.pre.0
120
+ version: 0.25.1
121
121
  - - <
122
122
  - !ruby/object:Gem::Version
123
- version: '0.25'
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: 1.3.1
543
+ version: '0'
534
544
  requirements: []
535
545
  rubyforge_project:
536
- rubygems_version: 2.2.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