foreman_openscap 0.4.3 → 0.5.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/load_report.js +1 -1
- data/app/assets/javascripts/foreman_openscap/policy_edit.js +0 -2
- data/app/controllers/api/v2/compliance/arf_reports_controller.rb +7 -22
- data/app/controllers/api/v2/compliance/policies_controller.rb +5 -5
- data/app/controllers/api/v2/compliance/scap_contents_controller.rb +3 -3
- data/app/controllers/arf_reports_controller.rb +62 -0
- data/app/controllers/{scaptimony_dashboard_controller.rb → compliance_dashboard_controller.rb} +1 -1
- data/app/controllers/compliance_hosts_controller.rb +5 -0
- data/app/controllers/{scaptimony_policies_controller.rb → policies_controller.rb} +13 -13
- data/app/controllers/{scaptimony_policy_dashboard_controller.rb → policy_dashboard_controller.rb} +3 -3
- data/app/controllers/{scaptimony_scap_contents_controller.rb → scap_contents_controller.rb} +11 -11
- data/app/helpers/{scaptimony_report_dashboard_helper.rb → arf_report_dashboard_helper.rb} +3 -5
- data/app/helpers/arf_reports_helper.rb +21 -0
- data/app/helpers/compliance_hosts_helper.rb +25 -0
- data/app/helpers/concerns/foreman_openscap/hosts_helper_extensions.rb +2 -32
- data/app/helpers/{scaptimony_policies_helper.rb → policies_helper.rb} +6 -2
- data/app/helpers/{scaptimony_policy_dashboard_helper.rb → policy_dashboard_helper.rb} +8 -8
- data/app/lib/proxy_api/available_proxy.rb +26 -0
- data/app/lib/proxy_api/openscap.rb +40 -0
- data/app/mailers/foreman_openscap/policy_mailer.rb +42 -0
- data/app/models/concerns/foreman_openscap/compliance_status_scoped_search.rb +91 -0
- data/app/models/concerns/foreman_openscap/host_extensions.rb +73 -17
- data/app/models/concerns/foreman_openscap/hostgroup_extensions.rb +3 -5
- data/app/models/foreman_openscap/arf_report.rb +165 -0
- data/app/models/foreman_openscap/asset.rb +27 -0
- data/app/models/foreman_openscap/asset_policy.rb +6 -0
- data/app/models/foreman_openscap/compliance_status.rb +50 -0
- data/app/models/{concerns/foreman_openscap/policy_extensions.rb → foreman_openscap/policy.rb} +72 -45
- data/app/models/foreman_openscap/policy_arf_report.rb +8 -0
- data/app/models/foreman_openscap/policy_revision.rb +6 -0
- data/app/models/foreman_openscap/scap_content.rb +112 -0
- data/app/models/foreman_openscap/scap_content_profile.rb +6 -0
- data/app/overrides/hosts/overview/host_compliance_status.rb +4 -4
- data/app/services/foreman_openscap/arf_report_status_calculator.rb +45 -0
- data/app/services/{scaptimony → foreman_openscap}/host_report_dashboard/data.rb +12 -6
- data/app/services/{scaptimony → foreman_openscap}/policy_dashboard/data.rb +5 -5
- data/app/services/{scaptimony → foreman_openscap}/report_dashboard/data.rb +4 -4
- data/app/views/api/v2/compliance/policies/create.json.rabl +3 -0
- data/app/views/{scaptimony_arf_reports → arf_reports}/_list.html.erb +4 -4
- data/app/views/arf_reports/_metrics.html.erb +37 -0
- data/app/views/arf_reports/_output.html.erb +23 -0
- data/app/views/{scaptimony_arf_reports → arf_reports}/index.html.erb +0 -0
- data/app/views/arf_reports/show.html.erb +14 -0
- data/app/views/{scaptimony_arf_reports/show.html.erb → arf_reports/show_html.html.erb} +2 -3
- data/app/views/compliance_hosts/_compliance_status.erb +6 -0
- data/app/views/{scaptimony_hosts → compliance_hosts}/show.html.erb +9 -2
- data/app/views/dashboard/{_foreman_openscap_host_reports_widget.html.erb → _compliance_host_reports_widget.html.erb} +3 -3
- data/app/views/dashboard/{_foreman_openscap_reports_breakdown_widget.html.erb → _compliance_reports_breakdown_widget.html.erb} +1 -1
- data/app/views/foreman_openscap/policy_mailer/_dashboard.erb +21 -0
- data/app/views/foreman_openscap/policy_mailer/_hosts.erb +44 -0
- data/app/views/foreman_openscap/policy_mailer/_list.erb +10 -0
- data/app/views/foreman_openscap/policy_mailer/_policy.erb +7 -0
- data/app/views/foreman_openscap/policy_mailer/policy_summary.erb +19 -0
- data/app/views/{scaptimony_policies → policies}/_form.html.erb +2 -8
- data/app/views/{scaptimony_policies → policies}/_list.html.erb +5 -5
- data/app/views/policies/_scap_content_results.html.erb +3 -0
- data/app/views/policies/create.html.erb +2 -0
- data/app/views/{scaptimony_policies → policies}/disassociate_multiple_hosts.html.erb +2 -2
- data/app/views/{scaptimony_policies → policies}/edit.html.erb +0 -0
- data/app/views/{scaptimony_policies → policies}/index.html.erb +1 -1
- data/app/views/policies/new.html.erb +2 -0
- data/app/views/{scaptimony_policies → policies}/select_multiple_hosts.html.erb +2 -2
- data/app/views/{scaptimony_policies → policies}/show.html.erb +1 -1
- data/app/views/{scaptimony_policies → policies}/steps/_create_policy_form.html.erb +0 -0
- data/app/views/{scaptimony_policies → policies}/steps/_hostgroups_form.html.erb +0 -0
- data/app/views/{scaptimony_policies → policies}/steps/_locations_form.html.erb +0 -0
- data/app/views/{scaptimony_policies → policies}/steps/_organizations_form.html.erb +0 -0
- data/app/views/policies/steps/_scap_content_form.html.erb +9 -0
- data/app/views/{scaptimony_policies → policies}/steps/_schedule_form.html.erb +1 -1
- data/app/views/{scaptimony_policies → policies}/steps/_step_form.html.erb +3 -3
- data/app/views/{scaptimony_policies → policies}/welcome.html.erb +2 -2
- data/app/views/{scaptimony_policy_dashboard → policy_dashboard}/_policy_chart_widget.html.erb +0 -0
- data/app/views/{scaptimony_policy_dashboard → policy_dashboard}/_policy_reports.html.erb +2 -2
- data/app/views/{scaptimony_policy_dashboard → policy_dashboard}/_policy_status_widget.html.erb +3 -3
- data/app/views/{scaptimony_policy_dashboard → policy_dashboard}/index.html.erb +0 -0
- data/app/views/{scaptimony_scap_contents → scap_contents}/_form.html.erb +5 -6
- data/app/views/{scaptimony_scap_contents → scap_contents}/_list.html.erb +3 -3
- data/app/views/{scaptimony_scap_contents → scap_contents}/edit.html.erb +0 -0
- data/app/views/{scaptimony_scap_contents → scap_contents}/index.html.erb +1 -1
- data/app/views/{scaptimony_scap_contents → scap_contents}/new.html.erb +0 -0
- data/app/views/{scaptimony_scap_contents → scap_contents}/welcome.html.erb +2 -2
- data/config/routes.rb +15 -11
- data/db/migrate/20141013172051_create_scaptimony_policies.rb +9 -0
- data/db/migrate/20141014105333_create_scaptimony_assets.rb +10 -0
- data/db/migrate/20141015092642_create_scaptimony_arf_reports.rb +13 -0
- data/db/migrate/20141015115511_add_arf_report_unique_constraint.rb +6 -0
- data/db/migrate/20141104164201_create_scaptimony_scap_contents.rb +7 -0
- data/db/migrate/20141104171545_create_scaptimony_policy_revisions.rb +14 -0
- data/db/migrate/20141105174625_add_description_to_scaptimony_policy_revisions.rb +5 -0
- data/db/migrate/20141105174834_add_columns_to_scaptimony_policies.rb +12 -0
- data/db/migrate/20141107091756_add_columns_to_scaptimony_scap_contents.rb +8 -0
- data/db/migrate/20141111104519_add_constraint_to_scaptimony_scap_contents.rb +5 -0
- data/db/migrate/20141113221054_create_scaptimony_scap_content_profiles.rb +12 -0
- data/db/migrate/20141116170632_remove_xccdf_profile_from_scaptimony_policies.rb +5 -0
- data/db/migrate/20141116171305_add_profile_to_scaptimony_policies.rb +6 -0
- data/db/migrate/20141118142954_add_constraint_to_scaptimony_policies.rb +5 -0
- data/db/migrate/20141119164918_create_scaptimony_xccdf_results.rb +8 -0
- data/db/migrate/20141119175434_create_scaptimony_xccdf_rules.rb +8 -0
- data/db/migrate/20141119182606_create_scaptimony_xccdf_rule_results.rb +9 -0
- data/db/migrate/20141121120326_create_scaptimony_arf_report_breakdowns.rb +24 -0
- data/db/migrate/20141121164042_replace_arf_report_breakdown_view.rb +25 -0
- data/db/migrate/20141206211151_create_scaptimony_assets_policies.rb +9 -0
- data/db/migrate/20141214112917_add_scap_file_to_scap_content.rb +5 -0
- data/db/migrate/20141216154502_rename_scaptimony_asset_policies.rb +5 -0
- data/db/migrate/20150111085317_polymorph_asset.rb +8 -0
- data/db/migrate/20150112152944_create_scaptimony_arf_report_raws.rb +10 -0
- data/db/migrate/20150114210634_rename_scaptimony_arf_report_raw_raw.rb +5 -0
- data/db/migrate/20150115155947_add_scaptimony_scap_content_digest.rb +21 -0
- data/db/migrate/20150116083129_add_day_of_month_and_cron_line_to_scaptimony_policy.rb +6 -0
- data/db/migrate/20150821100137_migrate_from_scaptimony.rb +59 -0
- data/db/migrate/20150827123826_remove_scaptimony_permissions.rb +21 -0
- data/db/migrate/20150925124959_create_policy_arf_reports.rb +13 -0
- data/db/migrate/20150929124853_add_result_to_logs.rb +9 -0
- data/db/migrate/20150929152345_move_arf_reports_to_reports_table.rb +179 -0
- data/db/migrate/20151023131950_link_arf_report_directly_to_host.rb +17 -0
- data/db/seeds.d/openscap_policy_notification.rb +9 -0
- data/lib/foreman_openscap/bulk_upload.rb +3 -1
- data/lib/foreman_openscap/engine.rb +53 -42
- data/lib/foreman_openscap/helper.rb +8 -0
- data/lib/foreman_openscap/version.rb +1 -1
- data/lib/tasks/foreman_openscap_tasks.rake +14 -0
- data/test/factories/arf_report_factory.rb +9 -6
- data/test/factories/asset_factory.rb +1 -1
- data/test/factories/compliance_host_factory.rb +9 -0
- data/test/factories/compliance_log_factory.rb +11 -0
- data/test/factories/policy_arf_report_factory.rb +6 -0
- data/test/factories/policy_factory.rb +3 -2
- data/test/factories/scap_content_related.rb +2 -2
- data/test/functional/api/v2/compliance/arf_reports_controller_test.rb +4 -3
- data/test/functional/api/v2/compliance/policies_controller_test.rb +2 -2
- data/test/functional/api/v2/compliance/scap_contents_controller_test.rb +3 -1
- data/test/lib/foreman_openscap/bulk_upload_test.rb +1 -1
- data/test/test_plugin_helper.rb +30 -0
- data/test/unit/arf_report_status_calculator_test.rb +11 -0
- data/test/unit/arf_report_test.rb +148 -0
- data/test/unit/compliance_status_test.rb +71 -0
- data/test/unit/openscap_host_test.rb +38 -7
- data/test/unit/policy_mailer_test.rb +38 -0
- data/test/unit/scap_content_test.rb +32 -0
- metadata +130 -74
- data/app/controllers/scaptimony_arf_reports_controller.rb +0 -34
- data/app/controllers/scaptimony_hosts_controller.rb +0 -5
- data/app/models/concerns/foreman_openscap/arf_report_extensions.rb +0 -50
- data/app/models/concerns/foreman_openscap/asset_extensions.rb +0 -34
- data/app/models/concerns/foreman_openscap/scap_content_extensions.rb +0 -40
- data/app/overrides/hosts/index/host_arf_report.rb +0 -5
- data/app/views/scaptimony_arf_reports/_host_report.html.erb +0 -8
- data/app/views/scaptimony_hosts/_host_status.html.erb +0 -17
- data/app/views/scaptimony_policies/_scap_content_results.html.erb +0 -7
- data/app/views/scaptimony_policies/create.html.erb +0 -2
- data/app/views/scaptimony_policies/new.html.erb +0 -2
- data/app/views/scaptimony_policies/steps/_scap_content_form.html.erb +0 -17
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<%= javascript 'foreman_openscap/policy_edit' %>
|
|
2
2
|
<%= javascript 'foreman_openscap/period_selector' %>
|
|
3
3
|
<%= form_for @policy,
|
|
4
|
-
:url => (@policy.id? ?
|
|
4
|
+
:url => (@policy.id? ? policy_path(:id => @policy.id) : policies_path) do |f| %>
|
|
5
5
|
<%= base_errors_for @policy %>
|
|
6
6
|
|
|
7
7
|
<ul class="nav nav-tabs" data-tabs="tabs">
|
|
@@ -26,18 +26,12 @@
|
|
|
26
26
|
<span id="scap_content_profile_select">
|
|
27
27
|
<%= scap_content_profile_selector(f) %>
|
|
28
28
|
</span>
|
|
29
|
-
<div class="alert alert-info">
|
|
30
|
-
<%= icon_text("info-sign", _('Notice: Ensure the selected SCAP content exists on your hosts.')) %>
|
|
31
|
-
<div id="file-location">
|
|
32
|
-
<b><%= _('SCAP content file should be /var/lib/openscap/content/%s.xml on your clients.') % @policy.scap_content.digest %></b>
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
29
|
</div>
|
|
36
30
|
<div class="tab-pane" id="scap_schedule">
|
|
37
31
|
<%= select_f(f, :period, %w[Weekly Monthly Custom], :downcase, :to_s,
|
|
38
32
|
{ :include_blank => _('Choose period') },
|
|
39
33
|
{ :onchange => 'period_selected(this)' }) %>
|
|
40
|
-
<%= select_f(f, :weekday,
|
|
34
|
+
<%= select_f(f, :weekday, days_of_week_hash, :first, :last, :include_blank => _('Choose weekday')) %>
|
|
41
35
|
<%= text_f(f, :day_of_month, :help_inline => _('Number of a day in month, note that not all months have same count of days')) %>
|
|
42
36
|
<%= text_f(f, :cron_line, :help_inline => _('You can specify custom cron line, e.g. "0 3 * * *", separate each of 5 values by space')) %>
|
|
43
37
|
</div>
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
<% for policy in @policies %>
|
|
9
9
|
<tr>
|
|
10
10
|
<td>
|
|
11
|
-
<%= link_to_if_authorized(policy.name.to_s,
|
|
11
|
+
<%= link_to_if_authorized(policy.name.to_s, hash_for_policy_dashboard_policy_path(:id => policy.id)) %>
|
|
12
12
|
</td>
|
|
13
13
|
<td>
|
|
14
14
|
<% if !policy.scap_content.nil? %>
|
|
15
15
|
<%= link_to_if_authorized policy.scap_content.title,
|
|
16
|
-
|
|
16
|
+
hash_for_edit_scap_content_path(:id => policy.scap_content) %>
|
|
17
17
|
<% end %>
|
|
18
18
|
</td>
|
|
19
19
|
<td>
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
</td>
|
|
22
22
|
<td>
|
|
23
23
|
<%= action_buttons(
|
|
24
|
-
display_link_if_authorized(_("Show Guide"),
|
|
25
|
-
display_link_if_authorized(_("Edit"),
|
|
26
|
-
display_delete_if_authorized(
|
|
24
|
+
display_link_if_authorized(_("Show Guide"), hash_for_policy_path(:id => policy.id)),
|
|
25
|
+
display_link_if_authorized(_("Edit"), hash_for_edit_policy_path(:id => policy.id)),
|
|
26
|
+
display_delete_if_authorized(hash_for_policy_path(:id => policy.id),
|
|
27
27
|
:confirm => _("Delete compliance policy %s with all the reports?") % policy.name)
|
|
28
28
|
) %>
|
|
29
29
|
</td>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<%= render 'hosts/selected_hosts', :hosts => @hosts %>
|
|
2
2
|
<%= form_for :policy,
|
|
3
|
-
:url =>
|
|
3
|
+
:url => remove_policy_from_multiple_hosts_policies_path(:host_ids => params[:host_ids]) do |f| %>
|
|
4
4
|
<%= selectable_f f, :id, [[_('Select Compliance Policy'), 'disabled'],
|
|
5
|
-
] +
|
|
5
|
+
] + ForemanOpenscap::Policy.all.map{|e| [e.name, e.id]},{},
|
|
6
6
|
:onchange => 'toggle_multiple_ok_button(this)' %>
|
|
7
7
|
<% end %>
|
|
File without changes
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<% title _("Compliance Policies") %>
|
|
3
3
|
|
|
4
4
|
<% title_actions(
|
|
5
|
-
display_link_if_authorized(_("New Compliance Policy"),
|
|
5
|
+
display_link_if_authorized(_("New Compliance Policy"), hash_for_new_policy_path),
|
|
6
6
|
link_to(_("Help"), :action => "welcome")
|
|
7
7
|
) %>
|
|
8
8
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<%= render 'hosts/selected_hosts', :hosts => @hosts %>
|
|
2
2
|
|
|
3
3
|
<%= form_for :policy,
|
|
4
|
-
:url =>
|
|
4
|
+
:url => update_multiple_hosts_policies_path(:host_ids => params[:host_ids]) do |f| %>
|
|
5
5
|
<%= selectable_f f, :id, [[_("Select Compliance Policy"), "disabled"],
|
|
6
|
-
] +
|
|
6
|
+
] + ForemanOpenscap::Policy.all.map{|e| [e.name, e.id]},{},
|
|
7
7
|
:onchange => "toggle_multiple_ok_button(this)" %>
|
|
8
8
|
<% end %>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
<div class="row">
|
|
2
|
-
<iframe style="min-height: 800px" height="100%" width="100%" frameborder="0" src="<%=
|
|
2
|
+
<iframe style="min-height: 800px" height="100%" width="100%" frameborder="0" src="<%= parse_policy_path(@policy) %>"></iframe>
|
|
3
3
|
</div>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<div class="tab-pane <%= show_partial_wizard(step) %>" id="scap_content">
|
|
2
|
+
<%= wizard_header @policy.step_index, *@policy.steps %>
|
|
3
|
+
|
|
4
|
+
<%= scap_content_selector(f) %>
|
|
5
|
+
<span id="scap_content_profile_select">
|
|
6
|
+
<%= scap_content_profile_selector(f) %>
|
|
7
|
+
</span>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<%= select_f(f, :period, %w[Weekly Monthly Custom], :downcase, :to_s,
|
|
6
6
|
{ :include_blank => _('Choose period') },
|
|
7
7
|
{ :onchange => 'period_selected(this)' }) %>
|
|
8
|
-
<%= select_f(f, :weekday,
|
|
8
|
+
<%= select_f(f, :weekday, days_of_week_hash, :first, :last, :include_blank => _('Choose weekday')) %>
|
|
9
9
|
<%= text_f(f, :day_of_month, :help_inline => _('Number of a day in month, note that not all months have same count of days')) %>
|
|
10
10
|
<%= text_f(f, :cron_line, :help_inline => _('You can specify custom cron line, e.g. "0 3 * * *", separate each of 5 values by space')) %>
|
|
11
11
|
</div>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<%= javascript 'foreman_openscap/policy_edit' %>
|
|
2
2
|
<%= stylesheet 'foreman_openscap/policy' %>
|
|
3
3
|
<%= form_for @policy,
|
|
4
|
-
:url => (@policy.id? ?
|
|
4
|
+
:url => (@policy.id? ? policy_path(:id => @policy.id) : policies_path) do |f| %>
|
|
5
5
|
<%= base_errors_for @policy %>
|
|
6
6
|
<%= f.hidden_field(:current_step, :value => @policy.next_step) unless @policy.current_step.blank? %>
|
|
7
7
|
<% @policy.steps.each do | step | %>
|
|
8
|
-
<%= render :partial => "
|
|
8
|
+
<%= render :partial => "policies/steps/#{step.downcase.tr(' ', '_')}_form", :locals => {:f => f, :step => step} %>
|
|
9
9
|
<% end %>
|
|
10
10
|
<%= submit_or_cancel_policy(f, (_('Next') unless @policy.last_step?) ) %>
|
|
11
|
-
<% end %>
|
|
11
|
+
<% end %>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<% title_actions display_link_if_authorized(_("New Compliance policy"),
|
|
1
|
+
<% title_actions display_link_if_authorized(_("New Compliance policy"), hash_for_new_policy_path) %>
|
|
2
2
|
|
|
3
3
|
<% title _("Compliance policy configuration") %>
|
|
4
4
|
<div id="welcome">
|
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
</p>
|
|
10
10
|
<p>
|
|
11
11
|
<%= (_('In Foreman, a compliance policy checklist is defined via %s, once SCAP content is present, you can create a policy,
|
|
12
|
-
assign select hostgroups and schedule to run.') % link_to(_('SCAP content'),
|
|
12
|
+
assign select hostgroups and schedule to run.') % link_to(_('SCAP content'), scap_contents_path)).html_safe %>
|
|
13
13
|
</p>
|
|
14
14
|
</div>
|
data/app/views/{scaptimony_policy_dashboard → policy_dashboard}/_policy_chart_widget.html.erb
RENAMED
|
File without changes
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
<% for arf_report in @policy.arf_reports.latest %>
|
|
11
11
|
<tr>
|
|
12
12
|
<td><%= name_column(arf_report.host) %></td>
|
|
13
|
-
<td><%= _("%s ago") % time_ago_in_words(arf_report.
|
|
13
|
+
<td><%= _("%s ago") % time_ago_in_words(arf_report.reported_at) %></td>
|
|
14
14
|
<td><%= report_arf_column(arf_report.passed, "label-info") %></th>
|
|
15
15
|
<td><%= report_arf_column(arf_report.failed, "label-danger") %></th>
|
|
16
16
|
<td><%= report_arf_column(arf_report.othered, "label-warning") %></th>
|
|
17
17
|
<td>
|
|
18
18
|
<%= action_buttons(
|
|
19
|
-
link_to(_("View Report"),
|
|
19
|
+
link_to(_("View Report"), hash_for_arf_report_path(:id => arf_report.id))
|
|
20
20
|
) %>
|
|
21
21
|
</td>
|
|
22
22
|
</tr>
|
data/app/views/{scaptimony_policy_dashboard → policy_dashboard}/_policy_status_widget.html.erb
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<div id='status-table'>
|
|
2
2
|
<h4 class="header"><%= _('Hosts Breakdown') %></h4>
|
|
3
3
|
<ul>
|
|
4
|
-
<%= status_link _('Compliant with the policy'), :compliant_hosts,
|
|
5
|
-
<%= status_link _('Not compliant with the policy'), :incompliant_hosts,
|
|
6
|
-
<%= status_link _('Inconclusive results'), :inconclusive_hosts,
|
|
4
|
+
<%= status_link _('Compliant with the policy'), :compliant_hosts, arf_reports_path(:search => "comply_with = #{@policy.name}") %>
|
|
5
|
+
<%= status_link _('Not compliant with the policy'), :incompliant_hosts, arf_reports_path(:search => "not_comply_with = #{@policy.name}") %>
|
|
6
|
+
<%= status_link _('Inconclusive results'), :inconclusive_hosts, arf_reports_path(:search => " inconclusive_with = #{@policy.name}") %>
|
|
7
7
|
<%= status_link _('Never audited'), :report_missing, hosts_path(:search => "compliance_report_missing_for = #{@policy.name}") %>
|
|
8
8
|
<h4 class="total">
|
|
9
9
|
<%= link_to(_("Total hosts: %s") % @report[:assigned_hosts], hosts_path(:search => "compliance_policy = #{@policy.name}")) %>
|
|
File without changes
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<%= form_for @
|
|
2
|
-
:url => (@
|
|
3
|
-
|
|
1
|
+
<%= form_for @scap_content,
|
|
2
|
+
:url => (@scap_content.id? ?
|
|
3
|
+
scap_content_path(:id => @scap_content.id) : scap_contents_path),
|
|
4
4
|
:html => { :multipart => true } do |f| %>
|
|
5
5
|
|
|
6
|
-
<%= base_errors_for @
|
|
6
|
+
<%= base_errors_for @scap_content %>
|
|
7
7
|
|
|
8
8
|
<ul class="nav nav-tabs" data-tabs="tabs">
|
|
9
9
|
<li class="active"><a href="#primary" data-toggle="tab"><%= _("File Upload") %></a></li>
|
|
@@ -18,9 +18,8 @@
|
|
|
18
18
|
<div class="tab-pane active" id="primary">
|
|
19
19
|
<%= text_f(f, :title) %>
|
|
20
20
|
<%= file_field_f f, :scap_file, :help_block => _("Upload SCAP DataStream file") %>
|
|
21
|
-
<p class="alert alert-info"><%= (_('Notice: You need to %s OpenSCAP on your hosts, and upload this content to the hosts as well.') % link_to(_('install'), 'http://www.open-scap.org/page/Documentation#Installation', :target => '_blank')).html_safe %></p>
|
|
22
21
|
</div>
|
|
23
|
-
<%= render 'taxonomies/loc_org_tabs', :f => f, :obj => @
|
|
22
|
+
<%= render 'taxonomies/loc_org_tabs', :f => f, :obj => @scap_content %>
|
|
24
23
|
<%= submit_or_cancel f %>
|
|
25
24
|
</div>
|
|
26
25
|
<% end %>
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
</td>
|
|
19
19
|
<td>
|
|
20
20
|
<%= action_buttons(
|
|
21
|
-
display_link_if_authorized(_("Edit"),
|
|
22
|
-
display_link_if_authorized(_("Download"),
|
|
23
|
-
display_delete_if_authorized(
|
|
21
|
+
display_link_if_authorized(_("Edit"), hash_for_edit_scap_content_path(:id => content.id)),
|
|
22
|
+
display_link_if_authorized(_("Download"), hash_for_scap_content_path(:id => content.id)),
|
|
23
|
+
display_delete_if_authorized(hash_for_scap_content_path(:id => content.id),
|
|
24
24
|
:confirm => _("Delete compliance policy %s with all the reports?") % content.title)
|
|
25
25
|
) %>
|
|
26
26
|
</td>
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% title _("SCAP Contents") %>
|
|
2
2
|
|
|
3
|
-
<% title_actions(display_link_if_authorized(_("Upload New SCAP Content"),
|
|
3
|
+
<% title_actions(display_link_if_authorized(_("Upload New SCAP Content"), hash_for_new_scap_content_path),
|
|
4
4
|
link_to(_("Help"), :action => "welcome")) %>
|
|
5
5
|
|
|
6
6
|
<%= render :partial => 'list' %>
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<% title_actions display_link_if_authorized(_("New SCAP content"),
|
|
1
|
+
<% title_actions display_link_if_authorized(_("New SCAP content"), hash_for_new_scap_content_path) %>
|
|
2
2
|
|
|
3
3
|
<% title _("SCAP content configuration") %>
|
|
4
4
|
<div id="welcome">
|
|
@@ -10,6 +10,6 @@
|
|
|
10
10
|
</p>
|
|
11
11
|
<p>
|
|
12
12
|
<%= (_("In Foreman, scap_contents represent the SCAP security guides on your hosts, and create SCAP profiles for you to assign to hosts / hostgroups
|
|
13
|
-
via %s") % link_to('compliance policies',
|
|
13
|
+
via %s") % link_to('compliance policies', policies_path)).html_safe %>
|
|
14
14
|
</p>
|
|
15
15
|
</div>
|
data/config/routes.rb
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
Rails.application.routes.draw do
|
|
2
2
|
|
|
3
3
|
scope '/compliance' do
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
|
|
5
|
+
resources :arf_reports, :only => [:index, :show, :destroy] do
|
|
6
6
|
member do
|
|
7
|
-
|
|
7
|
+
get 'show_html'
|
|
8
|
+
get 'parse_html'
|
|
9
|
+
get 'parse_bzip'
|
|
8
10
|
end
|
|
9
11
|
collection do
|
|
10
12
|
get 'auto_complete_search'
|
|
11
13
|
end
|
|
12
14
|
end
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
match 'dashboard', :to => 'compliance_dashboard#index', :as => "compliance_dashboard"
|
|
17
|
+
|
|
18
|
+
resources :policies, :only => [:index, :new, :show, :create, :edit, :update, :destroy] do
|
|
16
19
|
member do
|
|
17
|
-
match 'parse', :to => '
|
|
18
|
-
match 'dashboard', :to => '
|
|
20
|
+
# match 'parse', :to => 'policies#parse'
|
|
21
|
+
match 'dashboard', :to => 'policy_dashboard#index', :as => 'policy_dashboard'
|
|
19
22
|
end
|
|
20
23
|
collection do
|
|
21
24
|
get 'auto_complete_search'
|
|
@@ -26,13 +29,14 @@ Rails.application.routes.draw do
|
|
|
26
29
|
post 'remove_policy_from_multiple_hosts'
|
|
27
30
|
end
|
|
28
31
|
end
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
|
|
33
|
+
resources :scap_contents do
|
|
31
34
|
collection do
|
|
32
35
|
get 'auto_complete_search'
|
|
33
36
|
end
|
|
34
37
|
end
|
|
35
|
-
|
|
38
|
+
|
|
39
|
+
resources :hosts, :only => [:show], :as => :compliance_hosts, :controller => :compliance_hosts
|
|
36
40
|
end
|
|
37
41
|
|
|
38
42
|
namespace :api do
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class CreateScaptimonyArfReports < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :scaptimony_arf_reports do |t|
|
|
4
|
+
t.references :asset, index: true
|
|
5
|
+
t.references :policy, index: true
|
|
6
|
+
t.datetime :date
|
|
7
|
+
t.string :digest, limit: 128
|
|
8
|
+
|
|
9
|
+
t.timestamps
|
|
10
|
+
end
|
|
11
|
+
add_index :scaptimony_arf_reports, :digest, unique: true
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class CreateScaptimonyPolicyRevisions < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :scaptimony_policy_revisions do |t|
|
|
4
|
+
t.references :policy, index: true
|
|
5
|
+
t.references :scap_content, index: true
|
|
6
|
+
t.string :xccdf_profile
|
|
7
|
+
t.string :period
|
|
8
|
+
t.string :weekday
|
|
9
|
+
t.timestamp :active_until
|
|
10
|
+
|
|
11
|
+
t.timestamps
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class AddColumnsToScaptimonyPolicies < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
add_column :scaptimony_policies, :xccdf_profile, :string
|
|
4
|
+
add_column :scaptimony_policies, :period, :string
|
|
5
|
+
add_column :scaptimony_policies, :weekday, :string
|
|
6
|
+
add_column :scaptimony_policies, :description, :string
|
|
7
|
+
|
|
8
|
+
# This works only with rails-4, I want to support rails-3 too
|
|
9
|
+
# add_reference :scaptimony_policies, :scap_content, index: true
|
|
10
|
+
add_column :scaptimony_policies, :scap_content_id, :integer, references: :scap_content
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
class AddColumnsToScaptimonyScapContents < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
add_column :scaptimony_scap_contents, :title, :string
|
|
4
|
+
add_column :scaptimony_scap_contents, :original_filename, :string
|
|
5
|
+
add_index :scaptimony_scap_contents, :title
|
|
6
|
+
add_index :scaptimony_scap_contents, :original_filename
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class CreateScaptimonyScapContentProfiles < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :scaptimony_scap_content_profiles do |t|
|
|
4
|
+
t.references :scap_content, index: true
|
|
5
|
+
t.string :profile_id
|
|
6
|
+
t.string :title
|
|
7
|
+
|
|
8
|
+
end
|
|
9
|
+
add_index :scaptimony_scap_content_profiles, [:scap_content_id, :profile_id],
|
|
10
|
+
:unique => true, :name => :index_scaptimony_scap_content_profiles_scipi
|
|
11
|
+
end
|
|
12
|
+
end
|