abide_dev_utils 0.4.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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