abide_dev_utils 0.5.2 → 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.5.2
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-09-10 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
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
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'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: bundler
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -313,24 +327,29 @@ files:
313
327
  - lib/abide_dev_utils/constants.rb
314
328
  - lib/abide_dev_utils/errors.rb
315
329
  - lib/abide_dev_utils/errors/base.rb
330
+ - lib/abide_dev_utils/errors/comply.rb
331
+ - lib/abide_dev_utils/errors/gcloud.rb
316
332
  - lib/abide_dev_utils/errors/general.rb
317
333
  - lib/abide_dev_utils/errors/jira.rb
318
334
  - lib/abide_dev_utils/errors/ppt.rb
319
335
  - lib/abide_dev_utils/errors/xccdf.rb
320
336
  - lib/abide_dev_utils/files.rb
337
+ - lib/abide_dev_utils/gcloud.rb
321
338
  - lib/abide_dev_utils/jira.rb
339
+ - lib/abide_dev_utils/mixins.rb
322
340
  - lib/abide_dev_utils/output.rb
323
341
  - lib/abide_dev_utils/ppt.rb
342
+ - lib/abide_dev_utils/ppt/class_utils.rb
324
343
  - lib/abide_dev_utils/ppt/coverage.rb
325
344
  - lib/abide_dev_utils/ppt/new_obj.rb
326
345
  - lib/abide_dev_utils/prompt.rb
327
346
  - lib/abide_dev_utils/resources/generic_spec.erb
328
- - lib/abide_dev_utils/utils/general.rb
329
347
  - lib/abide_dev_utils/validate.rb
330
348
  - lib/abide_dev_utils/version.rb
331
349
  - lib/abide_dev_utils/xccdf.rb
332
350
  - lib/abide_dev_utils/xccdf/cis.rb
333
351
  - lib/abide_dev_utils/xccdf/cis/hiera.rb
352
+ - lib/abide_dev_utils/xccdf/utils.rb
334
353
  homepage: https://github.com/hsnodgrass/abide_dev_utils
335
354
  licenses:
336
355
  - MIT
@@ -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