foreman_openscap 5.2.3 → 7.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 +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/de/foreman_openscap.js +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/en/foreman_openscap.js +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/en_GB/foreman_openscap.js +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/es/foreman_openscap.js +1304 -0
- data/app/assets/javascripts/foreman_openscap/locale/fr/foreman_openscap.js +1304 -0
- data/app/assets/javascripts/foreman_openscap/locale/gl/foreman_openscap.js +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/it/foreman_openscap.js +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/ja/foreman_openscap.js +1300 -0
- data/app/assets/javascripts/foreman_openscap/locale/ko/foreman_openscap.js +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/pt_BR/foreman_openscap.js +1304 -0
- data/app/assets/javascripts/foreman_openscap/locale/ru/foreman_openscap.js +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/sv_SE/foreman_openscap.js +1302 -0
- data/app/assets/javascripts/foreman_openscap/locale/zh_CN/foreman_openscap.js +1300 -0
- data/app/assets/javascripts/foreman_openscap/locale/zh_TW/foreman_openscap.js +1302 -0
- data/app/controllers/concerns/foreman_openscap/hosts_and_hostgroups_controller_extensions.rb +1 -1
- data/app/helpers/compliance_hosts_helper.rb +2 -0
- data/app/services/foreman_openscap/client_config/ansible.rb +4 -1
- data/app/services/foreman_openscap/client_config/manual.rb +1 -1
- data/app/services/foreman_openscap/client_config/puppet.rb +4 -1
- data/app/services/foreman_openscap/oval/sync_oval_contents.rb +2 -2
- data/app/views/arf_reports/_list.html.erb +1 -1
- data/app/views/policies/_list.html.erb +3 -3
- data/app/views/scap_contents/_list.html.erb +3 -3
- data/app/views/tailoring_files/_list.html.erb +3 -3
- data/lib/foreman_openscap/bulk_upload.rb +7 -7
- data/lib/foreman_openscap/engine.rb +2 -7
- data/lib/foreman_openscap/version.rb +1 -1
- data/locale/Makefile +6 -3
- data/locale/cs_CZ/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/cs_CZ/foreman_openscap.edit.po +1735 -0
- data/locale/cs_CZ/foreman_openscap.po +1309 -0
- data/locale/cs_CZ/foreman_openscap.po.time_stamp +0 -0
- data/locale/de/foreman_openscap.edit.po +1745 -0
- data/locale/de/foreman_openscap.po +195 -0
- data/locale/de/foreman_openscap.po.time_stamp +0 -0
- data/locale/en/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/en/foreman_openscap.edit.po +1735 -0
- data/locale/en/foreman_openscap.po +1309 -0
- data/locale/en/foreman_openscap.po.time_stamp +0 -0
- data/locale/en_GB/foreman_openscap.edit.po +1735 -0
- data/locale/en_GB/foreman_openscap.po +195 -0
- data/locale/en_GB/foreman_openscap.po.time_stamp +0 -0
- data/locale/es/foreman_openscap.edit.po +1740 -0
- data/locale/es/foreman_openscap.po +195 -0
- data/locale/es/foreman_openscap.po.time_stamp +0 -0
- data/locale/foreman_openscap.pot +361 -49
- data/locale/fr/foreman_openscap.edit.po +1746 -0
- data/locale/fr/foreman_openscap.po +195 -0
- data/locale/fr/foreman_openscap.po.time_stamp +0 -0
- data/locale/gl/foreman_openscap.edit.po +1735 -0
- data/locale/gl/foreman_openscap.po +195 -0
- data/locale/gl/foreman_openscap.po.time_stamp +0 -0
- data/locale/it/foreman_openscap.edit.po +1737 -0
- data/locale/it/foreman_openscap.po +195 -0
- data/locale/it/foreman_openscap.po.time_stamp +0 -0
- data/locale/ja/foreman_openscap.edit.po +1741 -0
- data/locale/ja/foreman_openscap.po +195 -0
- data/locale/ja/foreman_openscap.po.time_stamp +0 -0
- data/locale/ko/foreman_openscap.edit.po +1735 -0
- data/locale/ko/foreman_openscap.po +195 -0
- data/locale/ko/foreman_openscap.po.time_stamp +0 -0
- data/locale/pt_BR/foreman_openscap.edit.po +1745 -0
- data/locale/pt_BR/foreman_openscap.po +195 -0
- data/locale/pt_BR/foreman_openscap.po.time_stamp +0 -0
- data/locale/ru/foreman_openscap.edit.po +1739 -0
- data/locale/ru/foreman_openscap.po +195 -0
- data/locale/ru/foreman_openscap.po.time_stamp +0 -0
- data/locale/sv_SE/foreman_openscap.edit.po +1735 -0
- data/locale/sv_SE/foreman_openscap.po +195 -0
- data/locale/sv_SE/foreman_openscap.po.time_stamp +0 -0
- data/locale/zh_CN/foreman_openscap.edit.po +1740 -0
- data/locale/zh_CN/foreman_openscap.po +195 -0
- data/locale/zh_CN/foreman_openscap.po.time_stamp +0 -0
- data/locale/zh_TW/foreman_openscap.edit.po +1736 -0
- data/locale/zh_TW/foreman_openscap.po +195 -0
- data/locale/zh_TW/foreman_openscap.po.time_stamp +0 -0
- data/package.json +7 -7
- data/webpack/components/HostExtentions/HostKebabItems.js +44 -0
- data/webpack/global_index.js +10 -1
- data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js +2 -2
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/HostgroupSelect.js +1 -1
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyFormHelpers.js +3 -3
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShowHelper.js +4 -4
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.test.js +1 -1
- metadata +53 -3
|
@@ -32,6 +32,15 @@ msgid_plural "%s compliance reports by policy"
|
|
|
32
32
|
msgstr[0] ""
|
|
33
33
|
msgstr[1] ""
|
|
34
34
|
|
|
35
|
+
msgid "%s content"
|
|
36
|
+
msgstr ""
|
|
37
|
+
|
|
38
|
+
msgid "%s does not exist, skipping."
|
|
39
|
+
msgstr ""
|
|
40
|
+
|
|
41
|
+
msgid "%s is a directory, expecting file."
|
|
42
|
+
msgstr ""
|
|
43
|
+
|
|
35
44
|
msgid "%s latest report"
|
|
36
45
|
msgstr "%s 最新報告"
|
|
37
46
|
|
|
@@ -80,6 +89,9 @@ msgstr ""
|
|
|
80
89
|
msgid "Are required variables for theforeman.foreman_scap_client present?"
|
|
81
90
|
msgstr ""
|
|
82
91
|
|
|
92
|
+
msgid "Are you sure you want to delete %s?"
|
|
93
|
+
msgstr ""
|
|
94
|
+
|
|
83
95
|
msgid "Array of host IDs"
|
|
84
96
|
msgstr ""
|
|
85
97
|
|
|
@@ -101,6 +113,12 @@ msgstr ""
|
|
|
101
113
|
msgid "Back"
|
|
102
114
|
msgstr "上一頁"
|
|
103
115
|
|
|
116
|
+
msgid "CVEs"
|
|
117
|
+
msgstr ""
|
|
118
|
+
|
|
119
|
+
msgid "Can't find scap-security-guide RPM, are you sure it is installed on your server?"
|
|
120
|
+
msgstr ""
|
|
121
|
+
|
|
104
122
|
msgid "Cancel"
|
|
105
123
|
msgstr "取消"
|
|
106
124
|
|
|
@@ -122,6 +140,9 @@ msgstr ""
|
|
|
122
140
|
msgid "Changed?"
|
|
123
141
|
msgstr "已改變?"
|
|
124
142
|
|
|
143
|
+
msgid "Choose OVAL Content"
|
|
144
|
+
msgstr ""
|
|
145
|
+
|
|
125
146
|
msgid "Choose Tailoring File"
|
|
126
147
|
msgstr ""
|
|
127
148
|
|
|
@@ -164,6 +185,12 @@ msgstr "合規主機"
|
|
|
164
185
|
msgid "Compliant with the policy"
|
|
165
186
|
msgstr "合於政策"
|
|
166
187
|
|
|
188
|
+
msgid "Confirm"
|
|
189
|
+
msgstr ""
|
|
190
|
+
|
|
191
|
+
msgid "Content"
|
|
192
|
+
msgstr ""
|
|
193
|
+
|
|
167
194
|
msgid "Could not find host identified by: %s"
|
|
168
195
|
msgstr ""
|
|
169
196
|
|
|
@@ -176,6 +203,12 @@ msgstr ""
|
|
|
176
203
|
msgid "Could not validate %{file_type}. Error %{error}"
|
|
177
204
|
msgstr ""
|
|
178
205
|
|
|
206
|
+
msgid "Create OVAL Content"
|
|
207
|
+
msgstr ""
|
|
208
|
+
|
|
209
|
+
msgid "Create OVAL Policy"
|
|
210
|
+
msgstr ""
|
|
211
|
+
|
|
179
212
|
msgid "Create OVAL content"
|
|
180
213
|
msgstr ""
|
|
181
214
|
|
|
@@ -191,6 +224,12 @@ msgstr ""
|
|
|
191
224
|
msgid "Create an OVAL Policy"
|
|
192
225
|
msgstr ""
|
|
193
226
|
|
|
227
|
+
msgid "Created at"
|
|
228
|
+
msgstr ""
|
|
229
|
+
|
|
230
|
+
msgid "Custom cron: %s"
|
|
231
|
+
msgstr ""
|
|
232
|
+
|
|
194
233
|
msgid "Dashboard"
|
|
195
234
|
msgstr "控制面板"
|
|
196
235
|
|
|
@@ -206,6 +245,12 @@ msgstr "預設 XCCDF 設定檔"
|
|
|
206
245
|
msgid "Delete"
|
|
207
246
|
msgstr "刪除"
|
|
208
247
|
|
|
248
|
+
msgid "Delete OVAL Content"
|
|
249
|
+
msgstr ""
|
|
250
|
+
|
|
251
|
+
msgid "Delete OVAL Policy"
|
|
252
|
+
msgstr ""
|
|
253
|
+
|
|
209
254
|
msgid "Delete a Policy"
|
|
210
255
|
msgstr ""
|
|
211
256
|
|
|
@@ -248,6 +293,9 @@ msgstr ""
|
|
|
248
293
|
msgid "Description"
|
|
249
294
|
msgstr "說明"
|
|
250
295
|
|
|
296
|
+
msgid "Details"
|
|
297
|
+
msgstr ""
|
|
298
|
+
|
|
251
299
|
msgid "Details for Compliance Policy %s"
|
|
252
300
|
msgstr ""
|
|
253
301
|
|
|
@@ -287,6 +335,12 @@ msgstr ""
|
|
|
287
335
|
msgid "Error!"
|
|
288
336
|
msgstr ""
|
|
289
337
|
|
|
338
|
+
msgid "Every puppet run ensures the foreman_scap_client is configured according to the policy."
|
|
339
|
+
msgstr ""
|
|
340
|
+
|
|
341
|
+
msgid "Expected an array of files to upload, got: %s."
|
|
342
|
+
msgstr ""
|
|
343
|
+
|
|
290
344
|
msgid "Failed"
|
|
291
345
|
msgstr "已失敗"
|
|
292
346
|
|
|
@@ -296,6 +350,12 @@ msgstr "失敗與其它"
|
|
|
296
350
|
msgid "Failed only"
|
|
297
351
|
msgstr "只有失敗"
|
|
298
352
|
|
|
353
|
+
msgid "Failed saving %s:"
|
|
354
|
+
msgstr ""
|
|
355
|
+
|
|
356
|
+
msgid "Failed to create OVAL Policy: %s"
|
|
357
|
+
msgstr ""
|
|
358
|
+
|
|
299
359
|
msgid "Failed to delete %s compliance reports"
|
|
300
360
|
msgstr "刪除 %s 合規報告失敗"
|
|
301
361
|
|
|
@@ -308,6 +368,9 @@ msgstr ""
|
|
|
308
368
|
msgid "Failed to downloaded ARF report in HTML: %s"
|
|
309
369
|
msgstr ""
|
|
310
370
|
|
|
371
|
+
msgid "Failed to fetch content file from %s"
|
|
372
|
+
msgstr ""
|
|
373
|
+
|
|
311
374
|
msgid "Failed to fetch spool status from proxy"
|
|
312
375
|
msgstr ""
|
|
313
376
|
|
|
@@ -321,9 +384,15 @@ msgstr ""
|
|
|
321
384
|
msgid "Failed|F"
|
|
322
385
|
msgstr "F"
|
|
323
386
|
|
|
387
|
+
msgid "File"
|
|
388
|
+
msgstr ""
|
|
389
|
+
|
|
324
390
|
msgid "File Upload"
|
|
325
391
|
msgstr "檔案上傳"
|
|
326
392
|
|
|
393
|
+
msgid "File name"
|
|
394
|
+
msgstr ""
|
|
395
|
+
|
|
327
396
|
msgid "File paths to upload when using \"files\" upload type"
|
|
328
397
|
msgstr ""
|
|
329
398
|
|
|
@@ -472,6 +541,9 @@ msgstr "位置"
|
|
|
472
541
|
msgid "Message"
|
|
473
542
|
msgstr "訊息"
|
|
474
543
|
|
|
544
|
+
msgid "Monthly, day of month: %s"
|
|
545
|
+
msgstr ""
|
|
546
|
+
|
|
475
547
|
msgid "More details"
|
|
476
548
|
msgstr "更多詳細資訊"
|
|
477
549
|
|
|
@@ -484,6 +556,9 @@ msgstr "未曾稽核"
|
|
|
484
556
|
msgid "New Compliance Policy"
|
|
485
557
|
msgstr "新合規政策"
|
|
486
558
|
|
|
559
|
+
msgid "New OVAL Content"
|
|
560
|
+
msgstr ""
|
|
561
|
+
|
|
487
562
|
msgid "New Policy"
|
|
488
563
|
msgstr ""
|
|
489
564
|
|
|
@@ -505,6 +580,12 @@ msgstr "此政策沒有 ARF 報告"
|
|
|
505
580
|
msgid "No CVEs found."
|
|
506
581
|
msgstr ""
|
|
507
582
|
|
|
583
|
+
msgid "No Hostgroups found."
|
|
584
|
+
msgstr ""
|
|
585
|
+
|
|
586
|
+
msgid "No OVAL Content found"
|
|
587
|
+
msgstr ""
|
|
588
|
+
|
|
508
589
|
msgid "No OVAL Contents found."
|
|
509
590
|
msgstr ""
|
|
510
591
|
|
|
@@ -562,6 +643,9 @@ msgstr "此政策沒有報告"
|
|
|
562
643
|
msgid "No reports available"
|
|
563
644
|
msgstr "無報告可用"
|
|
564
645
|
|
|
646
|
+
msgid "No such directory: %s. Please check the path you have provided."
|
|
647
|
+
msgstr ""
|
|
648
|
+
|
|
565
649
|
msgid "No valid policy ID provided"
|
|
566
650
|
msgstr ""
|
|
567
651
|
|
|
@@ -571,6 +655,9 @@ msgstr "無"
|
|
|
571
655
|
msgid "None found"
|
|
572
656
|
msgstr "未找到"
|
|
573
657
|
|
|
658
|
+
msgid "None provided"
|
|
659
|
+
msgstr ""
|
|
660
|
+
|
|
574
661
|
msgid "None!"
|
|
575
662
|
msgstr "無!"
|
|
576
663
|
|
|
@@ -592,6 +679,24 @@ msgstr "月份中的日子,請注意並不是所有月份都有同樣的天數
|
|
|
592
679
|
msgid "OVAL Content"
|
|
593
680
|
msgstr ""
|
|
594
681
|
|
|
682
|
+
msgid "OVAL Content %s successfully created"
|
|
683
|
+
msgstr ""
|
|
684
|
+
|
|
685
|
+
msgid "OVAL Content Source"
|
|
686
|
+
msgstr ""
|
|
687
|
+
|
|
688
|
+
msgid "OVAL Content from URL"
|
|
689
|
+
msgstr ""
|
|
690
|
+
|
|
691
|
+
msgid "OVAL Content from file"
|
|
692
|
+
msgstr ""
|
|
693
|
+
|
|
694
|
+
msgid "OVAL Content is required to create OVAL Policy. Please create one before proceeding."
|
|
695
|
+
msgstr ""
|
|
696
|
+
|
|
697
|
+
msgid "OVAL Content successfully deleted."
|
|
698
|
+
msgstr ""
|
|
699
|
+
|
|
595
700
|
msgid "OVAL Contents"
|
|
596
701
|
msgstr ""
|
|
597
702
|
|
|
@@ -622,12 +727,24 @@ msgstr ""
|
|
|
622
727
|
msgid "OVAL Policy schedule weekday (only if period == \"weekly\")"
|
|
623
728
|
msgstr ""
|
|
624
729
|
|
|
730
|
+
msgid "OVAL Policy succesfully created."
|
|
731
|
+
msgstr ""
|
|
732
|
+
|
|
625
733
|
msgid "OVAL content name"
|
|
626
734
|
msgstr ""
|
|
627
735
|
|
|
736
|
+
msgid "OVAL policy"
|
|
737
|
+
msgstr ""
|
|
738
|
+
|
|
628
739
|
msgid "OVAL policy successfully configured with %s."
|
|
629
740
|
msgstr ""
|
|
630
741
|
|
|
742
|
+
msgid "OVAL policy was successfully deleted."
|
|
743
|
+
msgstr ""
|
|
744
|
+
|
|
745
|
+
msgid "OVAL policy was successfully updated."
|
|
746
|
+
msgstr ""
|
|
747
|
+
|
|
631
748
|
msgid "OVAL scan"
|
|
632
749
|
msgstr ""
|
|
633
750
|
|
|
@@ -646,6 +763,9 @@ msgstr ""
|
|
|
646
763
|
msgid "Organizations"
|
|
647
764
|
msgstr "組織"
|
|
648
765
|
|
|
766
|
+
msgid "Original File Name"
|
|
767
|
+
msgstr ""
|
|
768
|
+
|
|
649
769
|
msgid "Original file name of the OVAL content file"
|
|
650
770
|
msgstr ""
|
|
651
771
|
|
|
@@ -669,6 +789,12 @@ msgstr "已通過"
|
|
|
669
789
|
msgid "Passed|P"
|
|
670
790
|
msgstr "Passed|P"
|
|
671
791
|
|
|
792
|
+
msgid "Period"
|
|
793
|
+
msgstr ""
|
|
794
|
+
|
|
795
|
+
msgid "Permission denied"
|
|
796
|
+
msgstr ""
|
|
797
|
+
|
|
672
798
|
msgid "Please Confirm"
|
|
673
799
|
msgstr "請確認"
|
|
674
800
|
|
|
@@ -729,6 +855,9 @@ msgstr ""
|
|
|
729
855
|
msgid "Policy with id %s not found."
|
|
730
856
|
msgstr ""
|
|
731
857
|
|
|
858
|
+
msgid "Profile"
|
|
859
|
+
msgstr ""
|
|
860
|
+
|
|
732
861
|
msgid "Proxy failed to send a report from spool to Foreman. This indicates a corrupted report format. Report has been moved to directory for storing corrupted files on proxy for later inspection."
|
|
733
862
|
msgstr ""
|
|
734
863
|
|
|
@@ -738,6 +867,9 @@ msgstr "Puppet 類別"
|
|
|
738
867
|
msgid "Rationale"
|
|
739
868
|
msgstr "理由"
|
|
740
869
|
|
|
870
|
+
msgid "Red Hat %s default content"
|
|
871
|
+
msgstr ""
|
|
872
|
+
|
|
741
873
|
msgid "Ref Id"
|
|
742
874
|
msgstr ""
|
|
743
875
|
|
|
@@ -762,12 +894,21 @@ msgstr ""
|
|
|
762
894
|
msgid "Reports"
|
|
763
895
|
msgstr "報告"
|
|
764
896
|
|
|
897
|
+
msgid "Request the following permissions from administrator: %s."
|
|
898
|
+
msgstr ""
|
|
899
|
+
|
|
765
900
|
msgid "Request timed out. Please try increasing Settings -> proxy_request_timeout"
|
|
766
901
|
msgstr ""
|
|
767
902
|
|
|
768
903
|
msgid "Required %{msg_name} %{class} was not found, please ensure it is imported first."
|
|
769
904
|
msgstr ""
|
|
770
905
|
|
|
906
|
+
msgid "Requires %s Puppet class. This will assign the class to the hosts or selected hostgroups."
|
|
907
|
+
msgstr ""
|
|
908
|
+
|
|
909
|
+
msgid "Requires Ansible plugin, %s Ansible role and variables. This will assign the role to the hosts or selected hostgroups."
|
|
910
|
+
msgstr ""
|
|
911
|
+
|
|
771
912
|
msgid "Resource"
|
|
772
913
|
msgstr "資源"
|
|
773
914
|
|
|
@@ -834,6 +975,9 @@ msgstr ""
|
|
|
834
975
|
msgid "Show a Tailoring file"
|
|
835
976
|
msgstr ""
|
|
836
977
|
|
|
978
|
+
msgid "Show a policy's OVAL content"
|
|
979
|
+
msgstr ""
|
|
980
|
+
|
|
837
981
|
msgid "Show a policy's SCAP content"
|
|
838
982
|
msgstr "顯示政策的 SCAP 內容"
|
|
839
983
|
|
|
@@ -900,6 +1044,9 @@ msgstr ""
|
|
|
900
1044
|
msgid "Table of CVEs for OVAL policy"
|
|
901
1045
|
msgstr ""
|
|
902
1046
|
|
|
1047
|
+
msgid "Table of hostgroups for OVAL policy"
|
|
1048
|
+
msgstr ""
|
|
1049
|
+
|
|
903
1050
|
msgid "Tailoring File"
|
|
904
1051
|
msgstr ""
|
|
905
1052
|
|
|
@@ -915,6 +1062,9 @@ msgstr ""
|
|
|
915
1062
|
msgid "Tailoring file profile ID"
|
|
916
1063
|
msgstr ""
|
|
917
1064
|
|
|
1065
|
+
msgid "The %s proxy does not have Openscap feature enabled. Either set correct OpenSCAP Proxy or unset it."
|
|
1066
|
+
msgstr ""
|
|
1067
|
+
|
|
918
1068
|
msgid ""
|
|
919
1069
|
"The Security Content Automation Protocol (SCAP), combines a number of open standards that are used to enumerate software flaws and\n"
|
|
920
1070
|
" configuration issues related to security. "
|
|
@@ -938,12 +1088,30 @@ msgstr ""
|
|
|
938
1088
|
msgid "There are significant differences in deployment options."
|
|
939
1089
|
msgstr ""
|
|
940
1090
|
|
|
1091
|
+
msgid "There was a following error when deleting %(name)s: %(error)s"
|
|
1092
|
+
msgstr ""
|
|
1093
|
+
|
|
1094
|
+
msgid "There was a following error when updating OVAL policy: %s"
|
|
1095
|
+
msgstr ""
|
|
1096
|
+
|
|
1097
|
+
msgid "There's no available report for this host"
|
|
1098
|
+
msgstr ""
|
|
1099
|
+
|
|
941
1100
|
msgid "This feature is temporarily disabled. "
|
|
942
1101
|
msgstr ""
|
|
943
1102
|
|
|
1103
|
+
msgid "This leaves the setup of the foreman_scap_client solely on the user. The policy still needs to be defined in order to link incoming ARF reports."
|
|
1104
|
+
msgstr ""
|
|
1105
|
+
|
|
944
1106
|
msgid "This profile will be used to override the one from scap content"
|
|
945
1107
|
msgstr ""
|
|
946
1108
|
|
|
1109
|
+
msgid "Title"
|
|
1110
|
+
msgstr ""
|
|
1111
|
+
|
|
1112
|
+
msgid "To deploy foreman_scap_client, ansible roles run needs to be triggered manually. Manual run is also required after any change to this policy."
|
|
1113
|
+
msgstr ""
|
|
1114
|
+
|
|
947
1115
|
msgid "Total"
|
|
948
1116
|
msgstr "總數"
|
|
949
1117
|
|
|
@@ -958,9 +1126,15 @@ msgid_plural "Total of %{hosts} hosts"
|
|
|
958
1126
|
msgstr[0] ""
|
|
959
1127
|
msgstr[1] ""
|
|
960
1128
|
|
|
1129
|
+
msgid "Type a hostgroup name..."
|
|
1130
|
+
msgstr ""
|
|
1131
|
+
|
|
961
1132
|
msgid "Type of the upload"
|
|
962
1133
|
msgstr ""
|
|
963
1134
|
|
|
1135
|
+
msgid "URL"
|
|
1136
|
+
msgstr ""
|
|
1137
|
+
|
|
964
1138
|
msgid "URL of the OVAL content file"
|
|
965
1139
|
msgstr ""
|
|
966
1140
|
|
|
@@ -979,6 +1153,12 @@ msgstr "未知的合規狀態"
|
|
|
979
1153
|
msgid "Unknown OVAL status"
|
|
980
1154
|
msgstr ""
|
|
981
1155
|
|
|
1156
|
+
msgid "Unknown error when submitting data, please try again later."
|
|
1157
|
+
msgstr ""
|
|
1158
|
+
|
|
1159
|
+
msgid "Unknown schedule"
|
|
1160
|
+
msgstr ""
|
|
1161
|
+
|
|
982
1162
|
msgid "Update a Policy"
|
|
983
1163
|
msgstr ""
|
|
984
1164
|
|
|
@@ -1036,6 +1216,9 @@ msgstr ""
|
|
|
1036
1216
|
msgid "Was %{model_name} %{name} configured successfully?"
|
|
1037
1217
|
msgstr ""
|
|
1038
1218
|
|
|
1219
|
+
msgid "Weekly, on %s"
|
|
1220
|
+
msgstr ""
|
|
1221
|
+
|
|
1039
1222
|
msgid "XCCDF Profile"
|
|
1040
1223
|
msgstr "XCCDF 設定檔"
|
|
1041
1224
|
|
|
@@ -1054,15 +1237,24 @@ msgstr ""
|
|
|
1054
1237
|
msgid "Yes"
|
|
1055
1238
|
msgstr "是"
|
|
1056
1239
|
|
|
1240
|
+
msgid "You are not authorized to view the page. "
|
|
1241
|
+
msgstr ""
|
|
1242
|
+
|
|
1057
1243
|
msgid "You can specify custom cron line, e.g. \"0 3 * * *\", separate each of 5 values by space"
|
|
1058
1244
|
msgstr "您可指定自訂的 cron 行,例如\"0 3 * * *\",五個數值均由空格隔開"
|
|
1059
1245
|
|
|
1060
1246
|
msgid "You don't seem to have any ARF report. ARF report is a summary of a single scan occurrence on a particular host for a given Compliance Policy."
|
|
1061
1247
|
msgstr ""
|
|
1062
1248
|
|
|
1249
|
+
msgid "can't be blank"
|
|
1250
|
+
msgstr ""
|
|
1251
|
+
|
|
1063
1252
|
msgid "cannot assign to %s, all assigned policies must be deployed in the same way, check 'deploy by' for each assigned policy"
|
|
1064
1253
|
msgstr ""
|
|
1065
1254
|
|
|
1255
|
+
msgid "cause: "
|
|
1256
|
+
msgstr ""
|
|
1257
|
+
|
|
1066
1258
|
msgid "documentation"
|
|
1067
1259
|
msgstr ""
|
|
1068
1260
|
|
|
@@ -1087,6 +1279,9 @@ msgstr "主機"
|
|
|
1087
1279
|
msgid "invalid type %s"
|
|
1088
1280
|
msgstr "無效的類型 %s"
|
|
1089
1281
|
|
|
1282
|
+
msgid "is not a valid cronline"
|
|
1283
|
+
msgstr ""
|
|
1284
|
+
|
|
1090
1285
|
msgid "is not a valid value"
|
|
1091
1286
|
msgstr ""
|
|
1092
1287
|
|
|
File without changes
|
data/package.json
CHANGED
|
@@ -21,19 +21,19 @@
|
|
|
21
21
|
"url": "https://projects.theforeman.org/projects/foreman_openscap/issues"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@theforeman/vendor": ">=
|
|
24
|
+
"@theforeman/vendor": ">= 10.1.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@babel/core": "^7.7.0",
|
|
28
28
|
"@testing-library/dom": "^8.9.1",
|
|
29
29
|
"@testing-library/jest-dom": "^5.11.9",
|
|
30
30
|
"@testing-library/user-event": "^13.2.1",
|
|
31
|
-
"@theforeman/builder": "
|
|
32
|
-
"@theforeman/eslint-plugin-foreman": "
|
|
33
|
-
"@theforeman/find-foreman": "
|
|
34
|
-
"@theforeman/stories": "
|
|
35
|
-
"@theforeman/test": "
|
|
36
|
-
"@theforeman/vendor-dev": "
|
|
31
|
+
"@theforeman/builder": ">= 10.1.0",
|
|
32
|
+
"@theforeman/eslint-plugin-foreman": ">= 10.1.0",
|
|
33
|
+
"@theforeman/find-foreman": ">= 10.1.0",
|
|
34
|
+
"@theforeman/stories": ">= 10.1.0",
|
|
35
|
+
"@theforeman/test": ">= 10.1.0",
|
|
36
|
+
"@theforeman/vendor-dev": ">= 10.1.0",
|
|
37
37
|
"babel-eslint": "^10.0.3",
|
|
38
38
|
"eslint": "^6.7.2",
|
|
39
39
|
"jed": "^1.1.1",
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useSelector } from 'react-redux';
|
|
3
|
+
import { DropdownItem } from '@patternfly/react-core';
|
|
4
|
+
import { SecurityIcon } from '@patternfly/react-icons';
|
|
5
|
+
import { selectAPIResponse } from 'foremanReact/redux/API/APISelectors';
|
|
6
|
+
import { useAPI } from 'foremanReact/common/hooks/API/APIHooks';
|
|
7
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
|
8
|
+
import { HOST_DETAILS_KEY } from 'foremanReact/components/HostDetails/consts';
|
|
9
|
+
import { foremanUrl } from 'foremanReact/common/helpers';
|
|
10
|
+
|
|
11
|
+
const HostKebabItems = () => {
|
|
12
|
+
const { name, id } = useSelector(state =>
|
|
13
|
+
selectAPIResponse(state, HOST_DETAILS_KEY)
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
const ARFReportsAPIPath = name
|
|
17
|
+
? `/api/v2/compliance/arf_reports?search=host+%3D+${name}`
|
|
18
|
+
: null;
|
|
19
|
+
|
|
20
|
+
const {
|
|
21
|
+
response: { results = [] },
|
|
22
|
+
} = useAPI('get', ARFReportsAPIPath);
|
|
23
|
+
|
|
24
|
+
const compliancePath = foremanUrl(`/compliance/hosts/${id}`);
|
|
25
|
+
|
|
26
|
+
const isDisabled = results.length === 0;
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<DropdownItem
|
|
30
|
+
ouiaId="compliance-dropdown-item"
|
|
31
|
+
key="compliance-report"
|
|
32
|
+
icon={<SecurityIcon />}
|
|
33
|
+
href={compliancePath}
|
|
34
|
+
target="_blank"
|
|
35
|
+
rel="noreferrer"
|
|
36
|
+
isAriaDisabled={isDisabled}
|
|
37
|
+
tooltip={isDisabled && __("There's no available report for this host")}
|
|
38
|
+
>
|
|
39
|
+
{__('Compliance')}
|
|
40
|
+
</DropdownItem>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export default HostKebabItems;
|
data/webpack/global_index.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import { registerRoutes } from 'foremanReact/routes/RoutingService';
|
|
2
|
-
|
|
3
|
+
import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
|
|
4
|
+
import HostKebabItems from './components/HostExtentions/HostKebabItems';
|
|
3
5
|
import routes from './routes/routes';
|
|
4
6
|
|
|
5
7
|
registerRoutes('foreman_openscap', routes);
|
|
8
|
+
|
|
9
|
+
addGlobalFill(
|
|
10
|
+
'host-details-kebab',
|
|
11
|
+
`openscap-kebab-items`,
|
|
12
|
+
<HostKebabItems key="openscap-host-kebab" />,
|
|
13
|
+
400
|
|
14
|
+
);
|
|
@@ -54,7 +54,7 @@ const OvalContentsNew = props => {
|
|
|
54
54
|
{formProps => (
|
|
55
55
|
<PfForm>
|
|
56
56
|
<FormikField
|
|
57
|
-
label=
|
|
57
|
+
label={__('Name')}
|
|
58
58
|
name="name"
|
|
59
59
|
component={TextField}
|
|
60
60
|
isRequired
|
|
@@ -89,7 +89,7 @@ const OvalContentsNew = props => {
|
|
|
89
89
|
/>
|
|
90
90
|
</FormGroup>
|
|
91
91
|
{!fileFromUrl ? (
|
|
92
|
-
<FormGroup label=
|
|
92
|
+
<FormGroup label={__('File')} isRequired>
|
|
93
93
|
<FileUpload
|
|
94
94
|
value={file}
|
|
95
95
|
filename={file ? file.name : ''}
|
|
@@ -104,7 +104,7 @@ const HostgroupSelect = ({
|
|
|
104
104
|
<Select
|
|
105
105
|
variant={SelectVariant.typeaheadMulti}
|
|
106
106
|
typeAheadAriaLabel="Select a hostgroup"
|
|
107
|
-
placeholderText=
|
|
107
|
+
placeholderText={__('Type a hostgroup name...')}
|
|
108
108
|
onToggle={() => setIsOpen(!isOpen)}
|
|
109
109
|
onSelect={onSelect}
|
|
110
110
|
onClear={onClear}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Yup from 'yup';
|
|
2
|
-
import { translate as __ } from 'foremanReact/common/I18n';
|
|
2
|
+
import { translate as __, sprintf } from 'foremanReact/common/I18n';
|
|
3
3
|
|
|
4
4
|
import { ovalPoliciesPath } from '../../../helpers/pathsHelper';
|
|
5
5
|
import { decodeId, decodeModelId } from '../../../helpers/globalIdHelper';
|
|
@@ -51,7 +51,7 @@ export const onSubmit = (
|
|
|
51
51
|
history.push(ovalPoliciesPath);
|
|
52
52
|
showToast({
|
|
53
53
|
type: 'success',
|
|
54
|
-
message: 'OVAL Policy succesfully created.',
|
|
54
|
+
message: __('OVAL Policy succesfully created.'),
|
|
55
55
|
});
|
|
56
56
|
} else {
|
|
57
57
|
actions.setSubmitting(false);
|
|
@@ -83,7 +83,7 @@ export const onSubmit = (
|
|
|
83
83
|
const onError = response => {
|
|
84
84
|
showToast({
|
|
85
85
|
type: 'error',
|
|
86
|
-
message:
|
|
86
|
+
message: sprintf(__('Failed to create OVAL Policy: %s'), response.error),
|
|
87
87
|
});
|
|
88
88
|
actions.setSubmitting(false);
|
|
89
89
|
};
|
|
@@ -6,13 +6,13 @@ import { newJobPath } from '../../../helpers/pathsHelper';
|
|
|
6
6
|
export const policySchedule = policy => {
|
|
7
7
|
switch (policy.period) {
|
|
8
8
|
case 'weekly':
|
|
9
|
-
return
|
|
9
|
+
return sprintf(__('Weekly, on %s'), policy.weekday);
|
|
10
10
|
case 'monthly':
|
|
11
|
-
return
|
|
11
|
+
return sprintf(__('Monthly, day of month: %s'), policy.dayOfMonth);
|
|
12
12
|
case 'custom':
|
|
13
|
-
return
|
|
13
|
+
return sprintf(__('Custom cron: %s'), policy.cronLine);
|
|
14
14
|
default:
|
|
15
|
-
return 'Unknown schedule';
|
|
15
|
+
return __('Unknown schedule');
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
|
|
@@ -53,7 +53,7 @@ describe('OvalPoliciesShow', () => {
|
|
|
53
53
|
'.pf-c-tabs__item.pf-m-current'
|
|
54
54
|
);
|
|
55
55
|
expect(within(activeTabHeader).getByText('Details')).toBeInTheDocument();
|
|
56
|
-
userEvent.click(screen.getByRole('
|
|
56
|
+
userEvent.click(screen.getByRole('tab', { name: 'CVEs' }));
|
|
57
57
|
expect(pushMock).toHaveBeenCalledWith(
|
|
58
58
|
resolvePath(ovalPoliciesShowPath, {
|
|
59
59
|
':id': ovalPolicyId,
|