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