dradis-projects 3.0.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 +7 -0
- data/.gitignore +10 -0
- data/.ruby-version +1 -0
- data/CONTRIBUTING.md +3 -0
- data/Gemfile +17 -0
- data/LICENSE +339 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/app/controllers/dradis/plugins/projects/packages_controller.rb +17 -0
- data/app/controllers/dradis/plugins/projects/templates_controller.rb +16 -0
- data/config/routes.rb +4 -0
- data/dradis-projects.gemspec +30 -0
- data/lib/dradis-projects.rb +5 -0
- data/lib/dradis/plugins/projects.rb +15 -0
- data/lib/dradis/plugins/projects/engine.rb +31 -0
- data/lib/dradis/plugins/projects/export/package.rb +37 -0
- data/lib/dradis/plugins/projects/export/template.rb +173 -0
- data/lib/dradis/plugins/projects/gem_version.rb +19 -0
- data/lib/dradis/plugins/projects/upload/package.rb +71 -0
- data/lib/dradis/plugins/projects/upload/template.rb +364 -0
- data/lib/dradis/plugins/projects/version.rb +13 -0
- data/lib/tasks/thorfile.rb +139 -0
- metadata +150 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
class ExportTasks < Thor
|
4
|
+
include Dradis::Plugins::thor_helper_module.to_s.constantize
|
5
|
+
|
6
|
+
namespace "dradis:plugins:projects:export"
|
7
|
+
|
8
|
+
desc "template", "export the current repository structure as a dradis template"
|
9
|
+
method_option :file, type: :string, desc: "the template file to create, or directory to create it in"
|
10
|
+
def template
|
11
|
+
require 'config/environment'
|
12
|
+
|
13
|
+
logger = Logger.new(STDOUT)
|
14
|
+
logger.level = Logger::DEBUG
|
15
|
+
template_path = options.file || Rails.root.join('backup').to_s
|
16
|
+
|
17
|
+
unless template_path =~ /\.xml\z/
|
18
|
+
date = DateTime.now.strftime("%Y-%m-%d")
|
19
|
+
sequence = Dir.glob(File.join(template_path, "dradis-template_#{date}_*.xml")).collect do |a|
|
20
|
+
a.match(/_([0-9]+)\.xml\z/)[1].to_i
|
21
|
+
end.max || 0
|
22
|
+
|
23
|
+
template_path = File.join(template_path, "dradis-template_#{date}_#{sequence + 1}.xml")
|
24
|
+
end
|
25
|
+
|
26
|
+
detect_and_set_project_scope
|
27
|
+
|
28
|
+
exporter = Dradis::Plugins::Projects::Export::Template.new(
|
29
|
+
content_service: content_service_for(Dradis::Plugins::Projects::Export::Template),
|
30
|
+
logger: logger
|
31
|
+
)
|
32
|
+
|
33
|
+
File.open(template_path, 'w') { |f| f.write exporter.export() }
|
34
|
+
|
35
|
+
logger.info { "Template file created at:\n\t#{ File.expand_path( template_path ) }" }
|
36
|
+
logger.close
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
desc "package", "creates a copy of your current repository"
|
41
|
+
long_desc "Creates a copy of the current repository, including all nodes, notes and " +
|
42
|
+
"attachments as a zipped archive. The backup can be imported into another " +
|
43
|
+
"dradis instance using the 'Project Package Upload' option."
|
44
|
+
method_option :file, type: :string, desc: "the package file to create, or directory to create it in"
|
45
|
+
def package
|
46
|
+
require 'config/environment'
|
47
|
+
|
48
|
+
logger = Logger.new(STDOUT)
|
49
|
+
logger.level = Logger::DEBUG
|
50
|
+
package_path = options.file || Rails.root.join('backup')
|
51
|
+
|
52
|
+
unless package_path =~ /\.zip\z/
|
53
|
+
date = DateTime.now.strftime("%Y-%m-%d")
|
54
|
+
sequence = Dir.glob(File.join(package_path, "dradis-export_#{date}_*.zip")).collect { |a| a.match(/_([0-9]+)\.zip\z/)[1].to_i }.max || 0
|
55
|
+
package_path = File.join(package_path, "dradis-export_#{date}_#{sequence + 1}.zip")
|
56
|
+
end
|
57
|
+
|
58
|
+
detect_and_set_project_scope
|
59
|
+
|
60
|
+
Dradis::Plugins::Projects::Export::Package.new(
|
61
|
+
content_service: content_service_for(Dradis::Plugins::Projects::Export::Package),
|
62
|
+
logger: logger
|
63
|
+
).export(filename: package_path)
|
64
|
+
|
65
|
+
logger.info{ "Project package created at:\n\t#{ File.expand_path( package_path ) }" }
|
66
|
+
logger.close
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
class UploadTasks < Thor
|
72
|
+
include Dradis::Plugins::thor_helper_module.to_s.constantize
|
73
|
+
|
74
|
+
namespace "dradis:plugins:projects:upload"
|
75
|
+
|
76
|
+
# This task will load into the current database the contents of the template
|
77
|
+
# file passed as the first argument
|
78
|
+
desc "template FILE", "create a new repository structure from an XML file"
|
79
|
+
def template(file_path)
|
80
|
+
require 'config/environment'
|
81
|
+
|
82
|
+
logger = Logger.new(STDOUT)
|
83
|
+
logger.level = Logger::DEBUG
|
84
|
+
|
85
|
+
unless File.exists?(file_path)
|
86
|
+
$stderr.puts "** the file [#{file_path}] does not exist"
|
87
|
+
exit -1
|
88
|
+
end
|
89
|
+
|
90
|
+
detect_and_set_project_scope
|
91
|
+
|
92
|
+
content_service = content_service_for(Dradis::Plugins::Projects::Upload::Template)
|
93
|
+
template_service = Dradis::Plugins::TemplateService.new(plugin: Dradis::Plugins::Projects::Upload::Template)
|
94
|
+
|
95
|
+
importer = Dradis::Plugins::Projects::Upload::Template::Importer.new(
|
96
|
+
logger: logger,
|
97
|
+
content_service: content_service,
|
98
|
+
template_service: template_service
|
99
|
+
)
|
100
|
+
|
101
|
+
importer.import(file: file_path)
|
102
|
+
|
103
|
+
logger.close
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
# The reverse operation to the dradis:export:project:package task. From a
|
108
|
+
# zipped project package extract the contents of the archive and populate
|
109
|
+
# the dradis DB and attachments with them.
|
110
|
+
desc "package FILE", "import an entire repository package"
|
111
|
+
def package(file_path)
|
112
|
+
require 'config/environment'
|
113
|
+
|
114
|
+
logger = Logger.new(STDOUT)
|
115
|
+
logger.level = Logger::DEBUG
|
116
|
+
|
117
|
+
unless File.exists?(file_path)
|
118
|
+
$stderr.puts "** the file [#{file_path}] does not exist"
|
119
|
+
exit -1
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
detect_and_set_project_scope
|
124
|
+
|
125
|
+
content_service = content_service_for(Dradis::Plugins::Projects::Upload::Package)
|
126
|
+
template_service = Dradis::Plugins::TemplateService.new(plugin: Dradis::Plugins::Projects::Upload::Package)
|
127
|
+
|
128
|
+
importer = Dradis::Plugins::Projects::Upload::Package::Importer.new(
|
129
|
+
logger: logger,
|
130
|
+
content_service: content_service,
|
131
|
+
template_service: template_service
|
132
|
+
)
|
133
|
+
|
134
|
+
importer.import(file: file_path)
|
135
|
+
|
136
|
+
logger.close
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dradis-projects
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daniel Martin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: combustion
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: dradis-plugins
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.5'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.5'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubyzip
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.1.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.1.0
|
97
|
+
description: This plugin allows you to dump the contents of the repo into a zip archive
|
98
|
+
and restore the state from one of them.
|
99
|
+
email:
|
100
|
+
- etd@nomejortu.com
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".ruby-version"
|
107
|
+
- CONTRIBUTING.md
|
108
|
+
- Gemfile
|
109
|
+
- LICENSE
|
110
|
+
- README.md
|
111
|
+
- Rakefile
|
112
|
+
- app/controllers/dradis/plugins/projects/packages_controller.rb
|
113
|
+
- app/controllers/dradis/plugins/projects/templates_controller.rb
|
114
|
+
- config/routes.rb
|
115
|
+
- dradis-projects.gemspec
|
116
|
+
- lib/dradis-projects.rb
|
117
|
+
- lib/dradis/plugins/projects.rb
|
118
|
+
- lib/dradis/plugins/projects/engine.rb
|
119
|
+
- lib/dradis/plugins/projects/export/package.rb
|
120
|
+
- lib/dradis/plugins/projects/export/template.rb
|
121
|
+
- lib/dradis/plugins/projects/gem_version.rb
|
122
|
+
- lib/dradis/plugins/projects/upload/package.rb
|
123
|
+
- lib/dradis/plugins/projects/upload/template.rb
|
124
|
+
- lib/dradis/plugins/projects/version.rb
|
125
|
+
- lib/tasks/thorfile.rb
|
126
|
+
homepage: http://dradisframework.org
|
127
|
+
licenses:
|
128
|
+
- GPL-2
|
129
|
+
metadata: {}
|
130
|
+
post_install_message:
|
131
|
+
rdoc_options: []
|
132
|
+
require_paths:
|
133
|
+
- lib
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
requirements: []
|
145
|
+
rubyforge_project:
|
146
|
+
rubygems_version: 2.4.5
|
147
|
+
signing_key:
|
148
|
+
specification_version: 4
|
149
|
+
summary: Project export/upload for the Dradis Framework.
|
150
|
+
test_files: []
|