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.
@@ -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
@@ -20,5 +20,10 @@ module AbideDevUtils
20
20
  AbideDevUtils::Output.simple("XCCDF type #{type} is unsupported!")
21
21
  end
22
22
  end
23
+
24
+ class UtilsObject
25
+ require 'abide_dev_utils/xccdf/utils'
26
+ extend AbideDevUtils::XCCDF::Utils
27
+ end
23
28
  end
24
29
  end
@@ -5,6 +5,7 @@ require 'abide_dev_utils/xccdf'
5
5
  require 'abide_dev_utils/ppt'
6
6
  require 'abide_dev_utils/jira'
7
7
  require 'abide_dev_utils/config'
8
+ require 'abide_dev_utils/comply'
8
9
 
9
10
  # Root namespace all modules / classes
10
11
  module AbideDevUtils; end
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.1
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-04-27 00:00:00.000000000 Z
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.19'
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.19'
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.0.9
375
+ rubygems_version: 3.1.4
327
376
  signing_key:
328
377
  specification_version: 4
329
378
  summary: Helper utilities for developing Abide
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module AbideDevUtils
4
- module Utils
5
- def self.deep_copy(hash_obj)
6
- Marshal.load(Marshal.dump(hash_obj))
7
- end
8
- end
9
- end