abide_dev_utils 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.dockerignore +1 -0
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/.rubocop.yml +0 -0
- data/.rubocop_todo.yml +0 -0
- data/CHANGELOG.md +0 -0
- data/Dockerfile +23 -0
- data/Gemfile +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +9 -0
- data/Rakefile +0 -0
- data/abide_dev_utils.gemspec +1 -0
- data/lib/abide_dev_utils.rb +0 -0
- data/lib/abide_dev_utils/cli.rb +0 -0
- data/lib/abide_dev_utils/cli/abstract.rb +0 -0
- data/lib/abide_dev_utils/cli/jira.rb +0 -0
- data/lib/abide_dev_utils/cli/puppet.rb +0 -0
- data/lib/abide_dev_utils/cli/test.rb +1 -1
- data/lib/abide_dev_utils/cli/xccdf.rb +1 -0
- data/lib/abide_dev_utils/config.rb +0 -0
- data/lib/abide_dev_utils/constants.rb +0 -0
- data/lib/abide_dev_utils/errors.rb +0 -0
- data/lib/abide_dev_utils/errors/base.rb +0 -0
- data/lib/abide_dev_utils/errors/general.rb +0 -0
- data/lib/abide_dev_utils/errors/jira.rb +0 -0
- data/lib/abide_dev_utils/errors/ppt.rb +0 -0
- data/lib/abide_dev_utils/errors/xccdf.rb +4 -0
- data/lib/abide_dev_utils/files.rb +0 -0
- data/lib/abide_dev_utils/jira.rb +0 -0
- data/lib/abide_dev_utils/output.rb +0 -0
- data/lib/abide_dev_utils/ppt.rb +0 -0
- data/lib/abide_dev_utils/ppt/coverage.rb +0 -0
- data/lib/abide_dev_utils/ppt/new_obj.rb +3 -3
- data/lib/abide_dev_utils/prompt.rb +0 -0
- data/lib/abide_dev_utils/resources/generic_spec.erb +0 -0
- data/lib/abide_dev_utils/utils/general.rb +0 -0
- data/lib/abide_dev_utils/validate.rb +0 -0
- data/lib/abide_dev_utils/version.rb +1 -1
- data/lib/abide_dev_utils/xccdf.rb +1 -1
- data/lib/abide_dev_utils/xccdf/cis.rb +0 -0
- data/lib/abide_dev_utils/xccdf/cis/hiera.rb +21 -6
- metadata +22 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e53d77f476f80d886ab35e07bbfcf897f117d24be9fdf6cc3c31fc50b3d40e7
|
4
|
+
data.tar.gz: 1fc189884a7c351da992f6ad6e915cc0321c290c67b5e10ae3e35fb0bbc26d79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dedd8ca47872aa859852f51172233ffefca9420004804d750969c0b7558caa10caba812570538c5e4989c021c2a6409620502f7459dfcd5027f9c7afafbb6fe
|
7
|
+
data.tar.gz: fe3b5f70661297672e171fce5f452c06a9042f2e101918caaf65be0527c5e401e22169bdfde0d1649b1d8ea6ce85c04262c7147c4fd8f0514d81e0bfdb2e860e
|
data/.dockerignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Gemfile.lock
|
data/.gitignore
CHANGED
File without changes
|
data/.rspec
CHANGED
File without changes
|
data/.rubocop.yml
CHANGED
File without changes
|
data/.rubocop_todo.yml
CHANGED
File without changes
|
data/CHANGELOG.md
CHANGED
File without changes
|
data/Dockerfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
FROM ruby:2.7.3-alpine
|
2
|
+
|
3
|
+
ARG version
|
4
|
+
|
5
|
+
RUN mkdir /extvol && \
|
6
|
+
apk update && \
|
7
|
+
apk add git build-base
|
8
|
+
|
9
|
+
VOLUME /extvol
|
10
|
+
|
11
|
+
WORKDIR /usr/src/app
|
12
|
+
|
13
|
+
RUN mkdir -p ./lib/abide_dev_utils/
|
14
|
+
COPY Gemfile abide_dev_utils.gemspec ./
|
15
|
+
COPY lib/abide_dev_utils/version.rb lib/abide_dev_utils
|
16
|
+
RUN bundle install
|
17
|
+
|
18
|
+
COPY . .
|
19
|
+
|
20
|
+
RUN bundle exec rake build && \
|
21
|
+
gem install pkg/abide_dev_utils-${version}.gem
|
22
|
+
|
23
|
+
ENTRYPOINT [ "abide" ]
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -231,6 +231,15 @@ NOTE: When converting XCCDF files to Hiera, control names are sanitized. This me
|
|
231
231
|
* `--out-file`, `-o` - A path to a file where you would like to save the generated Hiera
|
232
232
|
* `--parent-key-prefix`, `-p` - Allows you to append a prefix to all top-level Hiera keys
|
233
233
|
|
234
|
+
## Docker
|
235
|
+
|
236
|
+
A Dockerfile has been provided in this repo for convenience since Ruby environments can be painful to deal with. To abide_dev_utils with Docker:
|
237
|
+
|
238
|
+
* Build the Dockerfile: `docker build . -t abide_dev_utils --build-arg version=<semver>`
|
239
|
+
* Run the commands using the container: `docker run -it abide_dev_utils --help`
|
240
|
+
* The container declares a volume for external resources such as files. To use the volume, add the following flag to your `docker run` commands: `-v /path/to/my/files:/extvol`
|
241
|
+
* When using the volume, all paths should be absolute based on the root directory `/extvol`
|
242
|
+
|
234
243
|
## Development
|
235
244
|
|
236
245
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/Rakefile
CHANGED
File without changes
|
data/abide_dev_utils.gemspec
CHANGED
@@ -41,6 +41,7 @@ Gem::Specification.new do |spec|
|
|
41
41
|
# Dev dependencies
|
42
42
|
spec.add_development_dependency 'bundler'
|
43
43
|
spec.add_development_dependency 'rake'
|
44
|
+
spec.add_development_dependency 'console'
|
44
45
|
spec.add_development_dependency 'github_changelog_generator'
|
45
46
|
spec.add_development_dependency 'gem-release'
|
46
47
|
spec.add_development_dependency 'rspec', '~> 3.10'
|
data/lib/abide_dev_utils.rb
CHANGED
File without changes
|
data/lib/abide_dev_utils/cli.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -35,10 +35,10 @@ module Abide
|
|
35
35
|
@litmus_im = [CMD_LIT_BASE, "'litmus:install_module'"]
|
36
36
|
@litmus_ap = [CMD_LIT_BASE, "'litmus:acceptance:parallel'"]
|
37
37
|
@litmus_td = [CMD_LIT_BASE, "'litmus:tear_down'"]
|
38
|
-
validate_env_and_opts
|
39
38
|
end
|
40
39
|
|
41
40
|
def execute(suite)
|
41
|
+
validate_env_and_opts
|
42
42
|
case suite.downcase
|
43
43
|
when /^a[A-Za-z]*/
|
44
44
|
run_command(@validate)
|
@@ -28,6 +28,7 @@ module Abide
|
|
28
28
|
options.on('-b [TYPE]', '--benchmark-type [TYPE]', 'XCCDF Benchmark type') { |b| @data[:type] = b }
|
29
29
|
options.on('-o [FILE]', '--out-file [FILE]', 'Path to save file') { |f| @data[:file] = f }
|
30
30
|
options.on('-p [PREFIX]', '--parent-key-prefix [PREFIX]', 'A prefix to append to the parent key') { |p| @data[:parent_key_prefix] = p }
|
31
|
+
options.on('-N', '--number-fmt', 'Format Hiera control names based off of control number instead of name.') { |s| @data[:num] = true }
|
31
32
|
end
|
32
33
|
|
33
34
|
def execute(xccdf_file)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -8,5 +8,9 @@ module AbideDevUtils
|
|
8
8
|
class XPathSearchError < GenericError
|
9
9
|
@default = 'XPath seach failed to find anything at:'
|
10
10
|
end
|
11
|
+
|
12
|
+
class StrategyInvalidError < GenericError
|
13
|
+
@default = 'Invalid strategy selected. Should be either \'name\' or \'num\''
|
14
|
+
end
|
11
15
|
end
|
12
16
|
end
|
File without changes
|
data/lib/abide_dev_utils/jira.rb
CHANGED
File without changes
|
File without changes
|
data/lib/abide_dev_utils/ppt.rb
CHANGED
File without changes
|
File without changes
|
@@ -22,9 +22,10 @@ module AbideDevUtils
|
|
22
22
|
@vars = vars
|
23
23
|
class_vars
|
24
24
|
validate_class_vars
|
25
|
+
@tmpl_data = template_data(@opts.fetch(:tmpl_name, @obj_type))
|
25
26
|
end
|
26
27
|
|
27
|
-
attr_reader :obj_type, :obj_name, :root_dir, :tmpl_dir, :obj_path, :vars
|
28
|
+
attr_reader :obj_type, :obj_name, :root_dir, :tmpl_dir, :obj_path, :vars, :tmpl_data
|
28
29
|
|
29
30
|
def build
|
30
31
|
force = @opts.fetch(:force, false)
|
@@ -85,7 +86,6 @@ module AbideDevUtils
|
|
85
86
|
else
|
86
87
|
"#{@root_dir}/#{@opts.fetch(:tmpl_dir, 'object_templates')}"
|
87
88
|
end
|
88
|
-
@tmpl_data = template_data(@opts.fetch(:tmpl_name, @obj_type))
|
89
89
|
@obj_path = new_obj_path
|
90
90
|
@spec_tmpl = @opts.fetch(:spec_template, File.expand_path(File.join(__dir__, '../resources/generic_spec.erb')))
|
91
91
|
end
|
@@ -129,7 +129,7 @@ module AbideDevUtils
|
|
129
129
|
data[:pfx] = data[:fname].match?(OBJ_PREFIX) ? data[:fname].match(OBJ_PREFIX)[1] : 'c-'
|
130
130
|
data[:spec_base] = PREFIX_TEST_PATH[data[:pfx]]
|
131
131
|
data[:obj_name] = normalize_obj_name(data.dup)
|
132
|
-
data[:spec_name] = "#{
|
132
|
+
data[:spec_name] = "#{@obj_name.split('::')[-1]}_spec.rb"
|
133
133
|
data[:spec_path] = spec_path(data[:spec_base], data[:spec_name])
|
134
134
|
data
|
135
135
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -15,7 +15,7 @@ module AbideDevUtils
|
|
15
15
|
type = opts.fetch(:type, 'cis')
|
16
16
|
case type.downcase
|
17
17
|
when 'cis'
|
18
|
-
AbideDevUtils::XCCDF::CIS::Hiera.new(xccdf_file, parent_key_prefix: opts[:parent_key_prefix])
|
18
|
+
AbideDevUtils::XCCDF::CIS::Hiera.new(xccdf_file, parent_key_prefix: opts[:parent_key_prefix], strategy: opts[:strategy])
|
19
19
|
else
|
20
20
|
AbideDevUtils::Output.simple("XCCDF type #{type} is unsupported!")
|
21
21
|
end
|
File without changes
|
@@ -35,13 +35,13 @@ module AbideDevUtils
|
|
35
35
|
# @param parent_key_prefix [String] a string to be prepended to the
|
36
36
|
# top-level key in the Hiera structure. Useful for namespacing
|
37
37
|
# the top-level key.
|
38
|
-
def initialize(xccdf_file, parent_key_prefix: nil)
|
38
|
+
def initialize(xccdf_file, parent_key_prefix: nil, num: false)
|
39
39
|
@doc = parse(xccdf_file)
|
40
40
|
@title = xpath(XPATHS[:benchmark][:title]).children.to_s
|
41
41
|
@version = xpath(XPATHS[:benchmark][:version]).children.to_s
|
42
42
|
@profiles = xpath(XPATHS[:profiles][:all])
|
43
43
|
@parent_key = make_parent_key(@doc, parent_key_prefix)
|
44
|
-
@hash = make_hash(@doc, @parent_key)
|
44
|
+
@hash = make_hash(@doc, @parent_key, num)
|
45
45
|
end
|
46
46
|
|
47
47
|
def yaml_title
|
@@ -92,13 +92,16 @@ module AbideDevUtils
|
|
92
92
|
|
93
93
|
attr_accessor :doc, :hash, :parent_key, :profiles
|
94
94
|
|
95
|
+
# Accepts a path to an xccdf xml file and returns a parsed Nokogiri object of the file
|
96
|
+
# @param xccdf_file [String] path to an xccdf xml file
|
97
|
+
# @return [Nokogiri::Node] A Nokogiri node object of the XML document
|
95
98
|
def parse(xccdf_file)
|
96
99
|
raise AbideDevUtils::Errors::FileNotFoundError, xccdf_file unless File.file?(xccdf_file)
|
97
100
|
|
98
101
|
Nokogiri.XML(File.open(xccdf_file))
|
99
102
|
end
|
100
103
|
|
101
|
-
def make_hash(doc, parent_key)
|
104
|
+
def make_hash(doc, parent_key, num)
|
102
105
|
hash = { parent_key.to_sym => { title: @title, version: @version } }
|
103
106
|
profiles = doc.xpath('xccdf:Benchmark/xccdf:Profile')
|
104
107
|
profiles.each do |p|
|
@@ -106,7 +109,7 @@ module AbideDevUtils
|
|
106
109
|
hash[parent_key.to_sym][title.to_sym] = []
|
107
110
|
selects = p.xpath('./xccdf:select')
|
108
111
|
selects.each do |s|
|
109
|
-
hash[parent_key.to_sym][title.to_sym] << normalize_ctrl_name(s['idref'].to_s)
|
112
|
+
hash[parent_key.to_sym][title.to_sym] << normalize_ctrl_name(s['idref'].to_s, num)
|
110
113
|
end
|
111
114
|
end
|
112
115
|
hash
|
@@ -128,11 +131,23 @@ module AbideDevUtils
|
|
128
131
|
prof_name
|
129
132
|
end
|
130
133
|
|
131
|
-
def normalize_ctrl_name(ctrl)
|
132
|
-
|
134
|
+
def normalize_ctrl_name(ctrl, num)
|
135
|
+
return num_normalize_ctrl(ctrl) if num
|
136
|
+
|
137
|
+
name_normalize_ctrl(ctrl)
|
138
|
+
end
|
139
|
+
|
140
|
+
def name_normalize_ctrl(ctrl)
|
141
|
+
new_ctrl = ctrl.split('benchmarks_rule_')[-1].gsub(CONTROL_PREFIX, '')
|
133
142
|
normalize_str(new_ctrl)
|
134
143
|
end
|
135
144
|
|
145
|
+
def num_normalize_ctrl(ctrl)
|
146
|
+
part = ctrl.split('benchmarks_rule_')[-1]
|
147
|
+
numpart = CONTROL_PREFIX.match(part).to_s.chop.gsub(UNDERSCORED, '_')
|
148
|
+
"c#{numpart}"
|
149
|
+
end
|
150
|
+
|
136
151
|
def make_parent_key(doc, prefix)
|
137
152
|
doc_title = normalize_str(doc.xpath(XPATHS[:benchmark][:title]).children.to_s)
|
138
153
|
return doc_title if prefix.nil?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abide_dev_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Heston Snodgrass
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-04-
|
11
|
+
date: 2021-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: console
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: github_changelog_generator
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -242,11 +256,13 @@ executables:
|
|
242
256
|
extensions: []
|
243
257
|
extra_rdoc_files: []
|
244
258
|
files:
|
259
|
+
- ".dockerignore"
|
245
260
|
- ".gitignore"
|
246
261
|
- ".rspec"
|
247
262
|
- ".rubocop.yml"
|
248
263
|
- ".rubocop_todo.yml"
|
249
264
|
- CHANGELOG.md
|
265
|
+
- Dockerfile
|
250
266
|
- Gemfile
|
251
267
|
- LICENSE.txt
|
252
268
|
- README.md
|
@@ -292,7 +308,7 @@ metadata:
|
|
292
308
|
homepage_uri: https://github.com/hsnodgrass/abide_dev_utils
|
293
309
|
source_code_uri: https://github.com/hsnodgrass/abide_dev_utils
|
294
310
|
changelog_uri: https://github.com/hsnodgrass/abide_dev_utils
|
295
|
-
post_install_message:
|
311
|
+
post_install_message:
|
296
312
|
rdoc_options: []
|
297
313
|
require_paths:
|
298
314
|
- lib
|
@@ -307,8 +323,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
307
323
|
- !ruby/object:Gem::Version
|
308
324
|
version: '0'
|
309
325
|
requirements: []
|
310
|
-
rubygems_version: 3.
|
311
|
-
signing_key:
|
326
|
+
rubygems_version: 3.1.2
|
327
|
+
signing_key:
|
312
328
|
specification_version: 4
|
313
329
|
summary: Helper utilities for developing Abide
|
314
330
|
test_files: []
|