metasploit_data_models 0.21.3 → 0.22.1

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZTM5OGIzNmU1YjA2NDZjMDVjZTUyYjFmNDM0NzMwMGNkZjg0OTNjYw==
5
- data.tar.gz: !binary |-
6
- Mjg5MGZlNTczYjViYjg4ZGU5Y2E3ZDA2MjZlNzAwZTk5ZmNmNjA2ZA==
2
+ SHA1:
3
+ metadata.gz: 9c10785a13c01bc2f665452025f6e3760c2ae461
4
+ data.tar.gz: c2347bc23c46c2220837dbed38dcfafd667da197
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MTYyMTJhY2YwYzQyNTBjNDAwNGM4NmNlZjUxODY4YzI2NDU4MzNjOWY1Mjk3
10
- ZjI3Y2E2NWM5YTM5NzkwMmEwYTIxYmExYjBkNmU3NTFhYjc4ZDM2NDUwNmI3
11
- NGI1OGMzN2ZjZDQyYTQwZDdjZWI1MTcwNzk0YWY3MGVlZTIwZjE=
12
- data.tar.gz: !binary |-
13
- YzEwZGJkNDVhMWEzMzBjMDRkMWM0MTFiMGJkZjc0M2FkNjU0MjgxNWY0MzQz
14
- NjQ3YzJmMmY3NmFhMzg0ZjIyNjY1MTQ2MzZlYzYxOWE1ZjgzYWY2YTc4Mzhj
15
- NmUxMzlkMzViYjU4OWY1MDM0OTY3OTBmYzIxODU4MWNlN2YzZmY=
6
+ metadata.gz: 88988f1f7348f8e3472265becac4ddd3f3fecc00eb6ba696e4f6ca9e03ae95b427f91a16e8e91f4d1cf53e88fa6a474e96d3832e65eb1aa3bec9ded553d4ae85
7
+ data.tar.gz: c1461576f9e91b6f70bb0029b6673d07aaf03877bc4e011030b989e651adc478cedf5c54c69c69aac96f0338af3204fa382c47770dad29a8c526607d966ee518
@@ -222,6 +222,15 @@ class Mdm::Service < ActiveRecord::Base
222
222
  in: PROTOS
223
223
  }
224
224
 
225
+ validates :host_id,
226
+ uniqueness: {
227
+ message: 'already has a service with this port and proto',
228
+ scope: [
229
+ :port,
230
+ :proto
231
+ ]
232
+ }
233
+
225
234
  #
226
235
  # Class Methods
227
236
  #
@@ -103,11 +103,7 @@ class Mdm::Task < ActiveRecord::Base
103
103
  has_many :sessions, :through => :task_sessions, :class_name => 'Mdm::Session'
104
104
 
105
105
 
106
- #
107
- # Scopes
108
- #
109
106
 
110
- scope :running, order( "created_at DESC" ).where("completed_at IS NULL")
111
107
 
112
108
  #
113
109
  # Serializations
@@ -0,0 +1,12 @@
1
+ class RemoveDuplicateServices < ActiveRecord::Migration
2
+ def change
3
+ duplicate_keys = Mdm::Service.count(group: [:host_id, :port, :proto]).select { |k,v| v >1 }.keys
4
+ duplicate_keys.each do |keys|
5
+ duplicate_services = Mdm::Service.where(host_id: keys[0], port: keys[1], proto: keys[2]).order(:created_at)
6
+ duplicate_services.pop
7
+ duplicate_services.each(&:destroy)
8
+ end
9
+
10
+ add_index :services, [:host_id, :port, :proto], unique: true
11
+ end
12
+ end
@@ -4,9 +4,9 @@ module MetasploitDataModels
4
4
  # The major version number.
5
5
  MAJOR = 0
6
6
  # The minor version number, scoped to the {MAJOR} version number.
7
- MINOR = 21
7
+ MINOR = 22
8
8
  # The patch number, scoped to the {MINOR} version number.
9
- PATCH = 3
9
+ PATCH = 1
10
10
 
11
11
  # The full version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the `PRERELEASE` in the
12
12
  # {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0} format.
@@ -153,5 +153,13 @@ describe Mdm::Service do
153
153
 
154
154
  it { should validate_numericality_of(:port).only_integer }
155
155
  it { should ensure_inclusion_of(:proto).in_array(described_class::PROTOS) }
156
+
157
+ context 'when a duplicate service already exists' do
158
+ let(:service1) { FactoryGirl.create(:mdm_service)}
159
+ let(:service2) { FactoryGirl.build(:mdm_service, :host => service1.host, :port => service1.port, :proto => service1.proto )}
160
+ it 'is not valid' do
161
+ expect(service2).to_not be_valid
162
+ end
163
+ end
156
164
  end
157
165
  end
@@ -59,15 +59,6 @@ describe Mdm::Task do
59
59
 
60
60
  end
61
61
 
62
- context 'scopes' do
63
- context "running" do
64
- it "should exclude completed tasks" do
65
- task = FactoryGirl.create(:mdm_task, :completed_at => Time.now)
66
- Mdm::Task.running.should_not include(task)
67
- end
68
- end
69
- end
70
-
71
62
  context 'callbacks' do
72
63
  context 'before_destroy' do
73
64
  it 'should call #delete_file' do
@@ -79,4 +70,4 @@ describe Mdm::Task do
79
70
  end
80
71
 
81
72
 
82
- end
73
+ end
@@ -2686,6 +2686,13 @@ CREATE INDEX index_notes_on_ntype ON notes USING btree (ntype);
2686
2686
  CREATE INDEX index_refs_on_name ON refs USING btree (name);
2687
2687
 
2688
2688
 
2689
+ --
2690
+ -- Name: index_services_on_host_id_and_port_and_proto; Type: INDEX; Schema: public; Owner: -; Tablespace:
2691
+ --
2692
+
2693
+ CREATE UNIQUE INDEX index_services_on_host_id_and_port_and_proto ON services USING btree (host_id, port, proto);
2694
+
2695
+
2689
2696
  --
2690
2697
  -- Name: index_services_on_name; Type: INDEX; Schema: public; Owner: -; Tablespace:
2691
2698
  --
@@ -2987,6 +2994,8 @@ INSERT INTO schema_migrations (version) VALUES ('20130717150737');
2987
2994
 
2988
2995
  INSERT INTO schema_migrations (version) VALUES ('20140905031549');
2989
2996
 
2997
+ INSERT INTO schema_migrations (version) VALUES ('20150112203945');
2998
+
2990
2999
  INSERT INTO schema_migrations (version) VALUES ('21');
2991
3000
 
2992
3001
  INSERT INTO schema_migrations (version) VALUES ('22');
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.21.3
4
+ version: 0.22.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Huckins
@@ -11,180 +11,180 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-12-20 00:00:00.000000000 Z
14
+ date: 2015-01-16 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rake
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - ! '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ! '>='
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: yard
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - <
34
+ - - "<"
35
35
  - !ruby/object:Gem::Version
36
36
  version: 0.8.7.4
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - <
41
+ - - "<"
42
42
  - !ruby/object:Gem::Version
43
43
  version: 0.8.7.4
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: pry
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - ! '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - ! '>='
55
+ - - ">="
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activerecord
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - ! '>='
62
+ - - ">="
63
63
  - !ruby/object:Gem::Version
64
64
  version: 3.2.13
65
- - - <
65
+ - - "<"
66
66
  - !ruby/object:Gem::Version
67
67
  version: 4.0.0
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ! '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: 3.2.13
75
- - - <
75
+ - - "<"
76
76
  - !ruby/object:Gem::Version
77
77
  version: 4.0.0
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: activesupport
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ! '>='
82
+ - - ">="
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - ! '>='
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: recog
94
94
  requirement: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - ~>
96
+ - - "~>"
97
97
  - !ruby/object:Gem::Version
98
98
  version: '1.0'
99
99
  type: :runtime
100
100
  prerelease: false
101
101
  version_requirements: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - ~>
103
+ - - "~>"
104
104
  - !ruby/object:Gem::Version
105
105
  version: '1.0'
106
106
  - !ruby/object:Gem::Dependency
107
107
  name: metasploit-concern
108
108
  requirement: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - ~>
110
+ - - "~>"
111
111
  - !ruby/object:Gem::Version
112
112
  version: 0.3.0
113
113
  type: :runtime
114
114
  prerelease: false
115
115
  version_requirements: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ~>
117
+ - - "~>"
118
118
  - !ruby/object:Gem::Version
119
119
  version: 0.3.0
120
120
  - !ruby/object:Gem::Dependency
121
121
  name: metasploit-model
122
122
  requirement: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - ~>
124
+ - - "~>"
125
125
  - !ruby/object:Gem::Version
126
126
  version: 0.28.0
127
127
  type: :runtime
128
128
  prerelease: false
129
129
  version_requirements: !ruby/object:Gem::Requirement
130
130
  requirements:
131
- - - ~>
131
+ - - "~>"
132
132
  - !ruby/object:Gem::Version
133
133
  version: 0.28.0
134
134
  - !ruby/object:Gem::Dependency
135
135
  name: railties
136
136
  requirement: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - <
138
+ - - "<"
139
139
  - !ruby/object:Gem::Version
140
140
  version: 4.0.0
141
141
  type: :runtime
142
142
  prerelease: false
143
143
  version_requirements: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - <
145
+ - - "<"
146
146
  - !ruby/object:Gem::Version
147
147
  version: 4.0.0
148
148
  - !ruby/object:Gem::Dependency
149
149
  name: arel-helpers
150
150
  requirement: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - ! '>='
152
+ - - ">="
153
153
  - !ruby/object:Gem::Version
154
154
  version: '0'
155
155
  type: :runtime
156
156
  prerelease: false
157
157
  version_requirements: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - ! '>='
159
+ - - ">="
160
160
  - !ruby/object:Gem::Version
161
161
  version: '0'
162
162
  - !ruby/object:Gem::Dependency
163
163
  name: redcarpet
164
164
  requirement: !ruby/object:Gem::Requirement
165
165
  requirements:
166
- - - ! '>='
166
+ - - ">="
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  type: :development
170
170
  prerelease: false
171
171
  version_requirements: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - ! '>='
173
+ - - ">="
174
174
  - !ruby/object:Gem::Version
175
175
  version: '0'
176
176
  - !ruby/object:Gem::Dependency
177
177
  name: pg
178
178
  requirement: !ruby/object:Gem::Requirement
179
179
  requirements:
180
- - - ! '>='
180
+ - - ">="
181
181
  - !ruby/object:Gem::Version
182
182
  version: '0'
183
183
  type: :runtime
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - ! '>='
187
+ - - ">="
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  description: Implements minimal ActiveRecord models and database helper code used
@@ -199,12 +199,12 @@ executables:
199
199
  extensions: []
200
200
  extra_rdoc_files: []
201
201
  files:
202
- - .coveralls.yml
203
- - .gitignore
204
- - .rspec
205
- - .simplecov
206
- - .travis.yml
207
- - .yardopts
202
+ - ".coveralls.yml"
203
+ - ".gitignore"
204
+ - ".rspec"
205
+ - ".simplecov"
206
+ - ".travis.yml"
207
+ - ".yardopts"
208
208
  - CONTRIBUTING.md
209
209
  - Gemfile
210
210
  - LICENSE
@@ -393,6 +393,7 @@ files:
393
393
  - db/migrate/20130604145732_create_task_sessions.rb
394
394
  - db/migrate/20130717150737_remove_pname_validation.rb
395
395
  - db/migrate/20140905031549_add_detected_arch_to_host.rb
396
+ - db/migrate/20150112203945_remove_duplicate_services.rb
396
397
  - lib/mdm.rb
397
398
  - lib/mdm/host/operating_system_normalization.rb
398
399
  - lib/mdm/module.rb
@@ -591,17 +592,17 @@ require_paths:
591
592
  - lib
592
593
  required_ruby_version: !ruby/object:Gem::Requirement
593
594
  requirements:
594
- - - ! '>='
595
+ - - ">="
595
596
  - !ruby/object:Gem::Version
596
597
  version: '0'
597
598
  required_rubygems_version: !ruby/object:Gem::Requirement
598
599
  requirements:
599
- - - ! '>='
600
+ - - ">="
600
601
  - !ruby/object:Gem::Version
601
602
  version: '0'
602
603
  requirements: []
603
604
  rubyforge_project:
604
- rubygems_version: 2.4.4
605
+ rubygems_version: 2.4.3
605
606
  signing_key:
606
607
  specification_version: 4
607
608
  summary: Database code for MSF and Metasploit Pro