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,34 +0,0 @@
|
|
|
1
|
-
class ScaptimonyArfReportsController < ApplicationController
|
|
2
|
-
include Foreman::Controller::AutoCompleteSearch
|
|
3
|
-
|
|
4
|
-
before_filter :find_by_id, :only => [:show, :parse, :destroy]
|
|
5
|
-
|
|
6
|
-
def model_of_controller
|
|
7
|
-
::Scaptimony::ArfReport
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def index
|
|
11
|
-
@arf_reports = resource_base.includes(:arf_report_breakdown, :asset)
|
|
12
|
-
.search_for(params[:search], :order => params[:order])
|
|
13
|
-
.paginate(:page => params[:page], :per_page => params[:per_page])
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def show
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def parse
|
|
20
|
-
self.response_body = @arf_report.to_html
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def destroy
|
|
24
|
-
if @arf_report.destroy
|
|
25
|
-
process_success
|
|
26
|
-
else
|
|
27
|
-
process_error
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def find_by_id
|
|
32
|
-
@arf_report = resource_base.find(params[:id])
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2014 Red Hat Inc.
|
|
3
|
-
#
|
|
4
|
-
# This software is licensed to you under the GNU General Public License,
|
|
5
|
-
# version 3 (GPLv3). There is NO WARRANTY for this software, express or
|
|
6
|
-
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
|
7
|
-
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv3
|
|
8
|
-
# along with this software; if not, see http://www.gnu.org/licenses/gpl.txt
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
require 'scaptimony/arf_report'
|
|
12
|
-
|
|
13
|
-
module ForemanOpenscap
|
|
14
|
-
module ArfReportExtensions
|
|
15
|
-
extend ActiveSupport::Concern
|
|
16
|
-
include Taxonomix
|
|
17
|
-
included do
|
|
18
|
-
has_one :host, :through => :asset, :as => :assetable, :source => :assetable, :source_type => 'Host::Base'
|
|
19
|
-
|
|
20
|
-
after_save :assign_locations_organizations
|
|
21
|
-
|
|
22
|
-
scope :hosts, lambda { includes(:policy, :arf_report_breakdown) }
|
|
23
|
-
scope :latest, lambda { includes(:host, :policy, :arf_report_breakdown).limit(5).order("scaptimony_arf_reports.created_at DESC") }
|
|
24
|
-
scope :of_policy, lambda {|policy_id| {:conditions => {:policy_id => policy_id}}}
|
|
25
|
-
|
|
26
|
-
scoped_search :in => :host, :on => :name, :complete_value => :true, :rename => "host"
|
|
27
|
-
|
|
28
|
-
default_scope {
|
|
29
|
-
with_taxonomy_scope do
|
|
30
|
-
order("scaptimony_arf_reports.created_at DESC")
|
|
31
|
-
end
|
|
32
|
-
}
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def assign_locations_organizations
|
|
36
|
-
if host
|
|
37
|
-
self.location_ids = [host.location_id] if SETTINGS[:locations_enabled]
|
|
38
|
-
self.organization_ids = [host.organization_id] if SETTINGS[:organizations_enabled]
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def failed?
|
|
43
|
-
failed > 0
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def passed?
|
|
47
|
-
passed > 0 && !failed?
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2014 Red Hat Inc.
|
|
3
|
-
#
|
|
4
|
-
# This software is licensed to you under the GNU General Public License,
|
|
5
|
-
# version 3 (GPLv3). There is NO WARRANTY for this software, express or
|
|
6
|
-
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
|
7
|
-
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv3
|
|
8
|
-
# along with this software; if not, see http://www.gnu.org/licenses/gpl.txt
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
require 'scaptimony/asset'
|
|
12
|
-
|
|
13
|
-
module ForemanOpenscap
|
|
14
|
-
module AssetExtensions
|
|
15
|
-
extend ActiveSupport::Concern
|
|
16
|
-
included do
|
|
17
|
-
belongs_to :assetable, :polymorphic => true
|
|
18
|
-
scope :hosts, where(:assetable_type => 'Host::Base')
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def host
|
|
22
|
-
fetch_asset('Host::Base')
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def name
|
|
26
|
-
assetable.name
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
private
|
|
30
|
-
def fetch_asset(type)
|
|
31
|
-
assetable if assetable_type == type
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2014 Red Hat Inc.
|
|
3
|
-
#
|
|
4
|
-
# This software is licensed to you under the GNU General Public License,
|
|
5
|
-
# version 3 (GPLv3). There is NO WARRANTY for this software, express or
|
|
6
|
-
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
|
7
|
-
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv3
|
|
8
|
-
# along with this software; if not, see http://www.gnu.org/licenses/gpl.txt
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
require 'scaptimony/scap_content'
|
|
12
|
-
|
|
13
|
-
module ForemanOpenscap
|
|
14
|
-
module ScapContentExtensions
|
|
15
|
-
extend ActiveSupport::Concern
|
|
16
|
-
include Authorizable
|
|
17
|
-
include Taxonomix
|
|
18
|
-
included do
|
|
19
|
-
attr_accessible :location_ids, :organization_ids
|
|
20
|
-
|
|
21
|
-
default_scope {
|
|
22
|
-
with_taxonomy_scope do
|
|
23
|
-
order("scaptimony_scap_contents.title")
|
|
24
|
-
end
|
|
25
|
-
}
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def used_location_ids
|
|
29
|
-
Location.joins(:taxable_taxonomies).where(
|
|
30
|
-
'taxable_taxonomies.taxable_type' => 'Scaptimony::ScapContent',
|
|
31
|
-
'taxable_taxonomies.taxable_id' => id).pluck("#{Location.arel_table.name}.id")
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def used_organization_ids
|
|
35
|
-
Organization.joins(:taxable_taxonomies).where(
|
|
36
|
-
'taxable_taxonomies.taxable_type' => 'Scaptimony::ScapContent',
|
|
37
|
-
'taxable_taxonomies.taxable_id' => id).pluck("#{Location.arel_table.name}.id")
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<% if host.arf_reports.any? %>
|
|
2
|
-
<% if host.arf_reports.search_for('failed > 0').blank? %>
|
|
3
|
-
<%= link_to(report_event_column('O', "label-success"), scaptimony_arf_reports_path(:search => "host=#{host.name}")) %>
|
|
4
|
-
<% else %>
|
|
5
|
-
<%= link_to(report_event_column('F', "label-danger"), scaptimony_arf_reports_path(:search => "host=#{host.name}")) %>
|
|
6
|
-
<% end %>
|
|
7
|
-
<% end %>
|
|
8
|
-
<%= render_original %>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<% if host.arf_reports.any? %>
|
|
2
|
-
<table class="table table-bordered table-striped" id="compliance">
|
|
3
|
-
<tr>
|
|
4
|
-
<th colspan="2"><%= _('Compliance Properties') %></th>
|
|
5
|
-
</tr>
|
|
6
|
-
<tr>
|
|
7
|
-
<td><%= _('Compliance') %></td>
|
|
8
|
-
<td>
|
|
9
|
-
<% if host.arf_reports.search_for('failed > 0').blank? %>
|
|
10
|
-
<%= link_to(report_event_column('O', "label-success"), scaptimony_host_path(host.id)) %>
|
|
11
|
-
<% else %>
|
|
12
|
-
<%= link_to(report_event_column('F', "label-danger"), scaptimony_host_path(host.id)) %>
|
|
13
|
-
<% end %>
|
|
14
|
-
</td>
|
|
15
|
-
</tr>
|
|
16
|
-
</table>
|
|
17
|
-
<% end %>
|
|
@@ -1,17 +0,0 @@
|
|
|
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 class="alert alert-info">
|
|
9
|
-
<%= icon_text("info-sign", _('Notice: Ensure the selected SCAP content exists on your hosts.')) %>
|
|
10
|
-
<div id="file-location">
|
|
11
|
-
<% if @policy.scap_content %>
|
|
12
|
-
<b><%= _('SCAP content file should be /var/lib/openscap/content/%s.xml on your clients.') % @policy.scap_content.digest %></b>
|
|
13
|
-
<% end %>
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
|