foreman_openscap 7.1.0 → 8.0.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/app/assets/javascripts/foreman_openscap/locale/cs_CZ/foreman_openscap.js +517 -421
- data/app/assets/javascripts/foreman_openscap/locale/de/foreman_openscap.js +909 -813
- data/app/assets/javascripts/foreman_openscap/locale/en/foreman_openscap.js +517 -421
- data/app/assets/javascripts/foreman_openscap/locale/en_GB/foreman_openscap.js +549 -453
- data/app/assets/javascripts/foreman_openscap/locale/es/foreman_openscap.js +917 -821
- data/app/assets/javascripts/foreman_openscap/locale/fr/foreman_openscap.js +917 -821
- data/app/assets/javascripts/foreman_openscap/locale/gl/foreman_openscap.js +557 -461
- data/app/assets/javascripts/foreman_openscap/locale/it/foreman_openscap.js +603 -507
- data/app/assets/javascripts/foreman_openscap/locale/ja/foreman_openscap.js +908 -812
- data/app/assets/javascripts/foreman_openscap/locale/ka/foreman_openscap.js +1398 -0
- data/app/assets/javascripts/foreman_openscap/locale/ko/foreman_openscap.js +705 -609
- data/app/assets/javascripts/foreman_openscap/locale/pt_BR/foreman_openscap.js +917 -821
- data/app/assets/javascripts/foreman_openscap/locale/ru/foreman_openscap.js +707 -611
- data/app/assets/javascripts/foreman_openscap/locale/sv_SE/foreman_openscap.js +557 -461
- data/app/assets/javascripts/foreman_openscap/locale/zh_CN/foreman_openscap.js +908 -812
- data/app/assets/javascripts/foreman_openscap/locale/zh_TW/foreman_openscap.js +705 -609
- data/app/assets/javascripts/foreman_openscap/reports.js +5 -0
- data/app/controllers/arf_reports_controller.rb +23 -2
- data/app/helpers/arf_reports_helper.rb +17 -4
- data/app/models/concerns/foreman_openscap/host_extensions.rb +2 -0
- data/app/models/foreman_openscap/arf_report.rb +11 -2
- data/app/views/arf_reports/_output.html.erb +5 -1
- data/app/views/job_templates/run_openscap_remediation_-_ansible_default.erb +27 -0
- data/app/views/job_templates/run_openscap_remediation_-_script_default.erb +24 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20230912122310_add_fixes_to_message.rb +5 -0
- data/lib/foreman_openscap/engine.rb +18 -2
- data/lib/foreman_openscap/version.rb +1 -1
- data/lib/tasks/foreman_openscap_tasks.rake +5 -16
- data/locale/Makefile +3 -3
- data/locale/cs_CZ/foreman_openscap.edit.po +144 -16
- data/locale/cs_CZ/foreman_openscap.po +97 -1
- data/locale/de/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/de/foreman_openscap.edit.po +145 -17
- data/locale/de/foreman_openscap.po +98 -2
- data/locale/en/foreman_openscap.edit.po +144 -16
- data/locale/en/foreman_openscap.po +97 -1
- data/locale/en_GB/foreman_openscap.edit.po +144 -16
- data/locale/en_GB/foreman_openscap.po +97 -1
- data/locale/es/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/es/foreman_openscap.edit.po +145 -17
- data/locale/es/foreman_openscap.po +98 -2
- data/locale/foreman_openscap.pot +168 -16
- data/locale/fr/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/fr/foreman_openscap.edit.po +145 -17
- data/locale/fr/foreman_openscap.po +98 -2
- data/locale/gl/foreman_openscap.edit.po +144 -16
- data/locale/gl/foreman_openscap.po +97 -1
- data/locale/it/foreman_openscap.edit.po +144 -16
- data/locale/it/foreman_openscap.po +97 -1
- data/locale/ja/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/ja/foreman_openscap.edit.po +145 -17
- data/locale/ja/foreman_openscap.po +98 -2
- data/locale/ka/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/ka/foreman_openscap.edit.po +1863 -0
- data/locale/ka/foreman_openscap.po +1405 -0
- data/locale/ka/foreman_openscap.po.time_stamp +0 -0
- data/locale/ko/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/ko/foreman_openscap.edit.po +145 -17
- data/locale/ko/foreman_openscap.po +98 -2
- data/locale/pt_BR/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/pt_BR/foreman_openscap.edit.po +145 -17
- data/locale/pt_BR/foreman_openscap.po +98 -2
- data/locale/ru/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/ru/foreman_openscap.edit.po +145 -17
- data/locale/ru/foreman_openscap.po +98 -2
- data/locale/sv_SE/foreman_openscap.edit.po +144 -16
- data/locale/sv_SE/foreman_openscap.po +97 -1
- data/locale/zh_CN/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/zh_CN/foreman_openscap.edit.po +145 -17
- data/locale/zh_CN/foreman_openscap.po +98 -2
- data/locale/zh_TW/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/zh_TW/foreman_openscap.edit.po +145 -17
- data/locale/zh_TW/foreman_openscap.po +98 -2
- data/webpack/components/EmptyState.js +6 -2
- data/webpack/components/OpenscapRemediationWizard/OpenscapRemediationSelectors.js +16 -0
- data/webpack/components/OpenscapRemediationWizard/OpenscapRemediationWizardContext.js +4 -0
- data/webpack/components/OpenscapRemediationWizard/ViewSelectedHostsLink.js +38 -0
- data/webpack/components/OpenscapRemediationWizard/WizardHeader.js +43 -0
- data/webpack/components/OpenscapRemediationWizard/constants.js +14 -0
- data/webpack/components/OpenscapRemediationWizard/helpers.js +33 -0
- data/webpack/components/OpenscapRemediationWizard/index.js +160 -0
- data/webpack/components/OpenscapRemediationWizard/steps/Finish.js +131 -0
- data/webpack/components/OpenscapRemediationWizard/steps/ReviewHosts.js +217 -0
- data/webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js +176 -0
- data/webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.scss +4 -0
- data/webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js +160 -0
- data/webpack/components/OpenscapRemediationWizard/steps/index.js +4 -0
- data/webpack/index.js +8 -3
- data/webpack/testHelper.js +6 -5
- metadata +24 -3
|
@@ -382,15 +382,15 @@ msgstr "刪除 %s 合規報告失敗"
|
|
|
382
382
|
msgid "Successfully deleted %s compliance reports"
|
|
383
383
|
msgstr "刪除 %s 合規報告成功"
|
|
384
384
|
|
|
385
|
-
#: ../app/controllers/arf_reports_controller.rb:
|
|
385
|
+
#: ../app/controllers/arf_reports_controller.rb:106
|
|
386
386
|
msgid "No compliance reports were found."
|
|
387
387
|
msgstr ""
|
|
388
388
|
|
|
389
|
-
#: ../app/controllers/arf_reports_controller.rb:
|
|
389
|
+
#: ../app/controllers/arf_reports_controller.rb:110
|
|
390
390
|
msgid "No compliance reports selected"
|
|
391
391
|
msgstr ""
|
|
392
392
|
|
|
393
|
-
#: ../app/controllers/arf_reports_controller.rb:
|
|
393
|
+
#: ../app/controllers/arf_reports_controller.rb:115
|
|
394
394
|
msgid "Something went wrong while selecting compliance reports - %s"
|
|
395
395
|
msgstr "選擇合規報告時發生了錯誤 - %s"
|
|
396
396
|
|
|
@@ -430,15 +430,15 @@ msgstr "已更新主機:未從合規政策指定 '%s'"
|
|
|
430
430
|
msgid "No valid policy ID provided"
|
|
431
431
|
msgstr ""
|
|
432
432
|
|
|
433
|
-
#: ../app/controllers/policies_controller.rb:125
|
|
434
|
-
msgid "No hosts were found."
|
|
435
|
-
msgstr "找不到主機。"
|
|
436
|
-
|
|
437
433
|
#: ../app/controllers/policies_controller.rb:129
|
|
434
|
+
msgid "No hosts were found with that id, name or query filter"
|
|
435
|
+
msgstr ""
|
|
436
|
+
|
|
437
|
+
#: ../app/controllers/policies_controller.rb:134
|
|
438
438
|
msgid "No hosts selected"
|
|
439
439
|
msgstr "未選擇主機"
|
|
440
440
|
|
|
441
|
-
#: ../app/controllers/policies_controller.rb:
|
|
441
|
+
#: ../app/controllers/policies_controller.rb:139
|
|
442
442
|
msgid "Something went wrong while selecting hosts - %s"
|
|
443
443
|
msgstr "選擇主機時發生了錯誤 - %s"
|
|
444
444
|
|
|
@@ -510,18 +510,22 @@ msgstr ""
|
|
|
510
510
|
msgid " through %s"
|
|
511
511
|
msgstr ""
|
|
512
512
|
|
|
513
|
-
#: ../app/helpers/arf_reports_helper.rb:
|
|
513
|
+
#: ../app/helpers/arf_reports_helper.rb:67
|
|
514
514
|
msgid "Hosts failing this rule"
|
|
515
515
|
msgstr ""
|
|
516
516
|
|
|
517
|
-
#: ../app/helpers/arf_reports_helper.rb:
|
|
517
|
+
#: ../app/helpers/arf_reports_helper.rb:68
|
|
518
518
|
msgid "Hosts passing this rule"
|
|
519
519
|
msgstr ""
|
|
520
520
|
|
|
521
|
-
#: ../app/helpers/arf_reports_helper.rb:
|
|
521
|
+
#: ../app/helpers/arf_reports_helper.rb:69
|
|
522
522
|
msgid "Hosts othering this rule"
|
|
523
523
|
msgstr ""
|
|
524
524
|
|
|
525
|
+
#: ../app/helpers/arf_reports_helper.rb:72
|
|
526
|
+
msgid "Remediation"
|
|
527
|
+
msgstr ""
|
|
528
|
+
|
|
525
529
|
#: ../app/helpers/compliance_dashboard_helper.rb:3 ../app/views/arf_reports/_list.html.erb:6 ../app/views/arf_reports/delete_multiple.html.erb:7 ../app/views/policy_dashboard/_policy_reports.html.erb:6
|
|
526
530
|
msgid "Host"
|
|
527
531
|
msgstr "主機"
|
|
@@ -1161,7 +1165,7 @@ msgstr "月份中的日子,請注意並不是所有月份都有同樣的天數
|
|
|
1161
1165
|
msgid "You can specify custom cron line, e.g. \"0 3 * * *\", separate each of 5 values by space"
|
|
1162
1166
|
msgstr "您可指定自訂的 cron 行,例如\"0 3 * * *\",五個數值均由空格隔開"
|
|
1163
1167
|
|
|
1164
|
-
#: ../app/views/policies/_list.html.erb:3 ../app/views/tailoring_files/_list.html.erb:3 ../webpack/routes/OvalContents/OvalContentsIndex/OvalContentsTable.js:19 ../webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js:57 ../webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.js:48 ../webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesTable.js:19 ../webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyForm.js:56 ../webpack/routes/OvalPolicies/OvalPoliciesShow/DetailsTab.js:31 ../webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTable.js:9
|
|
1168
|
+
#: ../app/views/policies/_list.html.erb:3 ../app/views/tailoring_files/_list.html.erb:3 ../webpack/components/OpenscapRemediationWizard/steps/ReviewHosts.js:162 ../webpack/routes/OvalContents/OvalContentsIndex/OvalContentsTable.js:19 ../webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js:57 ../webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.js:48 ../webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesTable.js:19 ../webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyForm.js:56 ../webpack/routes/OvalPolicies/OvalPoliciesShow/DetailsTab.js:31 ../webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTable.js:9
|
|
1165
1169
|
msgid "Name"
|
|
1166
1170
|
msgstr "名稱"
|
|
1167
1171
|
|
|
@@ -1487,14 +1491,22 @@ msgstr ""
|
|
|
1487
1491
|
msgid "ID of OpenSCAP Proxy"
|
|
1488
1492
|
msgstr ""
|
|
1489
1493
|
|
|
1490
|
-
#: ../lib/foreman_openscap/engine.rb:270 ../lib/foreman_openscap/engine.rb:
|
|
1494
|
+
#: ../lib/foreman_openscap/engine.rb:270 ../lib/foreman_openscap/engine.rb:293
|
|
1491
1495
|
msgid "Run OpenSCAP scan"
|
|
1492
1496
|
msgstr ""
|
|
1493
1497
|
|
|
1494
|
-
#: ../lib/foreman_openscap/engine.rb:275 ../lib/foreman_openscap/engine.rb:
|
|
1498
|
+
#: ../lib/foreman_openscap/engine.rb:275 ../lib/foreman_openscap/engine.rb:294
|
|
1495
1499
|
msgid "Run OVAL scan"
|
|
1496
1500
|
msgstr ""
|
|
1497
1501
|
|
|
1502
|
+
#: ../lib/foreman_openscap/engine.rb:279 ../lib/foreman_openscap/engine.rb:295
|
|
1503
|
+
msgid "Run OpenSCAP remediation with Ansible"
|
|
1504
|
+
msgstr ""
|
|
1505
|
+
|
|
1506
|
+
#: ../lib/foreman_openscap/engine.rb:284 ../lib/foreman_openscap/engine.rb:296
|
|
1507
|
+
msgid "Run OpenSCAP remediation with Shell"
|
|
1508
|
+
msgstr ""
|
|
1509
|
+
|
|
1498
1510
|
#: ../webpack/components/ConfirmModal.js:19
|
|
1499
1511
|
msgid "Confirm"
|
|
1500
1512
|
msgstr ""
|
|
@@ -1507,14 +1519,130 @@ msgstr ""
|
|
|
1507
1519
|
msgid "There's no available report for this host"
|
|
1508
1520
|
msgstr ""
|
|
1509
1521
|
|
|
1510
|
-
#: ../webpack/components/
|
|
1511
|
-
msgid "
|
|
1522
|
+
#: ../webpack/components/OpenscapRemediationWizard/ViewSelectedHostsLink.js:27
|
|
1523
|
+
msgid "View selected hosts"
|
|
1512
1524
|
msgstr ""
|
|
1513
1525
|
|
|
1514
|
-
#: ../webpack/components/
|
|
1526
|
+
#: ../webpack/components/OpenscapRemediationWizard/index.js:69 ../webpack/components/OpenscapRemediationWizard/steps/ReviewHosts.js:174
|
|
1527
|
+
msgid "Review hosts"
|
|
1528
|
+
msgstr ""
|
|
1529
|
+
|
|
1530
|
+
#: ../webpack/components/OpenscapRemediationWizard/index.js:77 ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:123
|
|
1531
|
+
msgid "Select snippet"
|
|
1532
|
+
msgstr ""
|
|
1533
|
+
|
|
1534
|
+
#: ../webpack/components/OpenscapRemediationWizard/index.js:85 ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:94
|
|
1535
|
+
msgid "Review remediation"
|
|
1536
|
+
msgstr ""
|
|
1537
|
+
|
|
1538
|
+
#: ../webpack/components/OpenscapRemediationWizard/index.js:89
|
|
1539
|
+
msgid "Run"
|
|
1540
|
+
msgstr ""
|
|
1541
|
+
|
|
1542
|
+
#: ../webpack/components/OpenscapRemediationWizard/index.js:93
|
|
1543
|
+
msgid "Done"
|
|
1544
|
+
msgstr ""
|
|
1545
|
+
|
|
1546
|
+
#: ../webpack/components/OpenscapRemediationWizard/index.js:127
|
|
1547
|
+
msgid "Remediate %s rule"
|
|
1548
|
+
msgstr ""
|
|
1549
|
+
|
|
1550
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/Finish.js:84
|
|
1551
|
+
msgid "Job details"
|
|
1552
|
+
msgstr ""
|
|
1553
|
+
|
|
1554
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/Finish.js:87
|
|
1555
|
+
msgid "Close"
|
|
1556
|
+
msgstr ""
|
|
1557
|
+
|
|
1558
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/Finish.js:97 ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:144 ../webpack/components/withLoading.js:12
|
|
1515
1559
|
msgid "Error!"
|
|
1516
1560
|
msgstr ""
|
|
1517
1561
|
|
|
1562
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/Finish.js:105
|
|
1563
|
+
msgid "The job has started on selected host(s), you can check the status on the job details page."
|
|
1564
|
+
msgstr ""
|
|
1565
|
+
|
|
1566
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewHosts.js:167
|
|
1567
|
+
msgid "OS"
|
|
1568
|
+
msgstr ""
|
|
1569
|
+
|
|
1570
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewHosts.js:175
|
|
1571
|
+
msgid "By default, remediation is applied to the current host. Optionally, remediate any additional hosts that fail the rule."
|
|
1572
|
+
msgstr ""
|
|
1573
|
+
|
|
1574
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:61
|
|
1575
|
+
msgid "Review the remediation snippet and apply it to the host manually."
|
|
1576
|
+
msgstr ""
|
|
1577
|
+
|
|
1578
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:62
|
|
1579
|
+
msgid "Review the remediation snippet that will be applied to selected host(s)."
|
|
1580
|
+
msgstr ""
|
|
1581
|
+
|
|
1582
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:67
|
|
1583
|
+
msgid "A reboot is required after applying remediation."
|
|
1584
|
+
msgstr ""
|
|
1585
|
+
|
|
1586
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:68
|
|
1587
|
+
msgid "A reboot might be required after applying remediation."
|
|
1588
|
+
msgstr ""
|
|
1589
|
+
|
|
1590
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:84
|
|
1591
|
+
msgid "Successfully copied to clipboard!"
|
|
1592
|
+
msgstr ""
|
|
1593
|
+
|
|
1594
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:85
|
|
1595
|
+
msgid "Copy to clipboard"
|
|
1596
|
+
msgstr ""
|
|
1597
|
+
|
|
1598
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:103
|
|
1599
|
+
msgid "Do not implement any of the recommended remedial actions or scripts without first testing them in a non-production environment."
|
|
1600
|
+
msgstr ""
|
|
1601
|
+
|
|
1602
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:106
|
|
1603
|
+
msgid "Remediation might render the system non-functional."
|
|
1604
|
+
msgstr ""
|
|
1605
|
+
|
|
1606
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:139
|
|
1607
|
+
msgid "Other hosts failing this rule"
|
|
1608
|
+
msgstr ""
|
|
1609
|
+
|
|
1610
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/ReviewRemediation.js:155
|
|
1611
|
+
msgid "Reboot the system(s)"
|
|
1612
|
+
msgstr ""
|
|
1613
|
+
|
|
1614
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:71
|
|
1615
|
+
msgid "Method"
|
|
1616
|
+
msgstr ""
|
|
1617
|
+
|
|
1618
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:77
|
|
1619
|
+
msgid "Remote job"
|
|
1620
|
+
msgstr ""
|
|
1621
|
+
|
|
1622
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:86
|
|
1623
|
+
msgid "Manual"
|
|
1624
|
+
msgstr ""
|
|
1625
|
+
|
|
1626
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:101
|
|
1627
|
+
msgid "There is no job to remediate with. Please remediate manually."
|
|
1628
|
+
msgstr ""
|
|
1629
|
+
|
|
1630
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:107
|
|
1631
|
+
msgid "Snippet"
|
|
1632
|
+
msgstr ""
|
|
1633
|
+
|
|
1634
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:150
|
|
1635
|
+
msgid "Select remediation method"
|
|
1636
|
+
msgstr ""
|
|
1637
|
+
|
|
1638
|
+
#: ../webpack/components/OpenscapRemediationWizard/steps/SnippetSelect.js:151
|
|
1639
|
+
msgid "You can remediate by running a remote job or you can display a snippet for manual remediation."
|
|
1640
|
+
msgstr ""
|
|
1641
|
+
|
|
1642
|
+
#: ../webpack/components/withDeleteModal.js:27
|
|
1643
|
+
msgid "Are you sure you want to delete %s?"
|
|
1644
|
+
msgstr ""
|
|
1645
|
+
|
|
1518
1646
|
#: ../webpack/components/withLoading.js:64
|
|
1519
1647
|
msgid "Permission denied"
|
|
1520
1648
|
msgstr ""
|
|
@@ -62,6 +62,12 @@ msgstr ""
|
|
|
62
62
|
msgid "<b>Foreman</b> OpenSCAP summary"
|
|
63
63
|
msgstr ""
|
|
64
64
|
|
|
65
|
+
msgid "A reboot is required after applying remediation."
|
|
66
|
+
msgstr ""
|
|
67
|
+
|
|
68
|
+
msgid "A reboot might be required after applying remediation."
|
|
69
|
+
msgstr ""
|
|
70
|
+
|
|
65
71
|
msgid "A summary of reports for OpenSCAP policies"
|
|
66
72
|
msgstr ""
|
|
67
73
|
|
|
@@ -113,6 +119,9 @@ msgstr ""
|
|
|
113
119
|
msgid "Back"
|
|
114
120
|
msgstr "上一頁"
|
|
115
121
|
|
|
122
|
+
msgid "By default, remediation is applied to the current host. Optionally, remediate any additional hosts that fail the rule."
|
|
123
|
+
msgstr ""
|
|
124
|
+
|
|
116
125
|
msgid "CVEs"
|
|
117
126
|
msgstr ""
|
|
118
127
|
|
|
@@ -158,6 +167,9 @@ msgstr "選擇期間"
|
|
|
158
167
|
msgid "Choose weekday"
|
|
159
168
|
msgstr "選擇星期幾"
|
|
160
169
|
|
|
170
|
+
msgid "Close"
|
|
171
|
+
msgstr ""
|
|
172
|
+
|
|
161
173
|
msgid "Compliance"
|
|
162
174
|
msgstr "合規"
|
|
163
175
|
|
|
@@ -191,6 +203,9 @@ msgstr ""
|
|
|
191
203
|
msgid "Content"
|
|
192
204
|
msgstr ""
|
|
193
205
|
|
|
206
|
+
msgid "Copy to clipboard"
|
|
207
|
+
msgstr ""
|
|
208
|
+
|
|
194
209
|
msgid "Could not find host identified by: %s"
|
|
195
210
|
msgstr ""
|
|
196
211
|
|
|
@@ -302,9 +317,15 @@ msgstr ""
|
|
|
302
317
|
msgid "Directory to upload when using \"directory\" upload type"
|
|
303
318
|
msgstr ""
|
|
304
319
|
|
|
320
|
+
msgid "Do not implement any of the recommended remedial actions or scripts without first testing them in a non-production environment."
|
|
321
|
+
msgstr ""
|
|
322
|
+
|
|
305
323
|
msgid "Documentation"
|
|
306
324
|
msgstr "文件"
|
|
307
325
|
|
|
326
|
+
msgid "Done"
|
|
327
|
+
msgstr ""
|
|
328
|
+
|
|
308
329
|
msgid "Download"
|
|
309
330
|
msgstr "下載"
|
|
310
331
|
|
|
@@ -505,6 +526,9 @@ msgstr ""
|
|
|
505
526
|
msgid "It may sometimes be required to adjust the security policy to your specific needs. "
|
|
506
527
|
msgstr ""
|
|
507
528
|
|
|
529
|
+
msgid "Job details"
|
|
530
|
+
msgstr ""
|
|
531
|
+
|
|
508
532
|
msgid "Latest Compliance Reports"
|
|
509
533
|
msgstr ""
|
|
510
534
|
|
|
@@ -538,9 +562,15 @@ msgstr "載入中…"
|
|
|
538
562
|
msgid "Locations"
|
|
539
563
|
msgstr "位置"
|
|
540
564
|
|
|
565
|
+
msgid "Manual"
|
|
566
|
+
msgstr ""
|
|
567
|
+
|
|
541
568
|
msgid "Message"
|
|
542
569
|
msgstr "訊息"
|
|
543
570
|
|
|
571
|
+
msgid "Method"
|
|
572
|
+
msgstr ""
|
|
573
|
+
|
|
544
574
|
msgid "Monthly, day of month: %s"
|
|
545
575
|
msgstr ""
|
|
546
576
|
|
|
@@ -622,8 +652,8 @@ msgstr ""
|
|
|
622
652
|
msgid "No hosts selected"
|
|
623
653
|
msgstr "未選擇主機"
|
|
624
654
|
|
|
625
|
-
msgid "No hosts were found
|
|
626
|
-
msgstr "
|
|
655
|
+
msgid "No hosts were found with that id, name or query filter"
|
|
656
|
+
msgstr ""
|
|
627
657
|
|
|
628
658
|
msgid "No proxy found for %{name} or %{url}"
|
|
629
659
|
msgstr ""
|
|
@@ -676,6 +706,9 @@ msgstr "事件數量"
|
|
|
676
706
|
msgid "Number of a day in month, note that not all months have same count of days"
|
|
677
707
|
msgstr "月份中的日子,請注意並不是所有月份都有同樣的天數"
|
|
678
708
|
|
|
709
|
+
msgid "OS"
|
|
710
|
+
msgstr ""
|
|
711
|
+
|
|
679
712
|
msgid "OVAL Content"
|
|
680
713
|
msgstr ""
|
|
681
714
|
|
|
@@ -775,6 +808,9 @@ msgstr ""
|
|
|
775
808
|
msgid "Other"
|
|
776
809
|
msgstr "其他"
|
|
777
810
|
|
|
811
|
+
msgid "Other hosts failing this rule"
|
|
812
|
+
msgstr ""
|
|
813
|
+
|
|
778
814
|
msgid "Othered"
|
|
779
815
|
msgstr "其它"
|
|
780
816
|
|
|
@@ -867,6 +903,9 @@ msgstr "Puppet 類別"
|
|
|
867
903
|
msgid "Rationale"
|
|
868
904
|
msgstr "理由"
|
|
869
905
|
|
|
906
|
+
msgid "Reboot the system(s)"
|
|
907
|
+
msgstr ""
|
|
908
|
+
|
|
870
909
|
msgid "Red Hat %s default content"
|
|
871
910
|
msgstr ""
|
|
872
911
|
|
|
@@ -876,9 +915,21 @@ msgstr ""
|
|
|
876
915
|
msgid "References"
|
|
877
916
|
msgstr "參照"
|
|
878
917
|
|
|
918
|
+
msgid "Remediate %s rule"
|
|
919
|
+
msgstr ""
|
|
920
|
+
|
|
921
|
+
msgid "Remediation"
|
|
922
|
+
msgstr ""
|
|
923
|
+
|
|
924
|
+
msgid "Remediation might render the system non-functional."
|
|
925
|
+
msgstr ""
|
|
926
|
+
|
|
879
927
|
msgid "Remote action:"
|
|
880
928
|
msgstr "遠端動作:"
|
|
881
929
|
|
|
930
|
+
msgid "Remote job"
|
|
931
|
+
msgstr ""
|
|
932
|
+
|
|
882
933
|
msgid "Report Metrics"
|
|
883
934
|
msgstr "報告計量"
|
|
884
935
|
|
|
@@ -915,12 +966,33 @@ msgstr "資源"
|
|
|
915
966
|
msgid "Result"
|
|
916
967
|
msgstr "結果"
|
|
917
968
|
|
|
969
|
+
msgid "Review hosts"
|
|
970
|
+
msgstr ""
|
|
971
|
+
|
|
972
|
+
msgid "Review remediation"
|
|
973
|
+
msgstr ""
|
|
974
|
+
|
|
975
|
+
msgid "Review the remediation snippet and apply it to the host manually."
|
|
976
|
+
msgstr ""
|
|
977
|
+
|
|
978
|
+
msgid "Review the remediation snippet that will be applied to selected host(s)."
|
|
979
|
+
msgstr ""
|
|
980
|
+
|
|
918
981
|
msgid "Rule Results"
|
|
919
982
|
msgstr ""
|
|
920
983
|
|
|
984
|
+
msgid "Run"
|
|
985
|
+
msgstr ""
|
|
986
|
+
|
|
921
987
|
msgid "Run OVAL scan"
|
|
922
988
|
msgstr ""
|
|
923
989
|
|
|
990
|
+
msgid "Run OpenSCAP remediation with Ansible"
|
|
991
|
+
msgstr ""
|
|
992
|
+
|
|
993
|
+
msgid "Run OpenSCAP remediation with Shell"
|
|
994
|
+
msgstr ""
|
|
995
|
+
|
|
924
996
|
msgid "Run OpenSCAP scan"
|
|
925
997
|
msgstr ""
|
|
926
998
|
|
|
@@ -963,6 +1035,12 @@ msgstr ""
|
|
|
963
1035
|
msgid "Select all items in this page"
|
|
964
1036
|
msgstr "選擇這頁中的所有項目"
|
|
965
1037
|
|
|
1038
|
+
msgid "Select remediation method"
|
|
1039
|
+
msgstr ""
|
|
1040
|
+
|
|
1041
|
+
msgid "Select snippet"
|
|
1042
|
+
msgstr ""
|
|
1043
|
+
|
|
966
1044
|
msgid "Severity"
|
|
967
1045
|
msgstr "嚴重性"
|
|
968
1046
|
|
|
@@ -1005,6 +1083,9 @@ msgstr "顯示日誌訊息:"
|
|
|
1005
1083
|
msgid "Smart Class Parameters"
|
|
1006
1084
|
msgstr ""
|
|
1007
1085
|
|
|
1086
|
+
msgid "Snippet"
|
|
1087
|
+
msgstr ""
|
|
1088
|
+
|
|
1008
1089
|
msgid "Something went wrong while selecting compliance reports - %s"
|
|
1009
1090
|
msgstr "選擇合規報告時發生了錯誤 - %s"
|
|
1010
1091
|
|
|
@@ -1023,6 +1104,9 @@ msgstr "狀態表"
|
|
|
1023
1104
|
msgid "Submit"
|
|
1024
1105
|
msgstr "提交"
|
|
1025
1106
|
|
|
1107
|
+
msgid "Successfully copied to clipboard!"
|
|
1108
|
+
msgstr ""
|
|
1109
|
+
|
|
1026
1110
|
msgid "Successfully deleted %s compliance reports"
|
|
1027
1111
|
msgstr "刪除 %s 合規報告成功"
|
|
1028
1112
|
|
|
@@ -1085,9 +1169,15 @@ msgstr ""
|
|
|
1085
1169
|
msgid "The identifier of the host"
|
|
1086
1170
|
msgstr ""
|
|
1087
1171
|
|
|
1172
|
+
msgid "The job has started on selected host(s), you can check the status on the job details page."
|
|
1173
|
+
msgstr ""
|
|
1174
|
+
|
|
1088
1175
|
msgid "There are significant differences in deployment options."
|
|
1089
1176
|
msgstr ""
|
|
1090
1177
|
|
|
1178
|
+
msgid "There is no job to remediate with. Please remediate manually."
|
|
1179
|
+
msgstr ""
|
|
1180
|
+
|
|
1091
1181
|
msgid "There was a following error when deleting %(name)s: %(error)s"
|
|
1092
1182
|
msgstr ""
|
|
1093
1183
|
|
|
@@ -1210,6 +1300,9 @@ msgstr "檢視報告"
|
|
|
1210
1300
|
msgid "View full report"
|
|
1211
1301
|
msgstr "檢視完整報告"
|
|
1212
1302
|
|
|
1303
|
+
msgid "View selected hosts"
|
|
1304
|
+
msgstr ""
|
|
1305
|
+
|
|
1213
1306
|
msgid "Was %s configured successfully?"
|
|
1214
1307
|
msgstr ""
|
|
1215
1308
|
|
|
@@ -1240,6 +1333,9 @@ msgstr "是"
|
|
|
1240
1333
|
msgid "You are not authorized to view the page. "
|
|
1241
1334
|
msgstr ""
|
|
1242
1335
|
|
|
1336
|
+
msgid "You can remediate by running a remote job or you can display a snippet for manual remediation."
|
|
1337
|
+
msgstr ""
|
|
1338
|
+
|
|
1243
1339
|
msgid "You can specify custom cron line, e.g. \"0 3 * * *\", separate each of 5 values by space"
|
|
1244
1340
|
msgstr "您可指定自訂的 cron 行,例如\"0 3 * * *\",五個數值均由空格隔開"
|
|
1245
1341
|
|
|
@@ -56,8 +56,12 @@ EmptyStateIcon.defaultProps = {
|
|
|
56
56
|
|
|
57
57
|
EmptyState.propTypes = {
|
|
58
58
|
title: PropTypes.string,
|
|
59
|
-
body: PropTypes.string,
|
|
60
|
-
error: PropTypes.oneOfType([
|
|
59
|
+
body: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
|
|
60
|
+
error: PropTypes.oneOfType([
|
|
61
|
+
PropTypes.shape({}),
|
|
62
|
+
PropTypes.string,
|
|
63
|
+
PropTypes.bool,
|
|
64
|
+
]),
|
|
61
65
|
search: PropTypes.bool,
|
|
62
66
|
lock: PropTypes.bool,
|
|
63
67
|
primaryButton: PropTypes.node,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
selectAPIError,
|
|
3
|
+
selectAPIResponse,
|
|
4
|
+
selectAPIStatus,
|
|
5
|
+
} from 'foremanReact/redux/API/APISelectors';
|
|
6
|
+
import { STATUS } from 'foremanReact/constants';
|
|
7
|
+
import { REPORT_LOG_REQUEST_KEY } from './constants';
|
|
8
|
+
|
|
9
|
+
export const selectLogResponse = state =>
|
|
10
|
+
selectAPIResponse(state, REPORT_LOG_REQUEST_KEY);
|
|
11
|
+
|
|
12
|
+
export const selectLogStatus = state =>
|
|
13
|
+
selectAPIStatus(state, REPORT_LOG_REQUEST_KEY) || STATUS.PENDING;
|
|
14
|
+
|
|
15
|
+
export const selectLogError = state =>
|
|
16
|
+
selectAPIError(state, REPORT_LOG_REQUEST_KEY);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
|
|
4
|
+
import { ExternalLinkSquareAltIcon } from '@patternfly/react-icons';
|
|
5
|
+
import { Button } from '@patternfly/react-core';
|
|
6
|
+
|
|
7
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
|
8
|
+
import { foremanUrl } from 'foremanReact/common/helpers';
|
|
9
|
+
import { getHostsPageUrl } from 'foremanReact/Root/Context/ForemanContext';
|
|
10
|
+
|
|
11
|
+
const ViewSelectedHostsLink = ({
|
|
12
|
+
hostIdsParam,
|
|
13
|
+
isAllHostsSelected,
|
|
14
|
+
defaultFailedHostsSearch,
|
|
15
|
+
}) => {
|
|
16
|
+
const search = isAllHostsSelected ? defaultFailedHostsSearch : hostIdsParam;
|
|
17
|
+
const url = foremanUrl(`${getHostsPageUrl(false)}?search=${search}`);
|
|
18
|
+
return (
|
|
19
|
+
<Button
|
|
20
|
+
component="a"
|
|
21
|
+
variant="link"
|
|
22
|
+
icon={<ExternalLinkSquareAltIcon />}
|
|
23
|
+
iconPosition="right"
|
|
24
|
+
target="_blank"
|
|
25
|
+
href={url}
|
|
26
|
+
>
|
|
27
|
+
{__('View selected hosts')}
|
|
28
|
+
</Button>
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
ViewSelectedHostsLink.propTypes = {
|
|
33
|
+
isAllHostsSelected: PropTypes.bool.isRequired,
|
|
34
|
+
defaultFailedHostsSearch: PropTypes.string.isRequired,
|
|
35
|
+
hostIdsParam: PropTypes.string.isRequired,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default ViewSelectedHostsLink;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import {
|
|
4
|
+
Grid,
|
|
5
|
+
TextContent,
|
|
6
|
+
Text,
|
|
7
|
+
TextVariants,
|
|
8
|
+
Flex,
|
|
9
|
+
FlexItem,
|
|
10
|
+
} from '@patternfly/react-core';
|
|
11
|
+
|
|
12
|
+
const WizardHeader = ({ title, description }) => (
|
|
13
|
+
<Grid style={{ gridGap: '24px' }}>
|
|
14
|
+
{title && (
|
|
15
|
+
<TextContent>
|
|
16
|
+
<Text ouiaId="wizard-header-text" component={TextVariants.h2}>
|
|
17
|
+
{title}
|
|
18
|
+
</Text>
|
|
19
|
+
</TextContent>
|
|
20
|
+
)}
|
|
21
|
+
{description && (
|
|
22
|
+
<TextContent>
|
|
23
|
+
<Flex flex={{ default: 'inlineFlex' }}>
|
|
24
|
+
<FlexItem>
|
|
25
|
+
<TextContent>{description}</TextContent>
|
|
26
|
+
</FlexItem>
|
|
27
|
+
</Flex>
|
|
28
|
+
</TextContent>
|
|
29
|
+
)}
|
|
30
|
+
</Grid>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
WizardHeader.propTypes = {
|
|
34
|
+
title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),
|
|
35
|
+
description: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
WizardHeader.defaultProps = {
|
|
39
|
+
title: undefined,
|
|
40
|
+
description: undefined,
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export default WizardHeader;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const OPENSCAP_REMEDIATION_MODAL_ID = 'openscapRemediationModal';
|
|
2
|
+
export const HOSTS_PATH = '/hosts';
|
|
3
|
+
export const FAIL_RULE_SEARCH = 'fails_xccdf_rule';
|
|
4
|
+
|
|
5
|
+
export const HOSTS_API_PATH = '/api/hosts';
|
|
6
|
+
export const HOSTS_API_REQUEST_KEY = 'HOSTS';
|
|
7
|
+
export const REPORT_LOG_REQUEST_KEY = 'ARF_REPORT_LOG';
|
|
8
|
+
|
|
9
|
+
export const JOB_INVOCATION_PATH = '/job_invocations';
|
|
10
|
+
export const JOB_INVOCATION_API_PATH = '/api/job_invocations';
|
|
11
|
+
export const JOB_INVOCATION_API_REQUEST_KEY = 'OPENSCAP_REX_JOB_INVOCATIONS';
|
|
12
|
+
|
|
13
|
+
export const SNIPPET_SH = 'urn:xccdf:fix:script:sh';
|
|
14
|
+
export const SNIPPET_ANSIBLE = 'urn:xccdf:fix:script:ansible';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { join, find, map, compact, includes, filter, isString } from 'lodash';
|
|
2
|
+
|
|
3
|
+
const getResponseErrorMsgs = ({ data } = {}) => {
|
|
4
|
+
if (data) {
|
|
5
|
+
const messages =
|
|
6
|
+
data.displayMessage || data.message || data.errors || data.error?.message;
|
|
7
|
+
return Array.isArray(messages) ? messages : [messages];
|
|
8
|
+
}
|
|
9
|
+
return [];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const errorMsg = data => {
|
|
13
|
+
if (isString(data)) return data;
|
|
14
|
+
|
|
15
|
+
return join(getResponseErrorMsgs({ data }), '\n');
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const findFixBySnippet = (fixes, snippet) =>
|
|
19
|
+
find(fixes, fix => fix.system === snippet);
|
|
20
|
+
|
|
21
|
+
export const supportedRemediationSnippets = (
|
|
22
|
+
fixes,
|
|
23
|
+
meth,
|
|
24
|
+
supportedJobSnippets
|
|
25
|
+
) => {
|
|
26
|
+
if (meth === 'manual') return map(fixes, f => f.system);
|
|
27
|
+
return compact(
|
|
28
|
+
map(
|
|
29
|
+
filter(fixes, fix => includes(supportedJobSnippets, fix.system)),
|
|
30
|
+
f => f.system
|
|
31
|
+
)
|
|
32
|
+
);
|
|
33
|
+
};
|