metasploit_data_models 0.24.5 → 1.0.0.pre.rails.pre.4.0a
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -1
- data/.simplecov +1 -1
- data/Gemfile +8 -5
- data/app/models/mdm/api_key.rb +1 -0
- data/app/models/mdm/client.rb +2 -2
- data/app/models/mdm/cred.rb +13 -13
- data/app/models/mdm/event.rb +5 -4
- data/app/models/mdm/exploit_attempt.rb +1 -0
- data/app/models/mdm/exploited_host.rb +1 -1
- data/app/models/mdm/host.rb +37 -20
- data/app/models/mdm/host_detail.rb +2 -2
- data/app/models/mdm/host_tag.rb +1 -1
- data/app/models/mdm/listener.rb +2 -1
- data/app/models/mdm/loot.rb +1 -0
- data/app/models/mdm/macro.rb +1 -1
- data/app/models/mdm/mod_ref.rb +1 -0
- data/app/models/mdm/module/action.rb +1 -7
- data/app/models/mdm/module/arch.rb +0 -6
- data/app/models/mdm/module/author.rb +1 -8
- data/app/models/mdm/module/detail.rb +1 -1
- data/app/models/mdm/module/mixin.rb +0 -6
- data/app/models/mdm/module/platform.rb +0 -6
- data/app/models/mdm/module/ref.rb +0 -6
- data/app/models/mdm/module/target.rb +0 -7
- data/app/models/mdm/nexpose_console.rb +1 -0
- data/app/models/mdm/note.rb +3 -3
- data/app/models/mdm/ref.rb +0 -6
- data/app/models/mdm/route.rb +2 -1
- data/app/models/mdm/service.rb +1 -1
- data/app/models/mdm/session.rb +8 -7
- data/app/models/mdm/session_event.rb +2 -1
- data/app/models/mdm/tag.rb +2 -2
- data/app/models/mdm/task.rb +1 -3
- data/app/models/mdm/user.rb +4 -5
- data/app/models/mdm/vuln.rb +8 -7
- data/app/models/mdm/vuln_attempt.rb +1 -0
- data/app/models/mdm/vuln_detail.rb +3 -2
- data/app/models/mdm/vuln_ref.rb +1 -1
- data/app/models/mdm/web_form.rb +2 -1
- data/app/models/mdm/web_page.rb +3 -2
- data/app/models/mdm/web_site.rb +3 -2
- data/app/models/mdm/web_vuln.rb +1 -0
- data/app/models/mdm/wmap_request.rb +12 -0
- data/app/models/mdm/wmap_target.rb +12 -0
- data/app/models/mdm/workspace.rb +4 -3
- data/app/models/metasploit_data_models/automatic_exploitation/match.rb +0 -3
- data/app/models/metasploit_data_models/automatic_exploitation/match_result.rb +0 -12
- data/app/models/metasploit_data_models/automatic_exploitation/match_set.rb +0 -1
- data/app/models/metasploit_data_models/automatic_exploitation/run.rb +0 -2
- data/app/validators/ip_format_validator.rb +6 -1
- data/config/initializers/ipaddr.rb +35 -0
- data/db/migrate/002_add_workspaces.rb +2 -2
- data/db/migrate/007_add_loots.rb +1 -1
- data/db/migrate/008_create_users.rb +1 -1
- data/db/migrate/011_add_reports.rb +1 -1
- data/db/migrate/012_add_tasks.rb +1 -1
- data/db/migrate/026_add_creds_table.rb +2 -2
- data/db/migrate/20100824151500_add_exploited_table.rb +1 -1
- data/db/migrate/20100911122000_add_report_templates.rb +1 -1
- data/db/migrate/20100916175000_add_campaigns_and_templates.rb +1 -1
- data/db/migrate/20101001000000_add_web_tables.rb +13 -13
- data/db/migrate/20110204112800_add_host_tags.rb +1 -1
- data/db/migrate/20110527000001_add_api_keys_table.rb +1 -1
- data/db/migrate/20110606000001_add_macros_table.rb +2 -2
- data/db/migrate/20110624000001_add_listeners_table.rb +1 -1
- data/db/migrate/20110630000001_add_nexpose_consoles_table.rb +1 -1
- data/db/migrate/20110717000001_add_profiles_table.rb +1 -1
- data/db/migrate/20130522001343_create_task_creds.rb +1 -1
- data/db/migrate/20130522032517_create_task_hosts.rb +1 -1
- data/db/migrate/20130522041110_create_task_services.rb +1 -1
- data/db/migrate/20130604145732_create_task_sessions.rb +1 -1
- data/db/migrate/20131002004641_create_automatic_exploitation_matches.rb +1 -1
- data/db/migrate/20131002164449_create_automatic_exploitation_match_sets.rb +1 -1
- data/db/migrate/20131008213344_create_automatic_exploitation_runs.rb +1 -1
- data/db/migrate/20131017150735_create_automatic_exploitation_match_results.rb +1 -1
- data/db/migrate/20150219173821_create_module_runs.rb +1 -1
- data/db/migrate/20150317145455_rename_module_indices.rb +29 -0
- data/db/migrate/20150421211719_rename_automatic_exploitation_index.rb +16 -0
- data/lib/mdm/host/operating_system_normalization.rb +1 -1
- data/lib/metasploit_data_models.rb +1 -0
- data/lib/metasploit_data_models/engine.rb +1 -1
- data/lib/metasploit_data_models/version.rb +5 -3
- data/metasploit_data_models.gemspec +11 -8
- data/spec/app/models/mdm/event_spec.rb +17 -11
- data/spec/app/models/mdm/host_spec.rb +2 -2
- data/spec/app/models/mdm/module/action_spec.rb +0 -5
- data/spec/app/models/mdm/module/arch_spec.rb +0 -5
- data/spec/app/models/mdm/module/author_spec.rb +0 -6
- data/spec/app/models/mdm/module/detail_spec.rb +3 -3
- data/spec/app/models/mdm/module/mixin_spec.rb +0 -5
- data/spec/app/models/mdm/module/platform_spec.rb +0 -5
- data/spec/app/models/mdm/module/ref_spec.rb +0 -5
- data/spec/app/models/mdm/module/target_spec.rb +0 -6
- data/spec/app/models/mdm/ref_spec.rb +0 -3
- data/spec/app/models/mdm/service_spec.rb +1 -1
- data/spec/app/models/mdm/web_vuln_spec.rb +3 -3
- data/spec/app/models/mdm/wmap_request_spec.rb +2 -0
- data/spec/app/models/mdm/wmap_target_spec.rb +2 -0
- data/spec/app/models/mdm/workspace_spec.rb +2 -2
- data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +1 -1
- data/spec/dummy/config/application.rb +1 -7
- data/spec/dummy/config/environments/development.rb +2 -13
- data/spec/dummy/config/environments/production.rb +2 -0
- data/spec/dummy/config/environments/test.rb +2 -6
- data/spec/dummy/db/structure.sql +24 -19
- data/spec/dummy/db/structure.sql.from_rails_3 +3403 -0
- data/spec/factories/mdm/module/details.rb +1 -1
- data/spec/lib/ipaddr_spec.rb +31 -0
- data/spec/lib/metasploit_data_models/version_spec.rb +1 -3
- data/spec/support/shared/examples/coerces_inet_column_type_to_string.rb +15 -0
- metadata +63 -28
@@ -40,20 +40,26 @@ describe Mdm::Event do
|
|
40
40
|
|
41
41
|
context 'scopes' do
|
42
42
|
context 'flagged' do
|
43
|
+
let(:workspace) {FactoryGirl.create(:mdm_workspace)}
|
44
|
+
let(:flagged_event) { FactoryGirl.create(:mdm_event, :workspace => workspace, :name => 'flagme', :critical => true, :seen => false) }
|
45
|
+
let(:non_critical_event) { FactoryGirl.create(:mdm_event, :workspace => workspace, :name => 'dontflagmebro', :critical => false, :seen => false) }
|
46
|
+
|
47
|
+
before(:each) do
|
48
|
+
flagged_event
|
49
|
+
non_critical_event
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should included critical unseen events' do
|
53
|
+
Mdm::Event.flagged.should eq [flagged_event]
|
54
|
+
end
|
43
55
|
it 'should exclude non-critical events' do
|
44
|
-
|
45
|
-
non_critical_event = FactoryGirl.create(:mdm_event, :name => 'dontflagmebro', :critical => false, :seen => false)
|
46
|
-
flagged_set = Mdm::Event.flagged
|
47
|
-
flagged_set.should include(flagged_event)
|
48
|
-
flagged_set.should_not include(non_critical_event)
|
56
|
+
Mdm::Event.flagged.should_not include(non_critical_event)
|
49
57
|
end
|
50
58
|
|
51
|
-
it 'should exclude seen events' do
|
52
|
-
flagged_event =
|
53
|
-
|
54
|
-
|
55
|
-
flagged_set.should include(flagged_event)
|
56
|
-
flagged_set.should_not include(non_critical_event)
|
59
|
+
it 'should exclude critical seen events' do
|
60
|
+
flagged_event.seen = true
|
61
|
+
flagged_event.save
|
62
|
+
Mdm::Event.flagged.should_not include(flagged_event)
|
57
63
|
end
|
58
64
|
end
|
59
65
|
|
@@ -319,7 +319,7 @@ describe Mdm::Host do
|
|
319
319
|
|
320
320
|
context 'database' do
|
321
321
|
context 'columns' do
|
322
|
-
it { should have_db_column(:address).of_type(:
|
322
|
+
it { should have_db_column(:address).of_type(:inet).with_options(:null => false) }
|
323
323
|
it { should have_db_column(:arch).of_type(:string) }
|
324
324
|
it { should have_db_column(:comm).of_type(:string) }
|
325
325
|
it { should have_db_column(:comments).of_type(:text) }
|
@@ -416,7 +416,7 @@ describe Mdm::Host do
|
|
416
416
|
end
|
417
417
|
end
|
418
418
|
end
|
419
|
-
it { should
|
419
|
+
it { should validate_inclusion_of(:state).in_array(states).allow_nil }
|
420
420
|
it { should validate_presence_of(:workspace) }
|
421
421
|
end
|
422
422
|
|
@@ -29,11 +29,6 @@ describe Mdm::Module::Action do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
context 'mass assignment security' do
|
33
|
-
it { should_not allow_mass_assignment_of(:detail_id) }
|
34
|
-
it { should allow_mass_assignment_of(:name) }
|
35
|
-
end
|
36
|
-
|
37
32
|
context 'validations' do
|
38
33
|
it { should validate_presence_of(:detail) }
|
39
34
|
it { should validate_presence_of(:name) }
|
@@ -29,11 +29,6 @@ describe Mdm::Module::Arch do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
context 'mass assignment security' do
|
33
|
-
it { should_not allow_mass_assignment_of(:detail_id) }
|
34
|
-
it { should allow_mass_assignment_of(:name) }
|
35
|
-
end
|
36
|
-
|
37
32
|
context 'validations' do
|
38
33
|
it { should validate_presence_of(:detail) }
|
39
34
|
it { should validate_presence_of(:name) }
|
@@ -39,12 +39,6 @@ describe Mdm::Module::Author do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
context 'mass assignment security' do
|
43
|
-
it { should_not allow_mass_assignment_of(:detail_id) }
|
44
|
-
it { should allow_mass_assignment_of(:email) }
|
45
|
-
it { should allow_mass_assignment_of(:name) }
|
46
|
-
end
|
47
|
-
|
48
42
|
context 'validations' do
|
49
43
|
it { should validate_presence_of(:detail) }
|
50
44
|
it { should_not validate_presence_of(:email) }
|
@@ -173,14 +173,14 @@ describe Mdm::Module::Detail do
|
|
173
173
|
end
|
174
174
|
|
175
175
|
context 'validations' do
|
176
|
-
it { should
|
176
|
+
it { should validate_inclusion_of(:mtype).in_array(types) }
|
177
177
|
|
178
178
|
# Because the boolean field will cast most strings to false,
|
179
|
-
#
|
179
|
+
# validate_inclusion_of(:privileged).in_array([true, false]) will fail on the disallowed values check.
|
180
180
|
|
181
181
|
context 'rank' do
|
182
182
|
it { should validate_numericality_of(:rank).only_integer }
|
183
|
-
it { should
|
183
|
+
it { should validate_inclusion_of(:rank).in_array(ranks) }
|
184
184
|
end
|
185
185
|
|
186
186
|
it { should validate_presence_of(:refname) }
|
@@ -29,11 +29,6 @@ describe Mdm::Module::Mixin do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
context 'mass assignment security' do
|
33
|
-
it { should_not allow_mass_assignment_of(:detail_id) }
|
34
|
-
it { should allow_mass_assignment_of(:name) }
|
35
|
-
end
|
36
|
-
|
37
32
|
context 'validations' do
|
38
33
|
it { should validate_presence_of(:detail) }
|
39
34
|
it { should validate_presence_of(:name) }
|
@@ -29,11 +29,6 @@ describe Mdm::Module::Platform do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
context 'mass assignment security' do
|
33
|
-
it { should_not allow_mass_assignment_of(:detail_id) }
|
34
|
-
it { should allow_mass_assignment_of(:name) }
|
35
|
-
end
|
36
|
-
|
37
32
|
context 'validations' do
|
38
33
|
it { should validate_presence_of :detail }
|
39
34
|
it { should validate_presence_of :name }
|
@@ -53,11 +53,6 @@ describe Mdm::Module::Ref do
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
context 'mass assignment security' do
|
57
|
-
it { should_not allow_mass_assignment_of(:detail_id) }
|
58
|
-
it { should allow_mass_assignment_of(:name) }
|
59
|
-
end
|
60
|
-
|
61
56
|
context 'validations' do
|
62
57
|
it { should validate_presence_of(:detail) }
|
63
58
|
it { should validate_presence_of(:name) }
|
@@ -30,12 +30,6 @@ describe Mdm::Module::Target do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
context 'mass assignment security' do
|
34
|
-
it { should_not allow_mass_assignment_of(:detail_id) }
|
35
|
-
it { should allow_mass_assignment_of(:index) }
|
36
|
-
it { should allow_mass_assignment_of(:name) }
|
37
|
-
end
|
38
|
-
|
39
33
|
context 'validations' do
|
40
34
|
it { should validate_presence_of(:detail) }
|
41
35
|
it { should validate_presence_of(:index) }
|
@@ -152,7 +152,7 @@ describe Mdm::Service do
|
|
152
152
|
}
|
153
153
|
|
154
154
|
it { should validate_numericality_of(:port).only_integer }
|
155
|
-
it { should
|
155
|
+
it { should validate_inclusion_of(:proto).in_array(described_class::PROTOS) }
|
156
156
|
|
157
157
|
context 'when a duplicate service already exists' do
|
158
158
|
let(:service1) { FactoryGirl.create(:mdm_service)}
|
@@ -111,8 +111,8 @@ describe Mdm::WebVuln do
|
|
111
111
|
|
112
112
|
context 'validations' do
|
113
113
|
it { should validate_presence_of :category }
|
114
|
-
it { should
|
115
|
-
it { should
|
114
|
+
it { should validate_inclusion_of(:confidence).in_range(confidence_range) }
|
115
|
+
it { should validate_inclusion_of(:method).in_array(methods) }
|
116
116
|
it { should validate_presence_of :name }
|
117
117
|
it { should validate_presence_of :path }
|
118
118
|
|
@@ -281,7 +281,7 @@ describe Mdm::WebVuln do
|
|
281
281
|
end
|
282
282
|
|
283
283
|
it { should validate_presence_of :proof }
|
284
|
-
it { should
|
284
|
+
it { should validate_inclusion_of(:risk).in_range(risk_range) }
|
285
285
|
it { should validate_presence_of :web_site }
|
286
286
|
end
|
287
287
|
|
@@ -61,7 +61,7 @@ describe Mdm::Workspace do
|
|
61
61
|
context '#normalize' do
|
62
62
|
it 'should be called' do
|
63
63
|
workspace.should_receive(:normalize)
|
64
|
-
workspace.run_callbacks(:save
|
64
|
+
workspace.run_callbacks(:save)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -550,7 +550,7 @@ describe Mdm::Workspace do
|
|
550
550
|
web_forms = workspace.web_unique_forms([selected_address])
|
551
551
|
|
552
552
|
web_forms.all? { |web_form|
|
553
|
-
web_form.web_site.service.host.address.should == selected_address
|
553
|
+
web_form.web_site.service.host.address.to_s.should == selected_address
|
554
554
|
}.should be_true
|
555
555
|
end
|
556
556
|
end
|
@@ -36,6 +36,6 @@ describe MetasploitDataModels::Search::Operation::Port::Number do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
context 'validations' do
|
39
|
-
it { should
|
39
|
+
it { should validate_inclusion_of(:value).in_range(described_class::RANGE) }
|
40
40
|
end
|
41
41
|
end
|
@@ -48,14 +48,8 @@ module Dummy
|
|
48
48
|
# like if you have constraints or database-specific column types
|
49
49
|
config.active_record.schema_format = :sql
|
50
50
|
|
51
|
-
# Enforce whitelist mode for mass assignment.
|
52
|
-
# This will create an empty whitelist of attributes available for mass-assignment for all models
|
53
|
-
# in your app. As such, your models will need to explicitly whitelist or blacklist accessible
|
54
|
-
# parameters by using an attr_accessible or attr_protected declaration.
|
55
|
-
config.active_record.whitelist_attributes = true
|
56
|
-
|
57
51
|
# Enable the asset pipeline
|
58
|
-
config.assets.enabled =
|
52
|
+
config.assets.enabled = false
|
59
53
|
|
60
54
|
# Version of your assets, change this if you want to expire all your assets
|
61
55
|
config.assets.version = '1.0'
|
@@ -6,9 +6,6 @@ Dummy::Application.configure do
|
|
6
6
|
# since you don't have to restart the web server when you make code changes.
|
7
7
|
config.cache_classes = false
|
8
8
|
|
9
|
-
# Log error messages when you accidentally call methods on nil.
|
10
|
-
config.whiny_nils = true
|
11
|
-
|
12
9
|
# Show full error reports and disable caching
|
13
10
|
config.consider_all_requests_local = true
|
14
11
|
config.action_controller.perform_caching = false
|
@@ -19,19 +16,11 @@ Dummy::Application.configure do
|
|
19
16
|
# Print deprecation notices to the Rails logger
|
20
17
|
config.active_support.deprecation = :log
|
21
18
|
|
22
|
-
# Only use best-standards-support built into browsers
|
23
|
-
config.action_dispatch.best_standards_support = :builtin
|
24
|
-
|
25
|
-
# Raise exception on mass assignment protection for Active Record models
|
26
|
-
config.active_record.mass_assignment_sanitizer = :strict
|
27
|
-
|
28
|
-
# Log the query plan for queries taking more than this (works
|
29
|
-
# with SQLite, MySQL, and PostgreSQL)
|
30
|
-
config.active_record.auto_explain_threshold_in_seconds = 0.5
|
31
|
-
|
32
19
|
# Do not compress assets
|
33
20
|
config.assets.compress = false
|
34
21
|
|
35
22
|
# Expands the lines which load the assets
|
36
23
|
config.assets.debug = true
|
24
|
+
|
25
|
+
config.eager_load = false
|
37
26
|
end
|
@@ -11,9 +11,6 @@ Dummy::Application.configure do
|
|
11
11
|
config.serve_static_assets = true
|
12
12
|
config.static_cache_control = "public, max-age=3600"
|
13
13
|
|
14
|
-
# Log error messages when you accidentally call methods on nil
|
15
|
-
config.whiny_nils = true
|
16
|
-
|
17
14
|
# Show full error reports and disable caching
|
18
15
|
config.consider_all_requests_local = true
|
19
16
|
config.action_controller.perform_caching = false
|
@@ -29,9 +26,8 @@ Dummy::Application.configure do
|
|
29
26
|
# ActionMailer::Base.deliveries array.
|
30
27
|
config.action_mailer.delivery_method = :test
|
31
28
|
|
32
|
-
# Raise exception on mass assignment protection for Active Record models
|
33
|
-
config.active_record.mass_assignment_sanitizer = :strict
|
34
|
-
|
35
29
|
# Print deprecation notices to the stderr
|
36
30
|
config.active_support.deprecation = :stderr
|
31
|
+
|
32
|
+
config.eager_load = false
|
37
33
|
end
|
data/spec/dummy/db/structure.sql
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
--
|
4
4
|
|
5
5
|
SET statement_timeout = 0;
|
6
|
+
SET lock_timeout = 0;
|
6
7
|
SET client_encoding = 'UTF8';
|
7
8
|
SET standard_conforming_strings = on;
|
8
9
|
SET check_function_bodies = false;
|
@@ -2829,17 +2830,17 @@ CREATE INDEX index_automatic_exploitation_match_sets_on_workspace_id ON automati
|
|
2829
2830
|
|
2830
2831
|
|
2831
2832
|
--
|
2832
|
-
-- Name:
|
2833
|
+
-- Name: index_automatic_exploitation_matches_on_module_detail_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
2833
2834
|
--
|
2834
2835
|
|
2835
|
-
CREATE INDEX
|
2836
|
+
CREATE INDEX index_automatic_exploitation_matches_on_module_detail_id ON automatic_exploitation_matches USING btree (module_detail_id);
|
2836
2837
|
|
2837
2838
|
|
2838
2839
|
--
|
2839
|
-
-- Name:
|
2840
|
+
-- Name: index_automatic_exploitation_matches_on_module_fullname; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
2840
2841
|
--
|
2841
2842
|
|
2842
|
-
CREATE INDEX
|
2843
|
+
CREATE INDEX index_automatic_exploitation_matches_on_module_fullname ON automatic_exploitation_matches USING btree (module_fullname);
|
2843
2844
|
|
2844
2845
|
|
2845
2846
|
--
|
@@ -2913,24 +2914,24 @@ CREATE INDEX index_loots_on_module_run_id ON loots USING btree (module_run_id);
|
|
2913
2914
|
|
2914
2915
|
|
2915
2916
|
--
|
2916
|
-
-- Name:
|
2917
|
+
-- Name: index_module_actions_on_detail_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
2917
2918
|
--
|
2918
2919
|
|
2919
|
-
CREATE INDEX
|
2920
|
+
CREATE INDEX index_module_actions_on_detail_id ON module_actions USING btree (detail_id);
|
2920
2921
|
|
2921
2922
|
|
2922
2923
|
--
|
2923
|
-
-- Name:
|
2924
|
+
-- Name: index_module_archs_on_detail_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
2924
2925
|
--
|
2925
2926
|
|
2926
|
-
CREATE INDEX
|
2927
|
+
CREATE INDEX index_module_archs_on_detail_id ON module_archs USING btree (detail_id);
|
2927
2928
|
|
2928
2929
|
|
2929
2930
|
--
|
2930
|
-
-- Name:
|
2931
|
+
-- Name: index_module_authors_on_detail_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
2931
2932
|
--
|
2932
2933
|
|
2933
|
-
CREATE INDEX
|
2934
|
+
CREATE INDEX index_module_authors_on_detail_id ON module_authors USING btree (detail_id);
|
2934
2935
|
|
2935
2936
|
|
2936
2937
|
--
|
@@ -2962,24 +2963,24 @@ CREATE INDEX index_module_details_on_refname ON module_details USING btree (refn
|
|
2962
2963
|
|
2963
2964
|
|
2964
2965
|
--
|
2965
|
-
-- Name:
|
2966
|
+
-- Name: index_module_mixins_on_detail_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
2966
2967
|
--
|
2967
2968
|
|
2968
|
-
CREATE INDEX
|
2969
|
+
CREATE INDEX index_module_mixins_on_detail_id ON module_mixins USING btree (detail_id);
|
2969
2970
|
|
2970
2971
|
|
2971
2972
|
--
|
2972
|
-
-- Name:
|
2973
|
+
-- Name: index_module_platforms_on_detail_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
2973
2974
|
--
|
2974
2975
|
|
2975
|
-
CREATE INDEX
|
2976
|
+
CREATE INDEX index_module_platforms_on_detail_id ON module_platforms USING btree (detail_id);
|
2976
2977
|
|
2977
2978
|
|
2978
2979
|
--
|
2979
|
-
-- Name:
|
2980
|
+
-- Name: index_module_refs_on_detail_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
2980
2981
|
--
|
2981
2982
|
|
2982
|
-
CREATE INDEX
|
2983
|
+
CREATE INDEX index_module_refs_on_detail_id ON module_refs USING btree (detail_id);
|
2983
2984
|
|
2984
2985
|
|
2985
2986
|
--
|
@@ -3004,10 +3005,10 @@ CREATE INDEX index_module_runs_on_user_id ON module_runs USING btree (user_id);
|
|
3004
3005
|
|
3005
3006
|
|
3006
3007
|
--
|
3007
|
-
-- Name:
|
3008
|
+
-- Name: index_module_targets_on_detail_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
3008
3009
|
--
|
3009
3010
|
|
3010
|
-
CREATE INDEX
|
3011
|
+
CREATE INDEX index_module_targets_on_detail_id ON module_targets USING btree (detail_id);
|
3011
3012
|
|
3012
3013
|
|
3013
3014
|
--
|
@@ -3374,8 +3375,12 @@ INSERT INTO schema_migrations (version) VALUES ('20150226151459');
|
|
3374
3375
|
|
3375
3376
|
INSERT INTO schema_migrations (version) VALUES ('20150312155312');
|
3376
3377
|
|
3378
|
+
INSERT INTO schema_migrations (version) VALUES ('20150317145455');
|
3379
|
+
|
3377
3380
|
INSERT INTO schema_migrations (version) VALUES ('20150326183742');
|
3378
3381
|
|
3382
|
+
INSERT INTO schema_migrations (version) VALUES ('20150421211719');
|
3383
|
+
|
3379
3384
|
INSERT INTO schema_migrations (version) VALUES ('21');
|
3380
3385
|
|
3381
3386
|
INSERT INTO schema_migrations (version) VALUES ('22');
|
@@ -3400,4 +3405,4 @@ INSERT INTO schema_migrations (version) VALUES ('7');
|
|
3400
3405
|
|
3401
3406
|
INSERT INTO schema_migrations (version) VALUES ('8');
|
3402
3407
|
|
3403
|
-
INSERT INTO schema_migrations (version) VALUES ('9');
|
3408
|
+
INSERT INTO schema_migrations (version) VALUES ('9');
|