metasploit_data_models 0.17.3.pre.metasploit.pre.concern-java → 0.18.0-java

Sign up to get free protection for your applications and to get access to all the features.
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