foreman_openscap 7.1.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_openscap/locale/cs_CZ/foreman_openscap.js +517 -421
  3. data/app/assets/javascripts/foreman_openscap/locale/de/foreman_openscap.js +909 -813
  4. data/app/assets/javascripts/foreman_openscap/locale/en/foreman_openscap.js +517 -421
  5. data/app/assets/javascripts/foreman_openscap/locale/en_GB/foreman_openscap.js +549 -453
  6. data/app/assets/javascripts/foreman_openscap/locale/es/foreman_openscap.js +917 -821
  7. data/app/assets/javascripts/foreman_openscap/locale/fr/foreman_openscap.js +917 -821
  8. data/app/assets/javascripts/foreman_openscap/locale/gl/foreman_openscap.js +557 -461
  9. data/app/assets/javascripts/foreman_openscap/locale/it/foreman_openscap.js +603 -507
  10. data/app/assets/javascripts/foreman_openscap/locale/ja/foreman_openscap.js +908 -812
  11. data/app/assets/javascripts/foreman_openscap/locale/ka/foreman_openscap.js +1398 -0
  12. data/app/assets/javascripts/foreman_openscap/locale/ko/foreman_openscap.js +705 -609
  13. data/app/assets/javascripts/foreman_openscap/locale/pt_BR/foreman_openscap.js +917 -821
  14. data/app/assets/javascripts/foreman_openscap/locale/ru/foreman_openscap.js +707 -611
  15. data/app/assets/javascripts/foreman_openscap/locale/sv_SE/foreman_openscap.js +557 -461
  16. data/app/assets/javascripts/foreman_openscap/locale/zh_CN/foreman_openscap.js +908 -812
  17. data/app/assets/javascripts/foreman_openscap/locale/zh_TW/foreman_openscap.js +705 -609
  18. data/app/assets/javascripts/foreman_openscap/reports.js +5 -0
  19. data/app/controllers/arf_reports_controller.rb +23 -2
  20. data/app/helpers/arf_reports_helper.rb +17 -4
  21. data/app/models/concerns/foreman_openscap/host_extensions.rb +2 -0
  22. data/app/models/foreman_openscap/arf_report.rb +11 -2
  23. data/app/views/arf_reports/_output.html.erb +5 -1
  24. data/app/views/job_templates/run_openscap_remediation_-_ansible_default.erb +27 -0
  25. data/app/views/job_templates/run_openscap_remediation_-_script_default.erb +24 -0
  26. data/config/routes.rb +1 -0
  27. data/db/migrate/20230912122310_add_fixes_to_message.rb +5 -0
  28. data/lib/foreman_openscap/engine.rb +18 -2
  29. data/lib/foreman_openscap/version.rb +1 -1
  30. data/lib/tasks/foreman_openscap_tasks.rake +5 -16
  31. data/locale/Makefile +3 -3
  32. data/locale/cs_CZ/foreman_openscap.edit.po +144 -16
  33. data/locale/cs_CZ/foreman_openscap.po +97 -1
  34. data/locale/de/LC_MESSAGES/foreman_openscap.mo +0 -0
  35. data/locale/de/foreman_openscap.edit.po +145 -17
  36. data/locale/de/foreman_openscap.po +98 -2
  37. data/locale/en/foreman_openscap.edit.po +144 -16
  38. data/locale/en/foreman_openscap.po +97 -1
  39. data/locale/en_GB/foreman_openscap.edit.po +144 -16
  40. data/locale/en_GB/foreman_openscap.po +97 -1
  41. data/locale/es/LC_MESSAGES/foreman_openscap.mo +0 -0
  42. data/locale/es/foreman_openscap.edit.po +145 -17
  43. data/locale/es/foreman_openscap.po +98 -2
  44. data/locale/foreman_openscap.pot +168 -16
  45. data/locale/fr/LC_MESSAGES/foreman_openscap.mo +0 -0
  46. data/locale/fr/foreman_openscap.edit.po +145 -17
  47. data/locale/fr/foreman_openscap.po +98 -2
  48. data/locale/gl/foreman_openscap.edit.po +144 -16
  49. data/locale/gl/foreman_openscap.po +97 -1
  50. data/locale/it/foreman_openscap.edit.po +144 -16
  51. data/locale/it/foreman_openscap.po +97 -1
  52. data/locale/ja/LC_MESSAGES/foreman_openscap.mo +0 -0
  53. data/locale/ja/foreman_openscap.edit.po +145 -17
  54. data/locale/ja/foreman_openscap.po +98 -2
  55. data/locale/ka/LC_MESSAGES/foreman_openscap.mo +0 -0
  56. data/locale/ka/foreman_openscap.edit.po +1863 -0
  57. data/locale/ka/foreman_openscap.po +1405 -0
  58. data/locale/ka/foreman_openscap.po.time_stamp +0 -0
  59. data/locale/ko/LC_MESSAGES/foreman_openscap.mo +0 -0
  60. data/locale/ko/foreman_openscap.edit.po +145 -17
  61. data/locale/ko/foreman_openscap.po +98 -2
  62. data/locale/pt_BR/LC_MESSAGES/foreman_openscap.mo +0 -0
  63. data/locale/pt_BR/foreman_openscap.edit.po +145 -17
  64. data/locale/pt_BR/foreman_openscap.po +98 -2
  65. data/locale/ru/LC_MESSAGES/foreman_openscap.mo +0 -0
  66. data/locale/ru/foreman_openscap.edit.po +145 -17
  67. data/locale/ru/foreman_openscap.po +98 -2
  68. data/locale/sv_SE/foreman_openscap.edit.po +144 -16
  69. data/locale/sv_SE/foreman_openscap.po +97 -1
  70. data/locale/zh_CN/LC_MESSAGES/foreman_openscap.mo +0 -0
  71. data/locale/zh_CN/foreman_openscap.edit.po +145 -17
  72. data/locale/zh_CN/foreman_openscap.po +98 -2
  73. data/locale/zh_TW/LC_MESSAGES/foreman_openscap.mo +0 -0
  74. data/locale/zh_TW/foreman_openscap.edit.po +145 -17
  75. data/locale/zh_TW/foreman_openscap.po +98 -2
  76. data/webpack/components/EmptyState.js +6 -2
  77. data/webpack/components/OpenscapRemediationWizard/OpenscapRemediationSelectors.js +16 -0
  78. data/webpack/components/OpenscapRemediationWizard/OpenscapRemediationWizardContext.js +4 -0
  79. data/webpack/components/OpenscapRemediationWizard/ViewSelectedHostsLink.js +38 -0
  80. data/webpack/components/OpenscapRemediationWizard/WizardHeader.js +43 -0
  81. data/webpack/components/OpenscapRemediationWizard/constants.js +14 -0
  82. data/webpack/components/OpenscapRemediationWizard/helpers.js +33 -0
  83. data/webpack/components/OpenscapRemediationWizard/index.js +160 -0
  84. data/webpack/components/OpenscapRemediationWizard/steps/Finish.js +131 -0
  85. data/webpack/components/OpenscapRemediationWizard/steps/ReviewHosts.js +217 -0
  86. data/webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js +176 -0
  87. data/webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.scss +4 -0
  88. data/webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js +160 -0
  89. data/webpack/components/OpenscapRemediationWizard/steps/index.js +4 -0
  90. data/webpack/index.js +8 -3
  91. data/webpack/testHelper.js +6 -5
  92. metadata +24 -3
@@ -0,0 +1,160 @@
1
+ import React, { useContext } from 'react';
2
+ import { map, split, capitalize, join, slice, isEmpty } from 'lodash';
3
+ import {
4
+ Form,
5
+ FormGroup,
6
+ FormSelect,
7
+ FormSelectOption,
8
+ Radio,
9
+ Alert,
10
+ } from '@patternfly/react-core';
11
+
12
+ import { translate as __ } from 'foremanReact/common/I18n';
13
+ import { STATUS } from 'foremanReact/constants';
14
+ import Loading from 'foremanReact/components/Loading';
15
+
16
+ import OpenscapRemediationWizardContext from '../OpenscapRemediationWizardContext';
17
+ import WizardHeader from '../WizardHeader';
18
+ import EmptyState from '../../EmptyState';
19
+ import { errorMsg, supportedRemediationSnippets } from '../helpers';
20
+
21
+ const SnippetSelect = () => {
22
+ const {
23
+ fixes,
24
+ snippet,
25
+ setSnippet,
26
+ method,
27
+ setMethod,
28
+ logStatus,
29
+ logError,
30
+ supportedJobSnippets,
31
+ } = useContext(OpenscapRemediationWizardContext);
32
+
33
+ const snippetNameMap = {
34
+ 'urn:xccdf:fix:script:ansible': 'Ansible',
35
+ 'urn:xccdf:fix:script:puppet': 'Puppet',
36
+ 'urn:xccdf:fix:script:sh': 'Shell',
37
+ 'urn:xccdf:fix:script:kubernetes': 'Kubernetes',
38
+ 'urn:redhat:anaconda:pre': 'Anaconda',
39
+ 'urn:redhat:osbuild:blueprint': 'OSBuild Blueprint',
40
+ };
41
+
42
+ const snippetName = system => {
43
+ const mapped = snippetNameMap[system];
44
+ if (mapped) return mapped;
45
+
46
+ return join(
47
+ map(slice(split(system, ':'), -2), n => capitalize(n)),
48
+ ' '
49
+ );
50
+ };
51
+
52
+ const resetSnippet = meth => {
53
+ const snip = supportedRemediationSnippets(
54
+ fixes,
55
+ meth,
56
+ supportedJobSnippets
57
+ )[0];
58
+ setSnippet(snip);
59
+ return snip;
60
+ };
61
+
62
+ const setMethodResetSnippet = meth => {
63
+ setMethod(meth);
64
+ resetSnippet(meth);
65
+ };
66
+
67
+ const body =
68
+ logStatus === STATUS.RESOLVED ? (
69
+ <Form>
70
+ <FormGroup
71
+ label={__('Method')}
72
+ type="string"
73
+ fieldId="method"
74
+ isRequired={false}
75
+ >
76
+ <Radio
77
+ label={__('Remote job')}
78
+ id="job"
79
+ name="job"
80
+ ouiaId="job"
81
+ aria-label="job"
82
+ isChecked={method === 'job'}
83
+ onChange={() => setMethodResetSnippet('job')}
84
+ />
85
+ <Radio
86
+ label={__('Manual')}
87
+ id="manual"
88
+ name="manual"
89
+ ouiaId="manual"
90
+ aria-label="manual"
91
+ isChecked={method === 'manual'}
92
+ onChange={() => setMethodResetSnippet('manual')}
93
+ />
94
+ </FormGroup>
95
+ {isEmpty(
96
+ supportedRemediationSnippets(fixes, method, supportedJobSnippets)
97
+ ) ? (
98
+ <Alert
99
+ ouiaId="snippet-alert"
100
+ variant="info"
101
+ title={__(
102
+ 'There is no job to remediate with. Please remediate manually.'
103
+ )}
104
+ />
105
+ ) : (
106
+ <FormGroup
107
+ label={__('Snippet')}
108
+ type="string"
109
+ fieldId="snippet"
110
+ isRequired
111
+ >
112
+ <FormSelect
113
+ ouiaId="snippet-select"
114
+ isRequired
115
+ value={snippet}
116
+ onChange={value => setSnippet(value)}
117
+ aria-label="FormSelect Input"
118
+ >
119
+ <FormSelectOption
120
+ isDisabled
121
+ key={0}
122
+ value=""
123
+ label={__('Select snippet')}
124
+ />
125
+ {map(
126
+ supportedRemediationSnippets(
127
+ fixes,
128
+ method,
129
+ supportedJobSnippets
130
+ ),
131
+ fix => (
132
+ <FormSelectOption
133
+ key={fix}
134
+ value={fix}
135
+ label={snippetName(fix)}
136
+ />
137
+ )
138
+ )}
139
+ </FormSelect>
140
+ </FormGroup>
141
+ )}
142
+ </Form>
143
+ ) : (
144
+ <EmptyState error title={__('Error!')} body={errorMsg(logError)} />
145
+ );
146
+
147
+ return (
148
+ <>
149
+ <WizardHeader
150
+ title={__('Select remediation method')}
151
+ description={__(
152
+ 'You can remediate by running a remote job or you can display a snippet for manual remediation.'
153
+ )}
154
+ />
155
+ {logStatus === STATUS.PENDING ? <Loading /> : body}
156
+ </>
157
+ );
158
+ };
159
+
160
+ export default SnippetSelect;
@@ -0,0 +1,4 @@
1
+ export { default as SnippetSelect } from './SnippetSelect';
2
+ export { default as ReviewHosts } from './ReviewHosts';
3
+ export { default as ReviewRemediation } from './ReviewRemediation';
4
+ export { default as Finish } from './Finish';
data/webpack/index.js CHANGED
@@ -1,8 +1,13 @@
1
1
  import componentRegistry from 'foremanReact/components/componentRegistry';
2
2
 
3
3
  import RuleSeverity from './components/RuleSeverity';
4
+ import OpenscapRemediationWizard from './components/OpenscapRemediationWizard';
4
5
 
5
- componentRegistry.register({
6
- name: 'RuleSeverity',
7
- type: RuleSeverity,
6
+ const components = [
7
+ { name: 'RuleSeverity', type: RuleSeverity },
8
+ { name: 'OpenscapRemediationWizard', type: OpenscapRemediationWizard },
9
+ ];
10
+
11
+ components.forEach(component => {
12
+ componentRegistry.register(component);
8
13
  });
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
  import { Provider } from 'react-redux';
3
3
  import store from 'foremanReact/redux';
4
4
  import { MockedProvider } from '@apollo/react-testing';
@@ -19,20 +19,21 @@ export const withRouter = Component => props => (
19
19
  );
20
20
 
21
21
  export const withMockedProvider = Component => props => {
22
- const ForemanContext = getForemanContext(ctx);
23
22
  // eslint-disable-next-line react/prop-types
24
23
  const { mocks, ...rest } = props;
25
24
 
26
- const ctx = {
25
+ const [context, setContext] = useState({
27
26
  metadata: {
28
27
  UISettings: {
29
28
  perPage: 20,
30
29
  },
31
30
  },
32
- };
31
+ });
33
32
 
33
+ const contextData = { context, setContext };
34
+ const ForemanContext = getForemanContext(contextData);
34
35
  return (
35
- <ForemanContext.Provider value={ctx}>
36
+ <ForemanContext.Provider value={contextData}>
36
37
  <MockedProvider mocks={mocks}>
37
38
  <Component {...rest} />
38
39
  </MockedProvider>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_openscap
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - slukasik@redhat.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-13 00:00:00.000000000 Z
11
+ date: 2024-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -44,6 +44,7 @@ files:
44
44
  - app/assets/javascripts/foreman_openscap/locale/gl/foreman_openscap.js
45
45
  - app/assets/javascripts/foreman_openscap/locale/it/foreman_openscap.js
46
46
  - app/assets/javascripts/foreman_openscap/locale/ja/foreman_openscap.js
47
+ - app/assets/javascripts/foreman_openscap/locale/ka/foreman_openscap.js
47
48
  - app/assets/javascripts/foreman_openscap/locale/ko/foreman_openscap.js
48
49
  - app/assets/javascripts/foreman_openscap/locale/pt_BR/foreman_openscap.js
49
50
  - app/assets/javascripts/foreman_openscap/locale/ru/foreman_openscap.js
@@ -223,6 +224,8 @@ files:
223
224
  - app/views/foreman_openscap/policy_mailer/_policy.erb
224
225
  - app/views/foreman_openscap/policy_mailer/policy_summary.erb
225
226
  - app/views/hosts/select_multiple_openscap_proxy.html.erb
227
+ - app/views/job_templates/run_openscap_remediation_-_ansible_default.erb
228
+ - app/views/job_templates/run_openscap_remediation_-_script_default.erb
226
229
  - app/views/job_templates/run_openscap_scans.erb
227
230
  - app/views/job_templates/run_oval_scans.erb
228
231
  - app/views/policies/_form.html.erb
@@ -322,6 +325,7 @@ files:
322
325
  - db/migrate/20201217161511_add_url_to_oval_content.rb
323
326
  - db/migrate/20210409095625_add_oval_policy_reference_to_cve.rb
324
327
  - db/migrate/20210819143316_drop_unused_tables.rb
328
+ - db/migrate/20230912122310_add_fixes_to_message.rb
325
329
  - db/seeds.d/75-job_templates.rb
326
330
  - db/seeds.d/openscap_feature.rb
327
331
  - db/seeds.d/openscap_policy_notification.rb
@@ -372,6 +376,10 @@ files:
372
376
  - locale/ja/foreman_openscap.edit.po
373
377
  - locale/ja/foreman_openscap.po
374
378
  - locale/ja/foreman_openscap.po.time_stamp
379
+ - locale/ka/LC_MESSAGES/foreman_openscap.mo
380
+ - locale/ka/foreman_openscap.edit.po
381
+ - locale/ka/foreman_openscap.po
382
+ - locale/ka/foreman_openscap.po.time_stamp
375
383
  - locale/ko/LC_MESSAGES/foreman_openscap.mo
376
384
  - locale/ko/foreman_openscap.edit.po
377
385
  - locale/ko/foreman_openscap.po
@@ -470,6 +478,19 @@ files:
470
478
  - webpack/components/IndexTable/IndexTableHelper.js
471
479
  - webpack/components/IndexTable/index.js
472
480
  - webpack/components/LinkButton.js
481
+ - webpack/components/OpenscapRemediationWizard/OpenscapRemediationSelectors.js
482
+ - webpack/components/OpenscapRemediationWizard/OpenscapRemediationWizardContext.js
483
+ - webpack/components/OpenscapRemediationWizard/ViewSelectedHostsLink.js
484
+ - webpack/components/OpenscapRemediationWizard/WizardHeader.js
485
+ - webpack/components/OpenscapRemediationWizard/constants.js
486
+ - webpack/components/OpenscapRemediationWizard/helpers.js
487
+ - webpack/components/OpenscapRemediationWizard/index.js
488
+ - webpack/components/OpenscapRemediationWizard/steps/Finish.js
489
+ - webpack/components/OpenscapRemediationWizard/steps/ReviewHosts.js
490
+ - webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js
491
+ - webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.scss
492
+ - webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js
493
+ - webpack/components/OpenscapRemediationWizard/steps/index.js
473
494
  - webpack/components/RuleSeverity/RuleSeverity.scss
474
495
  - webpack/components/RuleSeverity/RuleSeverity.test.js
475
496
  - webpack/components/RuleSeverity/__snapshots__/RuleSeverity.test.js.snap
@@ -566,7 +587,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
566
587
  - !ruby/object:Gem::Version
567
588
  version: '0'
568
589
  requirements: []
569
- rubygems_version: 3.1.6
590
+ rubygems_version: 3.2.33
570
591
  signing_key:
571
592
  specification_version: 4
572
593
  summary: Foreman plug-in for displaying OpenSCAP audit reports