norad_cli 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/lib/norad_cli/cli/sectest.rb +45 -27
- data/lib/norad_cli/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6845add9cfabc34338bc67744b6d3b4509f3a0bd
|
4
|
+
data.tar.gz: 870a0347fd4929e075c877eaec20034d3471317e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31bfb046789af2d16a86f912db431b5b10e4e9ec1b7fead6fd6be4db6841c04748d3c9cc5e7ee68d9ece1d606167cfaa9127864c5b44b6d59811450f9ffe4a30
|
7
|
+
data.tar.gz: 05d22bb8f7ff35bf7abd624003c2d023f9778370d791a6558b92296c48458a20a318a0a3d05609be97cb4a74d7dcde205c5a43b44c78d7c13ef499c1f066885c
|
data/.rubocop.yml
CHANGED
@@ -22,7 +22,9 @@ class Sectest < Thor
|
|
22
22
|
# Grab the current directory
|
23
23
|
repo_dir = Dir.pwd
|
24
24
|
|
25
|
-
|
25
|
+
# Check for the root_dir
|
26
|
+
root_dir?
|
27
|
+
|
26
28
|
# Set options for templates
|
27
29
|
options[:name] = sectest_name
|
28
30
|
options[:spec_class_name] = sectest_name.split('-').map { |t| t =~ /\d+/ ? t : t.capitalize! }.join
|
@@ -52,6 +54,9 @@ class Sectest < Thor
|
|
52
54
|
option :registry, aliases: '-r', default: 'norad-registry.cisco.com:5000', desc: 'The Docker registry for Docker images'
|
53
55
|
option :version, aliases: '-v', default: 'latest', desc: 'The version of the sectest container to build'
|
54
56
|
def build
|
57
|
+
# Check for the root_dir
|
58
|
+
root_dir?
|
59
|
+
|
55
60
|
# Error check to ensure this is a plugin directory
|
56
61
|
Dir.glob('sectests/*').select do |f|
|
57
62
|
if File.directory? f
|
@@ -66,6 +71,9 @@ class Sectest < Thor
|
|
66
71
|
option :registry, aliases: '-r', default: 'norad-registry.cisco.com:5000', desc: 'The Docker registry for Docker images'
|
67
72
|
option :version, aliases: '-v', default: 'latest', desc: 'The version of the sectest container to build'
|
68
73
|
define_method 'build:image' do |name|
|
74
|
+
# Check for the root_dir
|
75
|
+
root_dir?
|
76
|
+
|
69
77
|
imgs_to_build = {}
|
70
78
|
imgs_to_build["sectests/#{name}"] = "#{options[:registry]}/#{name}:#{options[:version]}"
|
71
79
|
|
@@ -97,6 +105,9 @@ class Sectest < Thor
|
|
97
105
|
option :registry, aliases: '-r', default: 'norad-registry.cisco.com:5000', desc: 'The Docker registry for Docker images'
|
98
106
|
option :version, aliases: '-v', default: 'latest', desc: 'The version of the sectest container to build'
|
99
107
|
define_method 'build:specs' do |name|
|
108
|
+
# Check for the root_dir
|
109
|
+
root_dir?
|
110
|
+
|
100
111
|
imgs_to_build = {}
|
101
112
|
imgs_to_build["#{File.expand_path(File.dirname(__FILE__))}/../templates/spec/support/Dockerfile.testserver"] = 'docker-images-test-results-server:latest'
|
102
113
|
imgs_to_build["#{File.expand_path(File.dirname(__FILE__))}/../templates/spec/support/Dockerfile.ubuntu_ssh"] = 'docker-images-test-ubuntu-ssh-server:latest'
|
@@ -126,6 +137,9 @@ class Sectest < Thor
|
|
126
137
|
option :registry, aliases: '-r', default: 'norad-registry.cisco.com:5000', desc: 'The Docker registry for Docker images'
|
127
138
|
option :version, aliases: '-v', default: 'latest', desc: 'The version of the sectest container to build'
|
128
139
|
define_method 'build:all' do |name|
|
140
|
+
# Check for the root_dir
|
141
|
+
root_dir?
|
142
|
+
|
129
143
|
# Build the sectest image
|
130
144
|
send('build:image', name)
|
131
145
|
|
@@ -133,34 +147,18 @@ class Sectest < Thor
|
|
133
147
|
send('build:specs', name)
|
134
148
|
end
|
135
149
|
|
136
|
-
# Define arguments and options
|
137
|
-
desc 'execute SECTESTNAME ARGUMENTS', 'Executes the specified security test SECTESTNAME w/ ARGUMENTS'
|
138
|
-
option :registry, aliases: '-r', default: 'norad-registry.cisco.com:5000', desc: 'The Docker registry for Docker images'
|
139
|
-
option :version, aliases: '-v', default: 'latest', desc: 'The version of the tools docker container to build'
|
140
|
-
def execute(name, arguments)
|
141
|
-
# Ensure container exists
|
142
|
-
if !Docker::Image.exist?("#{options[:registry]}/#{name}:#{options[:version]}")
|
143
|
-
say("Requested image #{options[:registry]}/#{name}:#{options[:version]} does not exist!", :red)
|
144
|
-
exit(1)
|
145
|
-
end
|
146
|
-
|
147
|
-
# Setup and run the container
|
148
|
-
env = ['NORAD_ROOT=', %(ASSESSMENT_PATHS=[{"id":"1", "assessment": "1"}]), 'NORAD_SECRET=1234']
|
149
|
-
container = Docker::Container.create(Image: "#{options[:registry]}/#{name}:#{options[:version]}",
|
150
|
-
Env: env,
|
151
|
-
Cmd: arguments)
|
152
|
-
|
153
|
-
# Start the container, watch stdout
|
154
|
-
container.tap(&:start).attach { |stream, chunk| puts "#{stream}: #{chunk}" }
|
155
|
-
end
|
156
|
-
|
157
150
|
desc 'spec:image SECTESTNAME', 'Run the rspec tests for SECTESTNAME'
|
158
|
-
option :verbose, aliases: '-v', type: :boolean,
|
159
|
-
option :scan_assessment, aliases: '-s', type: :boolean, default: true, desc: 'Fix me'
|
151
|
+
option :verbose, aliases: '-v', type: :boolean, desc: 'Turn on verbose logging'
|
160
152
|
define_method 'spec:image' do |name|
|
153
|
+
# Check for the root_dir
|
154
|
+
root_dir?
|
155
|
+
|
161
156
|
# Set environment variables
|
162
|
-
|
163
|
-
|
157
|
+
if options[:verbose]
|
158
|
+
ENV['ENABLE_LOGS'] = 'true'
|
159
|
+
end
|
160
|
+
|
161
|
+
ENV['SCAN_ASSESSMENT'] = 'true'
|
164
162
|
ENV['TEST_RESULTS_SERVER_IMAGE'] = 'docker-images-test-results-server'
|
165
163
|
ENV['UBUNTU_SSH_SERVER_IMAGE'] = 'docker-images-test-ubuntu-ssh-server'
|
166
164
|
|
@@ -172,6 +170,9 @@ class Sectest < Thor
|
|
172
170
|
option :verbose, aliases: '-v', type: :boolean, default: false, desc: 'Turn on verbose logging'
|
173
171
|
option :scan_assessment, aliases: '-s', type: :boolean, default: true, desc: 'Fix me'
|
174
172
|
def spec
|
173
|
+
# Check for the root_dir
|
174
|
+
root_dir?
|
175
|
+
|
175
176
|
# Error check to ensure this is a plugin directory
|
176
177
|
Dir.glob('sectests/*').select do |f|
|
177
178
|
if File.directory? f
|
@@ -185,7 +186,8 @@ class Sectest < Thor
|
|
185
186
|
option :seedfile, aliases: '-s', type: :string, default: './containers.rb', desc: 'The name of the seed file to generate'
|
186
187
|
option :docsite, aliases: '-d', type: :string, default: 'https://norad.gitlab.io/docs/', desc: 'Set the documentation site'
|
187
188
|
def seed
|
188
|
-
#
|
189
|
+
# Check for the root_dir
|
190
|
+
root_dir?
|
189
191
|
|
190
192
|
# Generate the seed file
|
191
193
|
SeedGenerator.process_manifests(options[:seedfile], options[:docsite])
|
@@ -193,6 +195,9 @@ class Sectest < Thor
|
|
193
195
|
|
194
196
|
desc 'validate:image SECTESTNAME', 'Validate SECTESTNAME manifest.yml and readme.md'
|
195
197
|
define_method 'validate:image' do |name|
|
198
|
+
# Check for the root_dir
|
199
|
+
root_dir?
|
200
|
+
|
196
201
|
# Validate the readme file
|
197
202
|
ENV['sectest_name'] = name
|
198
203
|
RSpec::Core::Runner.run(["#{File.dirname(File.expand_path(__FILE__))}/../support/readme_spec.rb"], $stderr, $stdout)
|
@@ -203,6 +208,9 @@ class Sectest < Thor
|
|
203
208
|
|
204
209
|
desc 'validate', 'Validate all manifest.yml and readme.md'
|
205
210
|
def validate
|
211
|
+
# Check for the root_dir
|
212
|
+
root_dir?
|
213
|
+
|
206
214
|
# Error check to ensure this is a plugin directory
|
207
215
|
Dir.glob('sectests/*').select do |f|
|
208
216
|
if File.directory? f
|
@@ -226,5 +234,15 @@ class Sectest < Thor
|
|
226
234
|
from_image = from_line[0][%r{\AFROM\s+(.*?\/)?(.*?)(:.*?)?\Z}i, 2] || raise('bad from')
|
227
235
|
[from_image, from_line_arr[1]]
|
228
236
|
end
|
237
|
+
|
238
|
+
# Ensure commands are run from the root dir
|
239
|
+
def root_dir?
|
240
|
+
%w(base spec sectests).each do |dirrepo_name|
|
241
|
+
if !File.exist?(dirrepo_name)
|
242
|
+
say("Commands must be run from the root directory\nExiting....", :red)
|
243
|
+
exit(1)
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
229
247
|
end
|
230
248
|
end
|
data/lib/norad_cli/version.rb
CHANGED