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,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
|
-
|