metasploit-credential 3.0.3 → 4.0.3
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/app/concerns/mdm/task/metasploit_credential_core.rb +2 -2
- data/app/concerns/mdm/task/metasploit_credential_login.rb +2 -2
- data/app/models/metasploit/credential/core.rb +5 -5
- data/app/models/metasploit/credential/login.rb +2 -2
- data/app/models/metasploit/credential/origin/cracked_password.rb +1 -1
- data/app/models/metasploit/credential/origin/import.rb +1 -1
- data/app/models/metasploit/credential/origin/manual.rb +1 -1
- data/app/models/metasploit/credential/origin/service.rb +1 -1
- data/app/models/metasploit/credential/origin/session.rb +1 -1
- data/app/models/metasploit/credential/private.rb +1 -1
- data/app/models/metasploit/credential/public.rb +1 -1
- data/app/models/metasploit/credential/realm.rb +1 -1
- data/app/models/metasploit/credential/search/operator/type.rb +2 -2
- data/db/migrate/20140331173835_create_metasploit_credential_publics.rb +1 -1
- data/db/migrate/20140407212345_create_metasploit_credential_privates.rb +1 -1
- data/db/migrate/20140410132401_create_metasploit_credential_realms.rb +1 -1
- data/db/migrate/20140410161611_unique_metasploit_credential_realms.rb +1 -1
- data/db/migrate/20140410191213_create_metasploit_credential_origin_manuals.rb +1 -1
- data/db/migrate/20140410205410_create_metasploit_credential_origin_imports.rb +1 -1
- data/db/migrate/20140411142102_create_metasploit_credential_origin_sessions.rb +1 -1
- data/db/migrate/20140411205325_create_metasploit_credential_origin_services.rb +1 -1
- data/db/migrate/20140414192550_create_metasploit_credential_cores.rb +1 -1
- data/db/migrate/20140417140933_create_metasploit_credential_logins.rb +1 -1
- data/db/migrate/20140520140817_add_logins_counter_cache_to_cores.rb +1 -1
- data/db/migrate/20140603163708_add_jtr_format_to_metasploit_credential_privates.rb +1 -1
- data/db/migrate/20140605173747_create_metasploit_credential_origin_cracked_passwords.rb +1 -1
- data/db/migrate/20140702184622_create_credential_cores_tasks_join_table.rb +2 -2
- data/db/migrate/20140703144541_create_credential_logins_tasks_join_table.rb +1 -1
- data/db/migrate/20140722174919_old_creds_to_new_creds.rb +1 -1
- data/db/migrate/20140728191933_unique_metasploit_credential_cores.rb +1 -1
- data/db/migrate/20140801150537_unique_metasploit_credential_cores_with_realm_id.rb +1 -1
- data/db/migrate/20140922170030_add_typeto_public.rb +1 -1
- data/db/migrate/20150106201450_old_creds_to_new_creds2.rb +1 -1
- data/db/migrate/20161107153145_recreate_index_on_private_data_and_type.rb +1 -1
- data/db/migrate/20161107203710_create_index_on_private_data_and_type_for_ssh_key.rb +1 -1
- data/lib/metasploit/credential.rb +1 -1
- data/lib/metasploit/credential/core_validations.rb +6 -6
- data/lib/metasploit/credential/creation.rb +4 -2
- data/lib/metasploit/credential/entity_relationship_diagram.rb +9 -9
- data/lib/metasploit/credential/origin.rb +1 -1
- data/lib/metasploit/credential/version.rb +1 -1
- data/spec/dummy/app/models/application_record.rb +3 -0
- data/spec/dummy/config/application.rb +0 -5
- data/spec/dummy/config/database.yml +2 -2
- data/spec/dummy/config/environments/development.rb +0 -10
- data/spec/lib/metasploit/credential/creation_spec.rb +5 -13
- data/spec/lib/metasploit/credential/exporter/core_spec.rb +2 -2
- data/spec/lib/metasploit/credential/importer/pwdump_spec.rb +1 -1
- metadata +84 -82
- metadata.gz.sig +1 -1
- data/spec/dummy/config/initializers/assets.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 152b3a658e27a34c3c9f0e2cd89a25f7a870e979e1761bbfb5624172431705c7
|
4
|
+
data.tar.gz: 2398721aca08871eb0fa5c95002cc0abf53b45e70ee998f9910f1791a563b41a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fa050d6b55af2b16f10c330b37252e8388abb293e6aea5d46124d554b192ef4d8a642e265c688cae8b40251a604aa6f472bccff6cb5df2b8b1eec9752dd0cc1
|
7
|
+
data.tar.gz: 5c0793af6aa8f1b5b1a3fa72d61912594c63af0e74c23c3a1c1ee203350097007c944da312bda1e076b64680c6cd33475911b4e155183c3f4962aed647ea9a48
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
@@ -12,8 +12,8 @@ module Mdm::Task::MetasploitCredentialCore
|
|
12
12
|
#
|
13
13
|
# @return [ActiveRecord::Relation<Metasploit::Credential::Core>]
|
14
14
|
has_and_belongs_to_many :credential_cores,
|
15
|
-
-> {
|
15
|
+
-> { distinct },
|
16
16
|
class_name: "Metasploit::Credential::Core",
|
17
17
|
join_table: "credential_cores_tasks"
|
18
18
|
end
|
19
|
-
end
|
19
|
+
end
|
@@ -12,8 +12,8 @@ module Mdm::Task::MetasploitCredentialLogin
|
|
12
12
|
#
|
13
13
|
# @return [ActiveRecord::Relation<Metasploit::Credential::Core>]
|
14
14
|
has_and_belongs_to_many :credential_logins,
|
15
|
-
-> {
|
15
|
+
-> { distinct },
|
16
16
|
class_name: "Metasploit::Credential::Login",
|
17
17
|
join_table: "credential_logins_tasks"
|
18
18
|
end
|
19
|
-
end
|
19
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# used.
|
4
4
|
#
|
5
5
|
# A core credential must always have an {#origin}, but only needs 1 of {#private}, {#public}, or {#realm} set.
|
6
|
-
class Metasploit::Credential::Core <
|
6
|
+
class Metasploit::Credential::Core < ApplicationRecord
|
7
7
|
include Metasploit::Model::Search
|
8
8
|
include Metasploit::Credential::CoreValidations
|
9
9
|
|
@@ -16,7 +16,7 @@ class Metasploit::Credential::Core < ActiveRecord::Base
|
|
16
16
|
#
|
17
17
|
# @return [ActiveRecord::Relation<Mdm::Task>]
|
18
18
|
has_and_belongs_to_many :tasks,
|
19
|
-
-> {
|
19
|
+
-> { distinct },
|
20
20
|
class_name: "Mdm::Task",
|
21
21
|
join_table: "credential_cores_tasks"
|
22
22
|
|
@@ -127,7 +127,7 @@ class Metasploit::Credential::Core < ActiveRecord::Base
|
|
127
127
|
#
|
128
128
|
# @method origins(origin_class)
|
129
129
|
# @scope Metasploit::Credential::Core
|
130
|
-
# @param origin_class [
|
130
|
+
# @param origin_class [ApplicationRecord] the Origin class to look up
|
131
131
|
# @param table_alias [String] an alias for the JOINed table, defaults to the table name
|
132
132
|
# @return [ActiveRecord::Relation] scoped to that origin
|
133
133
|
scope :origins, lambda { |origin_class, table_alias=nil|
|
@@ -276,8 +276,8 @@ class Metasploit::Credential::Core < ActiveRecord::Base
|
|
276
276
|
# @param host_id [Integer]
|
277
277
|
# @return [String]
|
278
278
|
def self.cores_from_host(host_id)
|
279
|
-
left = origin_service_host_id(host_id).ast
|
280
|
-
right = origin_session_host_id(host_id).ast
|
279
|
+
left = origin_service_host_id(host_id).arel.ast
|
280
|
+
right = origin_session_host_id(host_id).arel.ast
|
281
281
|
|
282
282
|
Arel::Nodes::UnionAll.new(
|
283
283
|
left,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# The use of a {#core core credential} against a {#service service}.
|
2
|
-
class Metasploit::Credential::Login <
|
2
|
+
class Metasploit::Credential::Login < ApplicationRecord
|
3
3
|
extend ActiveSupport::Autoload
|
4
4
|
|
5
5
|
include Metasploit::Model::Search
|
@@ -13,7 +13,7 @@ class Metasploit::Credential::Login < ActiveRecord::Base
|
|
13
13
|
#
|
14
14
|
# @return [ActiveRecord::Relation<Mdm::Task>]
|
15
15
|
has_and_belongs_to_many :tasks,
|
16
|
-
-> {
|
16
|
+
-> { distinct },
|
17
17
|
class_name: "Mdm::Task",
|
18
18
|
join_table: "credential_logins_tasks"
|
19
19
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# An origin for {#cores core credentials} that were cracked from a {#originating_core core credentials}
|
2
|
-
class Metasploit::Credential::Origin::CrackedPassword <
|
2
|
+
class Metasploit::Credential::Origin::CrackedPassword < ApplicationRecord
|
3
3
|
|
4
4
|
#
|
5
5
|
# Associations
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# for `Metasploit::Credential::Core`s derived after a {Metasploit::Credential::Origin::Session#session session} is
|
4
4
|
# gained and a {Metasploit::Credential::Origin::Session#post_reference_name post module} is run from the session to
|
5
5
|
# gather credentials.
|
6
|
-
class Metasploit::Credential::Origin::Service <
|
6
|
+
class Metasploit::Credential::Origin::Service < ApplicationRecord
|
7
7
|
#
|
8
8
|
# CONSTANTS
|
9
9
|
#
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# {Metasploit::Credential::Origin::Service#module_full_name auxiliary or exploit modules} that gather credentials
|
4
4
|
# directly from a {Metasploit::Credential::Origin::Service#service service} without the need for a separate post module
|
5
5
|
# or even a session.
|
6
|
-
class Metasploit::Credential::Origin::Session <
|
6
|
+
class Metasploit::Credential::Origin::Session < ApplicationRecord
|
7
7
|
#
|
8
8
|
# Associations
|
9
9
|
#
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# disclosed, such as a {Metasploit::Credential::Password password}, password hash, or key file.
|
3
3
|
#
|
4
4
|
# Uses Single Table Inheritance to store subclass name in {#type} per Rails convention.
|
5
|
-
class Metasploit::Credential::Private <
|
5
|
+
class Metasploit::Credential::Private < ApplicationRecord
|
6
6
|
include Metasploit::Model::Search
|
7
7
|
|
8
8
|
#
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# The realm in which a {Metasploit::Credential::Public} can be used to authenticate or from which a
|
2
2
|
# {Metasploit::Credential::Private} was looted.
|
3
|
-
class Metasploit::Credential::Realm <
|
3
|
+
class Metasploit::Credential::Realm < ApplicationRecord
|
4
4
|
extend ActiveSupport::Autoload
|
5
5
|
|
6
6
|
include Metasploit::Model::Search
|
@@ -24,7 +24,7 @@ class Metasploit::Credential::Search::Operator::Type < Metasploit::Model::Search
|
|
24
24
|
# Instance Methods
|
25
25
|
#
|
26
26
|
|
27
|
-
# Defaults to `:type` as all STI tables in `
|
27
|
+
# Defaults to `:type` as all STI tables in `ApplicationRecord` use `type` as teh type attribute by default. Override
|
28
28
|
# to search foreign key types, which are prefixed with the association name.
|
29
29
|
#
|
30
30
|
# @return [Symbol]
|
@@ -70,4 +70,4 @@ class Metasploit::Credential::Search::Operator::Type < Metasploit::Model::Search
|
|
70
70
|
def type
|
71
71
|
:string
|
72
72
|
end
|
73
|
-
end
|
73
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
class CreateCredentialCoresTasksJoinTable < ActiveRecord::Migration
|
1
|
+
class CreateCredentialCoresTasksJoinTable < ActiveRecord::Migration[4.2]
|
2
2
|
def change
|
3
3
|
create_table :credential_cores_tasks, :force => true, :id => false do |t|
|
4
4
|
t.integer :core_id
|
5
5
|
t.integer :task_id
|
6
6
|
end
|
7
7
|
end
|
8
|
-
end
|
8
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Implements a one-time migration of `Mdm::Cred` objects to
|
2
2
|
# appropriate objects from {Metasploit::Credential}
|
3
|
-
class OldCredsToNewCreds < ActiveRecord::Migration
|
3
|
+
class OldCredsToNewCreds < ActiveRecord::Migration[4.2]
|
4
4
|
def up
|
5
5
|
Metasploit::Credential::Migrator.new.migrate!
|
6
6
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class UniqueMetasploitCredentialCores < ActiveRecord::Migration
|
1
|
+
class UniqueMetasploitCredentialCores < ActiveRecord::Migration[4.2]
|
2
2
|
def down
|
3
3
|
execute 'DROP INDEX unique_complete_metasploit_credential_cores'
|
4
4
|
execute 'DROP INDEX unique_private_metasploit_credential_cores'
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# appropriate objects from {Metasploit::Credential}
|
3
3
|
# This second run is due to the refactor of #report_auth_info
|
4
4
|
# that means we should no longer be creating old creds anywhere.
|
5
|
-
class OldCredsToNewCreds2 < ActiveRecord::Migration
|
5
|
+
class OldCredsToNewCreds2 < ActiveRecord::Migration[4.2]
|
6
6
|
def up
|
7
7
|
Metasploit::Credential::Migrator.new.migrate!
|
8
8
|
end
|
@@ -52,7 +52,7 @@ module Metasploit
|
|
52
52
|
autoload :Text
|
53
53
|
autoload :Username
|
54
54
|
|
55
|
-
# The prefix for all `
|
55
|
+
# The prefix for all `ApplicationRecord#table_name`s for `ApplicationRecord` subclasses under this namespace.
|
56
56
|
#
|
57
57
|
# @return [String] `'metasploit_credential_'`
|
58
58
|
def self.table_name_prefix
|
@@ -25,7 +25,7 @@ module Metasploit::Credential::CoreValidations
|
|
25
25
|
:public_id
|
26
26
|
]
|
27
27
|
},
|
28
|
-
if:
|
28
|
+
if: -> { !realm.present? && !public.present? && private.present? }
|
29
29
|
# replicates 'unique_public_metasploit_credential_cores' index
|
30
30
|
validates :public_id,
|
31
31
|
uniqueness: {
|
@@ -37,7 +37,7 @@ module Metasploit::Credential::CoreValidations
|
|
37
37
|
:private_id
|
38
38
|
]
|
39
39
|
},
|
40
|
-
if:
|
40
|
+
if: -> { !realm.present? && public.present? && !private.present? }
|
41
41
|
# replicates 'unique_realmless_metasploit_credential_cores' index
|
42
42
|
validates :private_id,
|
43
43
|
uniqueness: {
|
@@ -49,7 +49,7 @@ module Metasploit::Credential::CoreValidations
|
|
49
49
|
:public_id
|
50
50
|
]
|
51
51
|
},
|
52
|
-
if:
|
52
|
+
if: -> { !realm.present? && public.present? && private.present? }
|
53
53
|
# replicates 'unique_publicless_metasploit_credential_cores' index
|
54
54
|
validates :private_id,
|
55
55
|
uniqueness: {
|
@@ -61,7 +61,7 @@ module Metasploit::Credential::CoreValidations
|
|
61
61
|
:public_id
|
62
62
|
]
|
63
63
|
},
|
64
|
-
if:
|
64
|
+
if: -> { realm.present? && !public.present? && private.present? }
|
65
65
|
# replicates 'unique_privateless_metasploit_credential_cores' index
|
66
66
|
validates :public_id,
|
67
67
|
uniqueness: {
|
@@ -73,7 +73,7 @@ module Metasploit::Credential::CoreValidations
|
|
73
73
|
:private_id
|
74
74
|
]
|
75
75
|
},
|
76
|
-
if:
|
76
|
+
if: -> { realm.present? && public.present? && !private.present? }
|
77
77
|
# replicates 'unique_complete_metasploit_credential_cores' index
|
78
78
|
validates :private_id,
|
79
79
|
uniqueness: {
|
@@ -84,7 +84,7 @@ module Metasploit::Credential::CoreValidations
|
|
84
84
|
:public_id
|
85
85
|
]
|
86
86
|
},
|
87
|
-
if:
|
87
|
+
if: -> { realm.present? && public.present? && private.present? }
|
88
88
|
validates :workspace,
|
89
89
|
presence: true
|
90
90
|
|
@@ -8,7 +8,7 @@ module Metasploit::Credential::Creation
|
|
8
8
|
# Returns true if ActiveRecord has an active database connection, false otherwise.
|
9
9
|
# @return [Boolean]
|
10
10
|
def active_db?
|
11
|
-
|
11
|
+
ApplicationRecord.connected?
|
12
12
|
end
|
13
13
|
|
14
14
|
# This method takes a few simple parameters and creates a new username/password
|
@@ -276,6 +276,7 @@ module Metasploit::Credential::Creation
|
|
276
276
|
# @option opts [DateTime] :last_attempted_at The last time this Login was attempted
|
277
277
|
# @option opts [Metasploit::Credential::Core] :core The {Metasploit::Credential::Core} to link this login to
|
278
278
|
# @option opts [Fixnum] :port The port number of the `Mdm::Service` to link this Login to
|
279
|
+
# @option opts [String] :service_id The ID of an `Mdm::Service` to link this login to
|
279
280
|
# @option opts [String] :service_name The service name to use for the `Mdm::Service`
|
280
281
|
# @option opts [String] :status The status for the Login object
|
281
282
|
# @option opts [String] :protocol The protocol type of the `Mdm::Service` to link this Login to
|
@@ -298,7 +299,8 @@ module Metasploit::Credential::Creation
|
|
298
299
|
|
299
300
|
login_object = nil
|
300
301
|
retry_transaction do
|
301
|
-
service_object =
|
302
|
+
service_object = Mdm::Service.where(id: opts[:service_id]).first if opts[:service_id]
|
303
|
+
service_object = create_credential_service(opts) if service_object.nil?
|
302
304
|
return nil if service_object.nil?
|
303
305
|
login_object = Metasploit::Credential::Login.where(core_id: core.id, service_id: service_object.id).first_or_initialize
|
304
306
|
|
@@ -36,16 +36,16 @@ module Metasploit::Credential::EntityRelationshipDiagram
|
|
36
36
|
# Class Methods
|
37
37
|
#
|
38
38
|
|
39
|
-
# All {cluster clusters} of classes that are reachable through belongs_to from each
|
39
|
+
# All {cluster clusters} of classes that are reachable through belongs_to from each ApplicationRecord descendant
|
40
40
|
#
|
41
|
-
# @return [Hash{Class<
|
41
|
+
# @return [Hash{Class<ApplicationRecord> => Set<Class<ApplicationRecord>>}] Maps entry point to cluster to its
|
42
42
|
# cluster.
|
43
43
|
def self.cluster_by_class
|
44
44
|
cluster_by_class = {}
|
45
45
|
|
46
46
|
Metasploit::Credential::Engine.instance.eager_load!
|
47
47
|
|
48
|
-
|
48
|
+
ApplicationRecord.descendants.each do |klass|
|
49
49
|
klass_cluster = cluster(klass)
|
50
50
|
cluster_by_class[klass] = klass_cluster
|
51
51
|
end
|
@@ -55,9 +55,9 @@ module Metasploit::Credential::EntityRelationshipDiagram
|
|
55
55
|
|
56
56
|
# Cluster of classes that are reachable through belongs_to from `classes`.
|
57
57
|
#
|
58
|
-
# @param classes [Array<Class<
|
58
|
+
# @param classes [Array<Class<ApplicationRecord>>] classes that must be in cluster. All other classes in the
|
59
59
|
# returned cluster will be classes to which `classes` belong directly or indirectly.
|
60
|
-
# @return [Set<Class<
|
60
|
+
# @return [Set<Class<ApplicationRecord>>]
|
61
61
|
def self.cluster(*classes)
|
62
62
|
class_queue = classes.dup
|
63
63
|
visited_class_set = Set.new
|
@@ -122,7 +122,7 @@ module Metasploit::Credential::EntityRelationshipDiagram
|
|
122
122
|
|
123
123
|
# Set of largest clusters from {cluster_by_class}.
|
124
124
|
#
|
125
|
-
# @return [Array<Set<Class<
|
125
|
+
# @return [Array<Set<Class<ApplicationRecord>>>]
|
126
126
|
def self.maximal_clusters
|
127
127
|
clusters = cluster_by_class.values
|
128
128
|
unique_clusters = clusters.uniq
|
@@ -152,11 +152,11 @@ module Metasploit::Credential::EntityRelationshipDiagram
|
|
152
152
|
|
153
153
|
# Calculates the target classes for a polymorphic `belongs_to`.
|
154
154
|
#
|
155
|
-
# @return [Array<
|
155
|
+
# @return [Array<ApplicationRecord>]
|
156
156
|
def self.polymorphic_classes(belongs_to_reflection)
|
157
157
|
name = belongs_to_reflection.name
|
158
158
|
|
159
|
-
|
159
|
+
ApplicationRecord.descendants.each_with_object([]) { |descendant, target_classes|
|
160
160
|
has_many_reflections = descendant.reflect_on_all_associations(:has_many)
|
161
161
|
|
162
162
|
has_many_reflections.each do |has_many_reflection|
|
@@ -168,4 +168,4 @@ module Metasploit::Credential::EntityRelationshipDiagram
|
|
168
168
|
end
|
169
169
|
}
|
170
170
|
end
|
171
|
-
end
|
171
|
+
end
|
@@ -8,7 +8,7 @@ module Metasploit::Credential::Origin
|
|
8
8
|
autoload :Service
|
9
9
|
autoload :Session
|
10
10
|
|
11
|
-
# The prefix for table name of `
|
11
|
+
# The prefix for table name of `ApplicationRecord` subclasses in the namespace.
|
12
12
|
#
|
13
13
|
# @return [String] `'metasploit_credential_origin_'`
|
14
14
|
def self.table_name_prefix
|
@@ -55,11 +55,6 @@ module Dummy
|
|
55
55
|
# like if you have constraints or database-specific column types
|
56
56
|
config.active_record.schema_format = :sql
|
57
57
|
|
58
|
-
# Enable the asset pipeline
|
59
|
-
config.assets.enabled = false
|
60
|
-
|
61
|
-
# Version of your assets, change this if you want to expire all your assets
|
62
|
-
config.assets.version = '1.0'
|
63
58
|
end
|
64
59
|
end
|
65
60
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
development: &pgsql
|
2
2
|
adapter: postgresql
|
3
|
-
database: metasploit-
|
3
|
+
database: metasploit-credential_development3
|
4
4
|
username: msf
|
5
5
|
password: pass123
|
6
6
|
host: localhost
|
@@ -10,4 +10,4 @@ development: &pgsql
|
|
10
10
|
min_messages: warning
|
11
11
|
test:
|
12
12
|
<<: *pgsql
|
13
|
-
database: metasploit-
|
13
|
+
database: metasploit-credential_test3
|
@@ -19,16 +19,6 @@ Rails.application.configure do
|
|
19
19
|
# Raise an error on page load if there are pending migrations.
|
20
20
|
config.active_record.migration_error = :page_load
|
21
21
|
|
22
|
-
# Debug mode disables concatenation and preprocessing of assets.
|
23
|
-
# This option may cause significant delays in view rendering with a large
|
24
|
-
# number of complex assets.
|
25
|
-
config.assets.debug = true
|
26
|
-
|
27
|
-
# Adds additional error checking when serving assets at runtime.
|
28
|
-
# Checks for improperly declared sprockets dependencies.
|
29
|
-
# Raises helpful error messages.
|
30
|
-
config.assets.raise_runtime_errors = true
|
31
|
-
|
32
22
|
# Raises error for missing translations
|
33
23
|
# config.action_view.raise_on_missing_translations = true
|
34
24
|
end
|
@@ -55,8 +55,7 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
55
55
|
origin_type: origin_type,
|
56
56
|
username: 'admin',
|
57
57
|
private_data: 'password',
|
58
|
-
private_type: :password
|
59
|
-
workspace_id: workspace.id
|
58
|
+
private_type: :password
|
60
59
|
}.merge(origin_data[origin_type])}
|
61
60
|
it 'creates a credential core' do
|
62
61
|
expect{ test_object.create_credential(credential_data) }.to change{ Metasploit::Credential::Core.count }.by(1)
|
@@ -89,8 +88,7 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
89
88
|
origin_type: :manual,
|
90
89
|
username: 'admin',
|
91
90
|
private_data: 'password',
|
92
|
-
private_type: :password
|
93
|
-
workspace_id: workspace.id
|
91
|
+
private_type: :password
|
94
92
|
}}
|
95
93
|
it 'creates a credential core' do
|
96
94
|
expect{ test_object.create_credential(credential_data) }.to change{ Metasploit::Credential::Core.count }.by(1)
|
@@ -117,8 +115,7 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
117
115
|
origin_type: :manual,
|
118
116
|
username: public_value,
|
119
117
|
private_data: 'password',
|
120
|
-
private_type: :password
|
121
|
-
workspace_id: workspace.id
|
118
|
+
private_type: :password
|
122
119
|
}}
|
123
120
|
it 'creates a credential core' do
|
124
121
|
expect{ test_object.create_credential(credential_data) }.to change{ Metasploit::Credential::Core.count }.by(1)
|
@@ -158,8 +155,7 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
158
155
|
origin_type: :manual,
|
159
156
|
username: 'admin',
|
160
157
|
private_data: private_data[private_type],
|
161
|
-
private_type: private_type
|
162
|
-
workspace_id: workspace.id
|
158
|
+
private_type: private_type
|
163
159
|
}}
|
164
160
|
it 'creates a credential core' do
|
165
161
|
expect{ test_object.create_credential(credential_data) }.to change{ Metasploit::Credential::Core.count }.by(1)
|
@@ -213,7 +209,6 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
213
209
|
username: 'admin',
|
214
210
|
private_data: 'password',
|
215
211
|
private_type: :password,
|
216
|
-
workspace_id: workspace.id,
|
217
212
|
address: service.host.address,
|
218
213
|
port: service.port,
|
219
214
|
service_name: service.name,
|
@@ -256,7 +251,6 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
256
251
|
username: 'admin',
|
257
252
|
private_data: 'password',
|
258
253
|
private_type: :password,
|
259
|
-
workspace_id: workspace.id,
|
260
254
|
address: service.host.address,
|
261
255
|
port: service.port,
|
262
256
|
service_name: service.name,
|
@@ -294,7 +288,6 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
294
288
|
username: public_value,
|
295
289
|
private_data: 'password',
|
296
290
|
private_type: :password,
|
297
|
-
workspace_id: workspace.id,
|
298
291
|
address: service.host.address,
|
299
292
|
port: service.port,
|
300
293
|
service_name: service.name,
|
@@ -344,7 +337,6 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
344
337
|
username: 'admin',
|
345
338
|
private_data: private_data[private_type],
|
346
339
|
private_type: private_type,
|
347
|
-
workspace_id: workspace.id,
|
348
340
|
address: service.host.address,
|
349
341
|
port: service.port,
|
350
342
|
service_name: service.name,
|
@@ -382,7 +374,7 @@ RSpec.describe Metasploit::Credential::Creation do
|
|
382
374
|
it 'creates a Core' do
|
383
375
|
expect {
|
384
376
|
test_object.create_cracked_credential(
|
385
|
-
core_id: old_core,
|
377
|
+
core_id: old_core.id,
|
386
378
|
username: public.username,
|
387
379
|
password: password
|
388
380
|
)
|
@@ -29,7 +29,7 @@ RSpec.describe Metasploit::Credential::Exporter::Core do
|
|
29
29
|
describe "#export!" do
|
30
30
|
it 'should create the zipfile' do
|
31
31
|
core_exporter.export!
|
32
|
-
expect(File.
|
32
|
+
expect(File.exist?(core_exporter.output_zipfile_path)).to eq(true)
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'should output to a directory whose name contains the standardized identifier' do
|
@@ -452,4 +452,4 @@ RSpec.describe Metasploit::Credential::Exporter::Core do
|
|
452
452
|
end
|
453
453
|
end
|
454
454
|
end
|
455
|
-
end
|
455
|
+
end
|
metadata
CHANGED
@@ -1,95 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metasploit-credential
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
- Trevor Rosen
|
7
|
+
- Metasploit Hackers
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain:
|
12
11
|
- |
|
13
12
|
-----BEGIN CERTIFICATE-----
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
13
|
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
|
14
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
15
|
+
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
|
16
|
+
b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
|
17
|
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
|
18
|
+
cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
|
19
|
+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
|
20
|
+
JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
|
21
|
+
mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
|
22
|
+
wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
|
23
|
+
VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
|
24
|
+
AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
|
25
|
+
AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
|
26
|
+
BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
|
27
|
+
pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
|
28
|
+
dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
|
29
|
+
fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
|
30
|
+
NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
|
31
|
+
H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
32
|
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
33
33
|
-----END CERTIFICATE-----
|
34
34
|
- |
|
35
35
|
-----BEGIN CERTIFICATE-----
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
36
|
+
MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl
|
37
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
38
|
+
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
|
39
|
+
b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG
|
40
|
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
|
41
|
+
cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT
|
42
|
+
aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O
|
43
|
+
Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq
|
44
|
+
8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp
|
45
|
+
wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p
|
46
|
+
fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3
|
47
|
+
jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye
|
48
|
+
n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
|
49
|
+
HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr
|
50
|
+
MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
|
51
|
+
MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
|
52
|
+
RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
|
53
|
+
ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
|
54
|
+
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
|
55
|
+
TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
|
56
|
+
d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq
|
57
|
+
CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP
|
58
|
+
MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX
|
59
|
+
fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf
|
60
|
+
RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al
|
61
|
+
EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+
|
62
|
+
L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8
|
63
|
+
B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
|
61
64
|
-----END CERTIFICATE-----
|
62
65
|
- |
|
63
66
|
-----BEGIN CERTIFICATE-----
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
67
|
+
MIIFIzCCBAugAwIBAgIQCMePMbkSxvnPeJhYXIfaxzANBgkqhkiG9w0BAQsFADBy
|
68
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
69
|
+
d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg
|
70
|
+
SUQgQ29kZSBTaWduaW5nIENBMB4XDTIwMTAwNzAwMDAwMFoXDTIzMTEwNjEyMDAw
|
71
|
+
MFowYDELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNV
|
72
|
+
BAcTBkJvc3RvbjETMBEGA1UEChMKUmFwaWQ3IExMQzETMBEGA1UEAxMKUmFwaWQ3
|
73
|
+
IExMQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNTz4zvAy7h/vQp
|
74
|
+
4dr1txXHlABAagkwYYwTMCtHs5PXsJITx/5SAjx5swuaLfze5kPBNF2YImvFlOXY
|
75
|
+
WaB+0PsOnXnaARsDZU683xFlj8izU6IN6VrAHzDLKFBzruJENrOJD/ikbEtbjO/q
|
76
|
+
gFbmS9J9v5ohG/pcRSS0t4ZPAwymf8eCp6QsvOKK/Aymp1RhlRaP8N6N5CIpkhz1
|
77
|
+
9p968iCE+DjOXVYxcWE+jE/7uB1dbgrXykNBujMSS3GULOvVEY28n6NCmrPlo23g
|
78
|
+
yRjYVJ2Vy14nBqnxDZ/yRIfWRVjWoT9TsAEbe9gY29oDpSCSs4wSmLQd5zGCpZ9h
|
79
|
+
r0HDFB8CAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZl
|
80
|
+
dQ5YMB0GA1UdDgQWBBTLBL7DTwumVEKtdCdpHVYMXOFeDzAOBgNVHQ8BAf8EBAMC
|
81
|
+
B4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDov
|
82
|
+
L2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGG
|
83
|
+
L2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3Js
|
84
|
+
MEwGA1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
|
85
|
+
d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYw
|
86
|
+
JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcw
|
87
|
+
AoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3Vy
|
88
|
+
ZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL
|
89
|
+
BQADggEBAN+GL5/myPWg7oH4mVrG7/OhXF1MoYQF0ddaNiqaweEHMuKJBQCVZRbL
|
90
|
+
37HojoKXXv2yyRJBCeTB+ojrxX+5PdLVZa0ss7toWzJ2A1poPXZ1eZvm5xeFD32z
|
91
|
+
YQaTmmNWNI3PCDTyJ2PXUc+bDiNNwcZ7yc5o78UNRvp9Jxghya17Q76c9Ov9wvnv
|
92
|
+
dxxQKWGOQy0m4fBrkyjAyH9Djjn81RbQrqYgPuhd5nD0HjN3VUQLhQbIJrk9TVs0
|
93
|
+
EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
|
94
|
+
9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
|
91
95
|
-----END CERTIFICATE-----
|
92
|
-
date:
|
96
|
+
date: 2020-11-25 00:00:00.000000000 Z
|
93
97
|
dependencies:
|
94
98
|
- !ruby/object:Gem::Dependency
|
95
99
|
name: metasploit-concern
|
@@ -219,8 +223,7 @@ dependencies:
|
|
219
223
|
version: '0'
|
220
224
|
description: The Metasploit::Credential namespace and its ActiveRecord::Base subclasses
|
221
225
|
email:
|
222
|
-
-
|
223
|
-
- trevor_rosen@rapid7.com
|
226
|
+
- msfdev@metasploit.com
|
224
227
|
executables: []
|
225
228
|
extensions: []
|
226
229
|
extra_rdoc_files: []
|
@@ -315,6 +318,7 @@ files:
|
|
315
318
|
- spec/dummy/app/assets/stylesheets/application.css
|
316
319
|
- spec/dummy/app/controllers/application_controller.rb
|
317
320
|
- spec/dummy/app/helpers/application_helper.rb
|
321
|
+
- spec/dummy/app/models/application_record.rb
|
318
322
|
- spec/dummy/app/views/layouts/application.html.erb
|
319
323
|
- spec/dummy/bin/bundle
|
320
324
|
- spec/dummy/bin/rails
|
@@ -329,7 +333,6 @@ files:
|
|
329
333
|
- spec/dummy/config/environments/development.rb
|
330
334
|
- spec/dummy/config/environments/production.rb
|
331
335
|
- spec/dummy/config/environments/test.rb
|
332
|
-
- spec/dummy/config/initializers/assets.rb
|
333
336
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
334
337
|
- spec/dummy/config/initializers/cookies_serializer.rb
|
335
338
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
@@ -424,7 +427,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
424
427
|
requirements:
|
425
428
|
- - ">="
|
426
429
|
- !ruby/object:Gem::Version
|
427
|
-
version: 2.
|
430
|
+
version: 2.4.0
|
428
431
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
429
432
|
requirements:
|
430
433
|
- - ">="
|
@@ -432,7 +435,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
432
435
|
version: '0'
|
433
436
|
requirements: []
|
434
437
|
rubyforge_project:
|
435
|
-
rubygems_version: 2.
|
438
|
+
rubygems_version: 2.7.10
|
436
439
|
signing_key:
|
437
440
|
specification_version: 4
|
438
441
|
summary: Credential models for metasploit-framework and Metasploit Pro
|
@@ -443,6 +446,7 @@ test_files:
|
|
443
446
|
- spec/dummy/app/assets/stylesheets/application.css
|
444
447
|
- spec/dummy/app/controllers/application_controller.rb
|
445
448
|
- spec/dummy/app/helpers/application_helper.rb
|
449
|
+
- spec/dummy/app/models/application_record.rb
|
446
450
|
- spec/dummy/app/views/layouts/application.html.erb
|
447
451
|
- spec/dummy/bin/bundle
|
448
452
|
- spec/dummy/bin/rails
|
@@ -457,7 +461,6 @@ test_files:
|
|
457
461
|
- spec/dummy/config/environments/development.rb
|
458
462
|
- spec/dummy/config/environments/production.rb
|
459
463
|
- spec/dummy/config/environments/test.rb
|
460
|
-
- spec/dummy/config/initializers/assets.rb
|
461
464
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
462
465
|
- spec/dummy/config/initializers/cookies_serializer.rb
|
463
466
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
@@ -538,4 +541,3 @@ test_files:
|
|
538
541
|
- spec/support/shared/examples/core_validations.rb
|
539
542
|
- spec/support/shared/examples/single_table_inheritance_database_columns.rb
|
540
543
|
- spec/support/shared/examples/timestamp_database_column.rb
|
541
|
-
has_rdoc:
|
metadata.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
������y�ȪU��,��s��0�A}��:�58D�ϟ���Oq��y#����6Բfݿ�sj�G��R�#����.��G����r�f�]��xKޱ-l+z
|
@@ -1,8 +0,0 @@
|
|
1
|
-
# Be sure to restart your server when you modify this file.
|
2
|
-
|
3
|
-
# Version of your assets, change this if you want to expire all your assets.
|
4
|
-
Rails.application.config.assets.version = '1.0'
|
5
|
-
|
6
|
-
# Precompile additional assets.
|
7
|
-
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
8
|
-
# Rails.application.config.assets.precompile += %w( search.js )
|