abide_dev_utils 0.4.1 → 0.6.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 +4 -4
- data/README.md +34 -0
- data/abide_dev_utils.gemspec +4 -1
- data/lib/abide_dev_utils/cli/abstract.rb +2 -0
- data/lib/abide_dev_utils/cli/comply.rb +99 -0
- data/lib/abide_dev_utils/cli/jira.rb +4 -2
- data/lib/abide_dev_utils/cli/puppet.rb +118 -11
- data/lib/abide_dev_utils/cli.rb +2 -0
- data/lib/abide_dev_utils/comply.rb +441 -0
- data/lib/abide_dev_utils/config.rb +24 -1
- data/lib/abide_dev_utils/errors/comply.rb +13 -0
- data/lib/abide_dev_utils/errors/gcloud.rb +27 -0
- data/lib/abide_dev_utils/errors/ppt.rb +12 -0
- data/lib/abide_dev_utils/errors.rb +2 -0
- data/lib/abide_dev_utils/gcloud.rb +21 -0
- data/lib/abide_dev_utils/jira.rb +17 -0
- data/lib/abide_dev_utils/mixins.rb +16 -0
- data/lib/abide_dev_utils/ppt/class_utils.rb +184 -0
- data/lib/abide_dev_utils/ppt/coverage.rb +2 -3
- data/lib/abide_dev_utils/ppt.rb +135 -49
- data/lib/abide_dev_utils/version.rb +1 -1
- data/lib/abide_dev_utils/xccdf/cis/hiera.rb +71 -66
- data/lib/abide_dev_utils/xccdf/utils.rb +85 -0
- data/lib/abide_dev_utils/xccdf.rb +5 -0
- data/lib/abide_dev_utils.rb +1 -0
- metadata +55 -6
- data/lib/abide_dev_utils/utils/general.rb +0 -9
@@ -0,0 +1,85 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'abide_dev_utils/validate'
|
5
|
+
require 'pry'
|
6
|
+
|
7
|
+
module AbideDevUtils
|
8
|
+
module XCCDF
|
9
|
+
module Utils
|
10
|
+
CONTROL_PREFIX = /^[\d.]+_/.freeze
|
11
|
+
UNDERSCORED = /(\s|\(|\)|-|\.)/.freeze
|
12
|
+
CIS_NEXT_GEN_WINDOWS = /(next_generation_windows_security)/.freeze
|
13
|
+
CIS_XPATHS = {
|
14
|
+
benchmark: {
|
15
|
+
all: 'xccdf:Benchmark',
|
16
|
+
title: 'xccdf:Benchmark/xccdf:title',
|
17
|
+
version: 'xccdf:Benchmark/xccdf:version'
|
18
|
+
},
|
19
|
+
profiles: {
|
20
|
+
all: 'xccdf:Benchmark/xccdf:Profile',
|
21
|
+
relative_title: './xccdf:title',
|
22
|
+
relative_select: './xccdf:select'
|
23
|
+
}
|
24
|
+
}.freeze
|
25
|
+
|
26
|
+
def parse(xccdf_file)
|
27
|
+
AbideDevUtils::Validate.file(xccdf_file)
|
28
|
+
File.open(xccdf_file) { |f| Nokogiri::XML(f) }
|
29
|
+
end
|
30
|
+
|
31
|
+
def normalize_string(str)
|
32
|
+
nstr = str.downcase
|
33
|
+
nstr.gsub!(/[^a-z0-9]$/, '')
|
34
|
+
nstr.gsub!(/^[^a-z]/, '')
|
35
|
+
nstr.gsub!(/^(l1_|l2_|ng_)/, '')
|
36
|
+
nstr.delete!('(/|\\|\+)')
|
37
|
+
nstr.gsub!(UNDERSCORED, '_')
|
38
|
+
nstr.strip!
|
39
|
+
nstr
|
40
|
+
end
|
41
|
+
|
42
|
+
def normalize_profile_name(prof)
|
43
|
+
prof_name = normalize_string("profile_#{prof}")
|
44
|
+
prof_name.gsub!(NEXT_GEN_WINDOWS, 'ngws')
|
45
|
+
prof_name.strip!
|
46
|
+
prof_name
|
47
|
+
end
|
48
|
+
|
49
|
+
def normalize_control_name(control, number_format: false)
|
50
|
+
return number_normalize_control(control) if number_format
|
51
|
+
|
52
|
+
name_normalize_control(control)
|
53
|
+
end
|
54
|
+
|
55
|
+
def name_normalize_control(control)
|
56
|
+
new_ctrl = control.split('benchmarks_rule_')[-1].gsub(CONTROL_PREFIX, '')
|
57
|
+
normalize_string(new_ctrl)
|
58
|
+
end
|
59
|
+
|
60
|
+
def number_normalize_control(control)
|
61
|
+
part = control.split('benchmarks_rule_')[-1]
|
62
|
+
numpart = CONTROL_PREFIX.match(part).to_s.chop.gsub(UNDERSCORED, '_')
|
63
|
+
"c#{numpart}"
|
64
|
+
end
|
65
|
+
|
66
|
+
def text_normalize_control(control)
|
67
|
+
control = control['idref'].to_s unless control.respond_to?(:split)
|
68
|
+
|
69
|
+
control.split('benchmarks_rule_')[-1].tr('_', ' ')
|
70
|
+
end
|
71
|
+
|
72
|
+
def all_cis_recommendations(parsed_xccdf)
|
73
|
+
parsed_xccdf.xpath('//xccdf:select').uniq
|
74
|
+
end
|
75
|
+
|
76
|
+
def find_cis_recommendation(name, recommendations, number_format: false)
|
77
|
+
recommendations.each do |reco|
|
78
|
+
if normalize_control_name(reco['idref'].to_s, number_format: number_format) == name
|
79
|
+
return text_normalize_control(reco['idref'].to_s)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/abide_dev_utils.rb
CHANGED
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.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Heston Snodgrass
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '6.
|
47
|
+
version: '6.23'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '6.
|
54
|
+
version: '6.23'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: jira-ruby
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,34 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.11'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: selenium-webdriver
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 4.0.0.beta4
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 4.0.0.beta4
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: google-cloud-storage
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.34'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.34'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: bundler
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +178,20 @@ dependencies:
|
|
150
178
|
- - ">="
|
151
179
|
- !ruby/object:Gem::Version
|
152
180
|
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: pry
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
153
195
|
- !ruby/object:Gem::Dependency
|
154
196
|
name: rspec
|
155
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -275,32 +317,39 @@ files:
|
|
275
317
|
- lib/abide_dev_utils.rb
|
276
318
|
- lib/abide_dev_utils/cli.rb
|
277
319
|
- lib/abide_dev_utils/cli/abstract.rb
|
320
|
+
- lib/abide_dev_utils/cli/comply.rb
|
278
321
|
- lib/abide_dev_utils/cli/jira.rb
|
279
322
|
- lib/abide_dev_utils/cli/puppet.rb
|
280
323
|
- lib/abide_dev_utils/cli/test.rb
|
281
324
|
- lib/abide_dev_utils/cli/xccdf.rb
|
325
|
+
- lib/abide_dev_utils/comply.rb
|
282
326
|
- lib/abide_dev_utils/config.rb
|
283
327
|
- lib/abide_dev_utils/constants.rb
|
284
328
|
- lib/abide_dev_utils/errors.rb
|
285
329
|
- lib/abide_dev_utils/errors/base.rb
|
330
|
+
- lib/abide_dev_utils/errors/comply.rb
|
331
|
+
- lib/abide_dev_utils/errors/gcloud.rb
|
286
332
|
- lib/abide_dev_utils/errors/general.rb
|
287
333
|
- lib/abide_dev_utils/errors/jira.rb
|
288
334
|
- lib/abide_dev_utils/errors/ppt.rb
|
289
335
|
- lib/abide_dev_utils/errors/xccdf.rb
|
290
336
|
- lib/abide_dev_utils/files.rb
|
337
|
+
- lib/abide_dev_utils/gcloud.rb
|
291
338
|
- lib/abide_dev_utils/jira.rb
|
339
|
+
- lib/abide_dev_utils/mixins.rb
|
292
340
|
- lib/abide_dev_utils/output.rb
|
293
341
|
- lib/abide_dev_utils/ppt.rb
|
342
|
+
- lib/abide_dev_utils/ppt/class_utils.rb
|
294
343
|
- lib/abide_dev_utils/ppt/coverage.rb
|
295
344
|
- lib/abide_dev_utils/ppt/new_obj.rb
|
296
345
|
- lib/abide_dev_utils/prompt.rb
|
297
346
|
- lib/abide_dev_utils/resources/generic_spec.erb
|
298
|
-
- lib/abide_dev_utils/utils/general.rb
|
299
347
|
- lib/abide_dev_utils/validate.rb
|
300
348
|
- lib/abide_dev_utils/version.rb
|
301
349
|
- lib/abide_dev_utils/xccdf.rb
|
302
350
|
- lib/abide_dev_utils/xccdf/cis.rb
|
303
351
|
- lib/abide_dev_utils/xccdf/cis/hiera.rb
|
352
|
+
- lib/abide_dev_utils/xccdf/utils.rb
|
304
353
|
homepage: https://github.com/hsnodgrass/abide_dev_utils
|
305
354
|
licenses:
|
306
355
|
- MIT
|
@@ -323,7 +372,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
323
372
|
- !ruby/object:Gem::Version
|
324
373
|
version: '0'
|
325
374
|
requirements: []
|
326
|
-
rubygems_version: 3.
|
375
|
+
rubygems_version: 3.1.4
|
327
376
|
signing_key:
|
328
377
|
specification_version: 4
|
329
378
|
summary: Helper utilities for developing Abide
|