dradis-projects 3.8.0 → 3.9.0

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c89adcdc78b9d1cb42caf85a3c5bdfac676f7537
4
- data.tar.gz: 802d58668e34660d86f46b550e6544a3f62ed35f
3
+ metadata.gz: 0b132456fc52c60a49be0e8fcb92b42d05874c1d
4
+ data.tar.gz: d240988d1166f96509d3c483a6cc2179dad5d86c
5
5
  SHA512:
6
- metadata.gz: 8dda41635dd76a933bef1b412df282ced535f4f4f4fa31da0080da9337640cc23df02aa38174da8b2b70633faf7d9f67bbacfb50d793bf083a105c716ff68c5a
7
- data.tar.gz: 63049c10e2b62045fa0bf6cd235f6c2ad8987c4c2898a37808e893f534e187a555104c7f4725c7c0a60a6960f1220335e17ae2a203bdbae2a8dac6d89678f2a6
6
+ metadata.gz: 7ac336d9eb5203fd73f23b3ccc2ef60d78c3f401fc4d8401b3e5c4cbd88090893fefea25fced73dcf08dcccd5a57ce43a83ef8e4a7f11cd24c404a4b2be241b4
7
+ data.tar.gz: b6da1f393598f2cac694b55955c17117b4d7cccb2e2a2de1f8bc6a3c786604119fc8f692c2c64c8a7e2d1c7465f41906b848a025b8bff343b12fd415a9a03ce9
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Dradis Framework 3.9 (January, 2018) ##
2
+
3
+ * Fix nodes upload
4
+
5
+ * Add default user id as fallback for activity user when importing
6
+
1
7
  ## Dradis Framework 3.8 (September, 2017) ##
2
8
 
3
9
  * Add version attribute to exported methodologies
@@ -8,7 +14,7 @@
8
14
 
9
15
  * Skip closing the logger in thorfile
10
16
 
11
- ## Dradis Framework 3.6 (March XX, 2017) ##
17
+ ## Dradis Framework 3.6 (March, 2017) ##
12
18
 
13
19
  * Include file version in project template export.
14
20
 
@@ -8,7 +8,7 @@ module Dradis
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 3
11
- MINOR = 8
11
+ MINOR = 9
12
12
  TINY = 0
13
13
  PRE = nil
14
14
 
@@ -58,8 +58,8 @@ module Dradis::Plugins::Projects::Upload::V1
58
58
  def finalize(template)
59
59
  logger.info { 'Wrapping up...' }
60
60
 
61
- finalize_evidence()
62
61
  finalize_nodes()
62
+ finalize_evidence()
63
63
  finalize_attachments()
64
64
 
65
65
  logger.info { 'Done.' }
@@ -67,17 +67,18 @@ module Dradis::Plugins::Projects::Upload::V1
67
67
 
68
68
  def finalize_attachments
69
69
  # Adjust attachment URLs for new Node IDs
70
- pending_changes[:attachment_notes].each do |note|
70
+ pending_changes[:attachment_notes].each do |item|
71
+ text_attr = item.is_a?(ContentBlock) ? :content : :text
71
72
 
72
- logger.info { "Adjusting screenshot URLs: Note ##{note.id}" }
73
+ logger.info { "Adjusting screenshot URLs: #{item.class.name} ##{item.id}" }
73
74
 
74
- new_text = note.text.gsub(%r{^!(.*)/nodes/(\d+)/attachments/(.+)!$}) do |_|
75
+ new_text = item.send(text_attr).gsub(%r{^!(.*)/nodes/(\d+)/attachments/(.+)!$}) do |_|
75
76
  "!%s/nodes/%d/attachments/%s!" % [$1, lookup_table[:nodes][$2], $3]
76
77
  end
77
78
 
78
- note.text = new_text
79
+ item.send(text_attr.to_s + "=", new_text)
79
80
 
80
- raise "Couldn't save note attachment URL for Note ##{note.id}" unless validate_and_save(note)
81
+ raise "Couldn't save note attachment URL for #{item.class.name} ##{item.id}" unless validate_and_save(item)
81
82
  end
82
83
  end
83
84
 
@@ -199,7 +200,7 @@ module Dradis::Plugins::Projects::Upload::V1
199
200
  type_id = element.text.nil? ? nil : element.text.strip
200
201
  label = xml_node.at_xpath('label').text.strip
201
202
  element = xml_node.at_xpath('parent-id')
202
- parent_id = element.text.nil? ? nil : element.text.strip
203
+ parent_id = element.text.blank? ? nil : element.text.strip
203
204
 
204
205
  # Node positions
205
206
  element = xml_node.at_xpath('position')
@@ -218,28 +219,36 @@ module Dradis::Plugins::Projects::Upload::V1
218
219
  # more than one of this nodes, in any given tree:
219
220
  # - the Configuration.uploadsNode node (detected by its label)
220
221
  # - any nodes with type different from DEFAULT or HOST
221
- node =
222
- if label == Configuration.plugin_uploads_node
223
- Node.create_with(type_id: type_id, parent_id: parent_id)
224
- .find_or_create_by!(label: label)
225
- elsif [Node::Types::DEFAULT, Node::Types::HOST].exclude?(type_id.to_i)
226
- Node.create_with(label: label)
227
- .find_or_create_by!(type_id: type_id)
228
- else
229
- Node.create!(
222
+ if label == Configuration.plugin_uploads_node
223
+ node = Node.create_with(type_id: type_id, parent_id: parent_id)
224
+ .find_or_create_by!(label: label)
225
+ elsif Node::Types::USER_TYPES.exclude?(type_id.to_i)
226
+ node = Node.create_with(label: label)
227
+ .find_or_create_by!(type_id: type_id)
228
+ else
229
+ # We don't want to validate child nodes here yet since they always
230
+ # have invalid parent id's. They'll eventually be validated in the
231
+ # finalize_nodes method.
232
+ has_nil_parent = !parent_id
233
+ node =
234
+ Node.new(
230
235
  type_id: type_id,
231
236
  label: label,
232
237
  parent_id: parent_id,
233
238
  position: position
234
239
  )
235
- end
240
+ node.save!(validate: has_nil_parent)
241
+ pending_changes[:orphan_nodes] << node if parent_id
242
+ end
236
243
 
237
- node.raw_properties = properties if properties
244
+ if properties
245
+ node.raw_properties = properties
246
+ node.save!(validate: has_nil_parent)
247
+ end
238
248
 
239
249
  node.update_attribute(:created_at, created_at.text.strip) if created_at
240
250
  node.update_attribute(:updated_at, updated_at.text.strip) if updated_at
241
251
 
242
- raise "Couldn't save Node" unless validate_and_save(node)
243
252
  raise "Couldn't create activities for Node ##{node.id}" unless create_activities(node, xml_node)
244
253
 
245
254
  parse_node_notes(node, xml_node)
@@ -258,11 +267,6 @@ module Dradis::Plugins::Projects::Upload::V1
258
267
 
259
268
  # keep track of reassigned ids
260
269
  lookup_table[:nodes][xml_node.at_xpath('id').text.strip] = node.id
261
-
262
- if node.parent_id != nil
263
- # keep track of orphaned nodes
264
- pending_changes[:orphan_nodes] << node
265
- end
266
270
  end
267
271
 
268
272
  logger.info { 'Done.' }
@@ -365,13 +369,13 @@ module Dradis::Plugins::Projects::Upload::V1
365
369
 
366
370
  # Cache users to cut down on excess SQL requests
367
371
  def user_id_for_email(email)
368
- return -1 if email.blank?
372
+ return @default_user_id if email.blank?
369
373
  @users ||= begin
370
374
  User.select([:id, :email]).all.each_with_object({}) do |user, hash|
371
375
  hash[user.email] = user.id
372
376
  end
373
377
  end
374
- @users[email] || -1
378
+ @users[email] || @default_user_id
375
379
  end
376
380
 
377
381
  def validate_and_save(instance)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dradis-projects
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
4
+ version: 3.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-27 00:00:00.000000000 Z
11
+ date: 2018-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  version: '0'
147
147
  requirements: []
148
148
  rubyforge_project:
149
- rubygems_version: 2.6.8
149
+ rubygems_version: 2.4.5
150
150
  signing_key:
151
151
  specification_version: 4
152
152
  summary: Project export/upload for the Dradis Framework.