metasploit_data_models 0.16.9-java → 0.17.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/.coveralls.yml +1 -0
- data/.travis.yml +3 -0
- data/Gemfile +2 -0
- data/README.md +1 -1
- data/app/models/mdm/task.rb +0 -2
- data/app/models/mdm/workspace.rb +0 -2
- data/lib/metasploit_data_models/version.rb +1 -1
- data/spec/app/models/mdm/task_spec.rb +0 -1
- data/spec/app/models/mdm/workspace_spec.rb +0 -10
- data/spec/spec_helper.rb +11 -0
- metadata +3 -12
- data/app/models/mdm/report.rb +0 -50
- data/app/models/mdm/report_template.rb +0 -27
- data/spec/app/models/mdm/report_spec.rb +0 -104
- data/spec/app/models/mdm/report_template_spec.rb +0 -52
- data/spec/factories/mdm/report_templates.rb +0 -8
- data/spec/factories/mdm/reports.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f4621672c11b8b3879c2e357d8cb6d58bbed881
|
4
|
+
data.tar.gz: 98cfa49f629de2306a3fcb0ff56418f20cbf0905
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc546d304ea93aca26a4bcd8a4d4f66d4c4089f5ed5699e32a39988a4e90e29c186e46774d3cea29f1f5ab3470fe4a935fa1797f2347b5c3ed9f191122bd0d5c
|
7
|
+
data.tar.gz: ac654d836d39728947e6a4fb02fe6914e8f404a58b9070db06eeb55369ddcfb9436ab9d9e9942df43b7744a9556a6e434b31ce8186b5ff22ca9b6939d89f86f8
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -19,6 +19,8 @@ group :development, :test do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
group :test do
|
22
|
+
# Upload coverage reports to coveralls.io
|
23
|
+
gem 'coveralls', require: false
|
22
24
|
# In a full rails project, factory_girl_rails would be in both the :development, and :test group, but since we only
|
23
25
|
# want rails in :test, factory_girl_rails must also only be in :test.
|
24
26
|
# add matchers from shoulda, such as validates_presence_of, which are useful for testing validations
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#MetasploitDataModels [](https://travis-ci.org/rapid7/metasploit_data_models)
|
1
|
+
#MetasploitDataModels [](https://travis-ci.org/rapid7/metasploit_data_models)[](https://codeclimate.com/github/rapid7/metasploit_data_models)[](https://coveralls.io/r/rapid7/metasploit_data_models)[](https://gemnasium.com/rapid7/metasploit_data_models)[](http://badge.fury.io/rb/metasploit_data_models)
|
2
2
|
|
3
3
|
The database layer for Metasploit
|
4
4
|
|
data/app/models/mdm/task.rb
CHANGED
data/app/models/mdm/workspace.rb
CHANGED
@@ -21,8 +21,6 @@ class Mdm::Workspace < ActiveRecord::Base
|
|
21
21
|
has_many :listeners, :dependent => :destroy, :class_name => 'Mdm::Listener'
|
22
22
|
has_many :notes, :class_name => 'Mdm::Note'
|
23
23
|
belongs_to :owner, :class_name => 'Mdm::User', :foreign_key => 'owner_id'
|
24
|
-
has_many :report_templates, :dependent => :destroy, :class_name => 'Mdm::ReportTemplate'
|
25
|
-
has_many :reports, :dependent => :destroy, :class_name => 'Mdm::Report'
|
26
24
|
has_many :tasks, :dependent => :destroy, :class_name => 'Mdm::Task', :order => 'created_at DESC'
|
27
25
|
has_and_belongs_to_many :users, :join_table => 'workspace_members', :uniq => true, :class_name => 'Mdm::User'
|
28
26
|
|
@@ -4,5 +4,5 @@ module MetasploitDataModels
|
|
4
4
|
# metasploit-framework/data/sql/migrate to db/migrate in this project, not all models have specs that verify the
|
5
5
|
# migrations (with have_db_column and have_db_index) and certain models may not be shared between metasploit-framework
|
6
6
|
# and pro, so models may be removed in the future. Because of the unstable API the version should remain below 1.0.0
|
7
|
-
VERSION = '0.
|
7
|
+
VERSION = '0.17.0'
|
8
8
|
end
|
@@ -55,7 +55,6 @@ describe Mdm::Task do
|
|
55
55
|
it { should have_many(:task_services).class_name('Mdm::TaskService').dependent(:destroy) }
|
56
56
|
it { should have_many(:services).class_name('Mdm::Service').through(:task_services) }
|
57
57
|
it { should belong_to(:workspace).class_name('Mdm::Workspace') }
|
58
|
-
it { should have_many(:reports).class_name('Mdm::Report')}
|
59
58
|
|
60
59
|
end
|
61
60
|
|
@@ -20,8 +20,6 @@ describe Mdm::Workspace do
|
|
20
20
|
it 'should successfully destroy the object and dependent objects' do
|
21
21
|
workspace = FactoryGirl.create(:mdm_workspace)
|
22
22
|
listener = FactoryGirl.create(:mdm_listener, :workspace => workspace)
|
23
|
-
report_template = FactoryGirl.create(:mdm_report_template, :workspace => workspace)
|
24
|
-
report = FactoryGirl.create(:mdm_report, :workspace => workspace)
|
25
23
|
task = FactoryGirl.create(:mdm_task, :workspace => workspace)
|
26
24
|
|
27
25
|
expect {
|
@@ -33,12 +31,6 @@ describe Mdm::Workspace do
|
|
33
31
|
expect {
|
34
32
|
listener.reload
|
35
33
|
}.to raise_error(ActiveRecord::RecordNotFound)
|
36
|
-
expect {
|
37
|
-
report_template.reload
|
38
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
39
|
-
expect {
|
40
|
-
report.reload
|
41
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
42
34
|
expect {
|
43
35
|
task.reload
|
44
36
|
}.to raise_error(ActiveRecord::RecordNotFound)
|
@@ -55,8 +47,6 @@ describe Mdm::Workspace do
|
|
55
47
|
it { should have_many(:loots).class_name('Mdm::Loot').through(:hosts) }
|
56
48
|
it { should have_many(:notes).class_name('Mdm::Note') }
|
57
49
|
it { should belong_to(:owner).class_name('Mdm::User').with_foreign_key('owner_id') }
|
58
|
-
it { should have_many(:report_templates).class_name('Mdm::ReportTemplate').dependent(:destroy) }
|
59
|
-
it { should have_many(:reports).class_name('Mdm::Report').dependent(:destroy) }
|
60
50
|
it { should have_many(:services).class_name('Mdm::Service').through(:hosts).with_foreign_key('service_id') }
|
61
51
|
it { should have_many(:sessions).class_name('Mdm::Session').through(:hosts) }
|
62
52
|
it { should have_many(:tasks).class_name('Mdm::Task').dependent(:destroy).order('created_at DESC') }
|
data/spec/spec_helper.rb
CHANGED
@@ -8,6 +8,17 @@ Bundler.setup(:default, :test)
|
|
8
8
|
# Require simplecov before loading ..dummy/config/environment.rb because it will cause metasploit_data_models/lib to
|
9
9
|
# be loaded, which would result in Coverage not recording hits for any of the files.
|
10
10
|
require 'simplecov'
|
11
|
+
require 'coveralls'
|
12
|
+
|
13
|
+
if ENV['TRAVIS'] == 'true'
|
14
|
+
# don't generate local report as it is inaccessible on travis-ci, which is why coveralls is being used.
|
15
|
+
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
16
|
+
else
|
17
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
18
|
+
# either generate the local report
|
19
|
+
SimpleCov::Formatter::HTMLFormatter
|
20
|
+
]
|
21
|
+
end
|
11
22
|
|
12
23
|
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
13
24
|
require 'rspec/rails'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.17.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Samuel Huckins
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2014-03-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rake
|
@@ -136,6 +136,7 @@ executables:
|
|
136
136
|
extensions: []
|
137
137
|
extra_rdoc_files: []
|
138
138
|
files:
|
139
|
+
- .coveralls.yml
|
139
140
|
- .gitignore
|
140
141
|
- .rspec
|
141
142
|
- .simplecov
|
@@ -170,8 +171,6 @@ files:
|
|
170
171
|
- app/models/mdm/note.rb
|
171
172
|
- app/models/mdm/profile.rb
|
172
173
|
- app/models/mdm/ref.rb
|
173
|
-
- app/models/mdm/report.rb
|
174
|
-
- app/models/mdm/report_template.rb
|
175
174
|
- app/models/mdm/route.rb
|
176
175
|
- app/models/mdm/service.rb
|
177
176
|
- app/models/mdm/session.rb
|
@@ -341,8 +340,6 @@ files:
|
|
341
340
|
- spec/app/models/mdm/nexpose_console_spec.rb
|
342
341
|
- spec/app/models/mdm/note_spec.rb
|
343
342
|
- spec/app/models/mdm/ref_spec.rb
|
344
|
-
- spec/app/models/mdm/report_spec.rb
|
345
|
-
- spec/app/models/mdm/report_template_spec.rb
|
346
343
|
- spec/app/models/mdm/route_spec.rb
|
347
344
|
- spec/app/models/mdm/service_spec.rb
|
348
345
|
- spec/app/models/mdm/session_event_spec.rb
|
@@ -424,8 +421,6 @@ files:
|
|
424
421
|
- spec/factories/mdm/nexpose_consoles.rb
|
425
422
|
- spec/factories/mdm/notes.rb
|
426
423
|
- spec/factories/mdm/refs.rb
|
427
|
-
- spec/factories/mdm/report_templates.rb
|
428
|
-
- spec/factories/mdm/reports.rb
|
429
424
|
- spec/factories/mdm/routes.rb
|
430
425
|
- spec/factories/mdm/services.rb
|
431
426
|
- spec/factories/mdm/session_events.rb
|
@@ -495,8 +490,6 @@ test_files:
|
|
495
490
|
- spec/app/models/mdm/nexpose_console_spec.rb
|
496
491
|
- spec/app/models/mdm/note_spec.rb
|
497
492
|
- spec/app/models/mdm/ref_spec.rb
|
498
|
-
- spec/app/models/mdm/report_spec.rb
|
499
|
-
- spec/app/models/mdm/report_template_spec.rb
|
500
493
|
- spec/app/models/mdm/route_spec.rb
|
501
494
|
- spec/app/models/mdm/service_spec.rb
|
502
495
|
- spec/app/models/mdm/session_event_spec.rb
|
@@ -578,8 +571,6 @@ test_files:
|
|
578
571
|
- spec/factories/mdm/nexpose_consoles.rb
|
579
572
|
- spec/factories/mdm/notes.rb
|
580
573
|
- spec/factories/mdm/refs.rb
|
581
|
-
- spec/factories/mdm/report_templates.rb
|
582
|
-
- spec/factories/mdm/reports.rb
|
583
574
|
- spec/factories/mdm/routes.rb
|
584
575
|
- spec/factories/mdm/services.rb
|
585
576
|
- spec/factories/mdm/session_events.rb
|
data/app/models/mdm/report.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
class Mdm::Report < ActiveRecord::Base
|
2
|
-
#
|
3
|
-
# Callbacks
|
4
|
-
#
|
5
|
-
|
6
|
-
before_destroy :delete_file
|
7
|
-
|
8
|
-
#
|
9
|
-
# Relations
|
10
|
-
#
|
11
|
-
|
12
|
-
belongs_to :workspace, :class_name => 'Mdm::Workspace'
|
13
|
-
belongs_to :task, :class_name => 'Mdm::Task'
|
14
|
-
#
|
15
|
-
# Scopes
|
16
|
-
#
|
17
|
-
|
18
|
-
scope :flagged, where('reports.downloaded_at is NULL')
|
19
|
-
|
20
|
-
#
|
21
|
-
# Serializations
|
22
|
-
#
|
23
|
-
|
24
|
-
serialize :options, MetasploitDataModels::Base64Serializer.new
|
25
|
-
|
26
|
-
#
|
27
|
-
# Validations
|
28
|
-
#
|
29
|
-
|
30
|
-
validates :name,
|
31
|
-
:format => {
|
32
|
-
:allow_blank => true,
|
33
|
-
:message => "name must consist of A-Z, 0-9, space, dot, underscore, or dash",
|
34
|
-
:with => /^[A-Za-z0-9\x20\x2e\x2d\x5f\x5c]+$/
|
35
|
-
}
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def delete_file
|
40
|
-
c = Pro::Client.get rescue nil
|
41
|
-
if c
|
42
|
-
c.report_delete_file(self[:id])
|
43
|
-
else
|
44
|
-
::File.unlink(self.path) rescue nil
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
ActiveSupport.run_load_hooks(:mdm_report, self)
|
49
|
-
end
|
50
|
-
|
@@ -1,27 +0,0 @@
|
|
1
|
-
class Mdm::ReportTemplate < ActiveRecord::Base
|
2
|
-
#
|
3
|
-
# Callbacks
|
4
|
-
#
|
5
|
-
|
6
|
-
before_destroy :delete_file
|
7
|
-
|
8
|
-
#
|
9
|
-
# Relations
|
10
|
-
#
|
11
|
-
|
12
|
-
belongs_to :workspace, :class_name => 'Mdm::Workspace'
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def delete_file
|
17
|
-
c = Pro::Client.get rescue nil
|
18
|
-
if c
|
19
|
-
c.report_template_delete_file(self[:id])
|
20
|
-
else
|
21
|
-
::File.unlink(self.path) rescue nil
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
ActiveSupport.run_load_hooks(:mdm_report_template, self)
|
26
|
-
end
|
27
|
-
|
@@ -1,104 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Mdm::Report do
|
4
|
-
|
5
|
-
context 'associations' do
|
6
|
-
it { should belong_to(:workspace).class_name('Mdm::Workspace') }
|
7
|
-
it { should belong_to(:task).class_name('Mdm::Task') }
|
8
|
-
end
|
9
|
-
|
10
|
-
context 'validations' do
|
11
|
-
context 'name' do
|
12
|
-
it 'may be blank' do
|
13
|
-
blank_name = FactoryGirl.build(:mdm_report, :name => '')
|
14
|
-
blank_name.should be_valid
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'may contain A-Z, 0-9, space, dot, underscore, or dash' do
|
18
|
-
named_report = FactoryGirl.build(:mdm_report, :name => 'A1 B2.C_3-D')
|
19
|
-
named_report.should be_valid
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'may not contain other characters' do
|
23
|
-
invalid_name = FactoryGirl.build(:mdm_report, :name => 'A/1')
|
24
|
-
invalid_name.should_not be_valid
|
25
|
-
invalid_name.errors[:name].should include('name must consist of A-Z, 0-9, space, dot, underscore, or dash')
|
26
|
-
invalid_name = FactoryGirl.build(:mdm_report, :name => '#A1')
|
27
|
-
invalid_name.should_not be_valid
|
28
|
-
invalid_name.errors[:name].should include('name must consist of A-Z, 0-9, space, dot, underscore, or dash')
|
29
|
-
invalid_name = FactoryGirl.build(:mdm_report, :name => 'A,1')
|
30
|
-
invalid_name.should_not be_valid
|
31
|
-
invalid_name.errors[:name].should include('name must consist of A-Z, 0-9, space, dot, underscore, or dash')
|
32
|
-
invalid_name = FactoryGirl.build(:mdm_report, :name => 'A;1')
|
33
|
-
invalid_name.should_not be_valid
|
34
|
-
invalid_name.errors[:name].should include('name must consist of A-Z, 0-9, space, dot, underscore, or dash')
|
35
|
-
invalid_name = FactoryGirl.build(:mdm_report, :name => "A' or '1'='1'")
|
36
|
-
invalid_name.should_not be_valid
|
37
|
-
invalid_name.errors[:name].should include('name must consist of A-Z, 0-9, space, dot, underscore, or dash')
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'scopes' do
|
43
|
-
context 'flagged' do
|
44
|
-
it 'should return un-downlaoded reports' do
|
45
|
-
flagged_report = FactoryGirl.create(:mdm_report)
|
46
|
-
Mdm::Report.flagged.should include(flagged_report)
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should not return reports that have been downloaded' do
|
50
|
-
downlaoded_report = FactoryGirl.create(:mdm_report, :downloaded_at => Time.now)
|
51
|
-
Mdm::Report.flagged.should_not include(downlaoded_report)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
context 'callbacks' do
|
57
|
-
context 'before_destroy' do
|
58
|
-
it 'should call #delete_file' do
|
59
|
-
myreport = FactoryGirl.create(:mdm_report)
|
60
|
-
myreport.should_receive(:delete_file)
|
61
|
-
myreport.destroy
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
context 'factory' do
|
67
|
-
it 'should be valid' do
|
68
|
-
report = FactoryGirl.build(:mdm_report)
|
69
|
-
report.should be_valid
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context '#destroy' do
|
74
|
-
it 'should successfully destroy the object' do
|
75
|
-
report = FactoryGirl.create(:mdm_report)
|
76
|
-
expect {
|
77
|
-
report.destroy
|
78
|
-
}.to_not raise_error
|
79
|
-
expect {
|
80
|
-
report.reload
|
81
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
context 'database' do
|
86
|
-
|
87
|
-
context 'timestamps'do
|
88
|
-
it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
|
89
|
-
it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
|
90
|
-
it { should have_db_column(:downloaded_at).of_type(:datetime) }
|
91
|
-
end
|
92
|
-
|
93
|
-
context 'columns' do
|
94
|
-
it { should have_db_column(:workspace_id).of_type(:integer).with_options(:null => false, :default =>1) }
|
95
|
-
it { should have_db_column(:created_by).of_type(:string) }
|
96
|
-
it { should have_db_column(:rtype).of_type(:string) }
|
97
|
-
it { should have_db_column(:path).of_type(:string) }
|
98
|
-
it { should have_db_column(:options).of_type(:text) }
|
99
|
-
it { should have_db_column(:name).of_type(:string) }
|
100
|
-
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Mdm::ReportTemplate do
|
4
|
-
|
5
|
-
context 'associations' do
|
6
|
-
it { should belong_to(:workspace).class_name('Mdm::Workspace') }
|
7
|
-
end
|
8
|
-
|
9
|
-
context 'callbacks' do
|
10
|
-
context 'before_destroy' do
|
11
|
-
it 'should call #delete_file' do
|
12
|
-
report_template = FactoryGirl.create(:mdm_report_template)
|
13
|
-
report_template.should_receive(:delete_file)
|
14
|
-
report_template.destroy
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context 'factory' do
|
20
|
-
it 'should be valid' do
|
21
|
-
report_template = FactoryGirl.build(:mdm_report_template)
|
22
|
-
report_template.should be_valid
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context '#destroy' do
|
27
|
-
it 'should successfully destroy the object' do
|
28
|
-
report_template = FactoryGirl.create(:mdm_report_template)
|
29
|
-
expect {
|
30
|
-
report_template.destroy
|
31
|
-
}.to_not raise_error
|
32
|
-
expect {
|
33
|
-
report_template.reload
|
34
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'database' do
|
39
|
-
|
40
|
-
context 'timestamps'do
|
41
|
-
it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
|
42
|
-
it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
|
43
|
-
end
|
44
|
-
|
45
|
-
context 'columns' do
|
46
|
-
it { should have_db_column(:workspace_id).of_type(:integer).with_options(:null => false, :default =>1) }
|
47
|
-
it { should have_db_column(:created_by).of_type(:string) }
|
48
|
-
it { should have_db_column(:path).of_type(:string) }
|
49
|
-
it { should have_db_column(:name).of_type(:text) }
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
FactoryGirl.define do
|
2
|
-
factory :mdm_report, :aliases => [:report], :class => Mdm::Report do
|
3
|
-
#
|
4
|
-
# Associations
|
5
|
-
#
|
6
|
-
association :workspace, :factory => :mdm_workspace
|
7
|
-
name{generate :report_name}
|
8
|
-
end
|
9
|
-
|
10
|
-
sequence :report_name do |n|
|
11
|
-
"Some Report#{n}"
|
12
|
-
end
|
13
|
-
end
|