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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4717f3191e1244335417139e2dddef5297b612d
|
4
|
+
data.tar.gz: 54ac0f517e808a186d74a6a42a03f07a79565abf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dbb8f627fdb059e1099c4f95288bfdc7b4ee9e2eef011cec3c45c9c7419ee8ccf7e99813894d46ba659c8d2cfc88d44cc86ebec0a5e24f91312489478133193
|
7
|
+
data.tar.gz: c74cd26daf940251810f9aae28728897da0d8d35848939476c2e90a882ae569e5a698835c11b24d669539c187c2bd6526a3c46f6e319bf5b251382190c09ae11
|
@@ -8,9 +8,7 @@ function scap_content_selected(element){
|
|
8
8
|
url: url,
|
9
9
|
complete: function() { $(element).indicator_hide();},
|
10
10
|
success: function(request) {
|
11
|
-
$('#file-location').remove();
|
12
11
|
$('#scap_content_profile_select').html(request);
|
13
|
-
$('#scap_content .alert-info').append($('#file-location'));
|
14
12
|
}
|
15
13
|
})
|
16
14
|
}
|
@@ -8,7 +8,6 @@
|
|
8
8
|
# along with this software; if not, see http://www.gnu.org/licenses/gpl.txt
|
9
9
|
#
|
10
10
|
|
11
|
-
require 'scaptimony/arf_reports_helper'
|
12
11
|
require 'foreman_openscap/helper'
|
13
12
|
|
14
13
|
module Api
|
@@ -24,7 +23,7 @@ module Api
|
|
24
23
|
before_filter :find_resource, :only => %w{show destroy}
|
25
24
|
|
26
25
|
def resource_name
|
27
|
-
'
|
26
|
+
'::ForemanOpenscap::ArfReport'
|
28
27
|
end
|
29
28
|
|
30
29
|
def get_resource
|
@@ -32,7 +31,7 @@ module Api
|
|
32
31
|
end
|
33
32
|
|
34
33
|
resource_description do
|
35
|
-
resource_id '
|
34
|
+
resource_id 'foreman_openscap_arf_reports'
|
36
35
|
api_version 'v2'
|
37
36
|
api_base_url "/api/v2"
|
38
37
|
end
|
@@ -41,7 +40,7 @@ module Api
|
|
41
40
|
param_group :search_and_pagination, ::Api::V2::BaseController
|
42
41
|
|
43
42
|
def index
|
44
|
-
@arf_reports = resource_scope_for_index(:permission => :edit_compliance).includes(:
|
43
|
+
@arf_reports = resource_scope_for_index(:permission => :edit_compliance).includes(:asset)
|
45
44
|
end
|
46
45
|
|
47
46
|
api :GET, '/compliance/arf_reports/:id', N_('Show an Arf report')
|
@@ -64,27 +63,13 @@ module Api
|
|
64
63
|
|
65
64
|
def create
|
66
65
|
asset = ForemanOpenscap::Helper::get_asset(params[:cname], params[:policy_id])
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
render :json => { :result => :OK, :received => arf_bzip2_size }
|
71
|
-
end
|
72
|
-
|
73
|
-
def check_content_type
|
74
|
-
# Well, this is unfortunate. Parent class asserts that content-type is
|
75
|
-
# application/json. While we want to have content-type text/xml. We
|
76
|
-
# also need the content-encoding to equal with x-bzip2. However, when
|
77
|
-
# the framework sees text/xml, it will rewrite it to application/xml.
|
78
|
-
# What's worse, a framework will try to parse body as an utf8 string,
|
79
|
-
# no matter what content-encoding says. Let's pass content-type arf-bzip2
|
80
|
-
# and move forward.
|
81
|
-
super unless
|
82
|
-
params[:action] == 'create' and
|
83
|
-
request.content_type.end_with? 'arf-bzip2' and
|
84
|
-
request.env['HTTP_CONTENT_ENCODING'] == 'x-bzip2'
|
66
|
+
arf_report = ForemanOpenscap::ArfReport.create_arf(asset, params)
|
67
|
+
asset.host.refresh_statuses if asset.host
|
68
|
+
render :json => { :result => :OK, :id => arf_report.id.to_s }
|
85
69
|
end
|
86
70
|
|
87
71
|
private
|
72
|
+
|
88
73
|
def find_resource
|
89
74
|
not_found and return if params[:id].blank?
|
90
75
|
instance_variable_set("@arf_report", resource_scope.find(params[:id]))
|
@@ -4,13 +4,13 @@ module Api::V2
|
|
4
4
|
include Foreman::Controller::SmartProxyAuth
|
5
5
|
|
6
6
|
add_smart_proxy_filters :content, :features => 'Openscap'
|
7
|
-
|
7
|
+
|
8
8
|
before_filter :find_resource, :except => %w{index create}
|
9
9
|
|
10
10
|
skip_after_filter :log_response_body, :only => [:content]
|
11
|
-
|
11
|
+
|
12
12
|
def resource_name
|
13
|
-
'
|
13
|
+
'::ForemanOpenscap::Policy'
|
14
14
|
end
|
15
15
|
|
16
16
|
def get_resource
|
@@ -22,7 +22,7 @@ module Api::V2
|
|
22
22
|
end
|
23
23
|
|
24
24
|
resource_description do
|
25
|
-
resource_id '
|
25
|
+
resource_id 'foreman_openscap_policies'
|
26
26
|
api_version 'v2'
|
27
27
|
api_base_url "/api/v2"
|
28
28
|
end
|
@@ -57,7 +57,7 @@ module Api::V2
|
|
57
57
|
param_group :policy, :as => :create
|
58
58
|
|
59
59
|
def create
|
60
|
-
@policy =
|
60
|
+
@policy = ForemanOpenscap::Policy.new(params[:policy])
|
61
61
|
process_response @policy.save
|
62
62
|
end
|
63
63
|
|
@@ -4,7 +4,7 @@ module Api::V2
|
|
4
4
|
before_filter :find_resource, :except => %w{index create}
|
5
5
|
|
6
6
|
def resource_name
|
7
|
-
'
|
7
|
+
'::ForemanOpenscap::ScapContent'
|
8
8
|
end
|
9
9
|
|
10
10
|
def get_resource
|
@@ -12,7 +12,7 @@ module Api::V2
|
|
12
12
|
end
|
13
13
|
|
14
14
|
resource_description do
|
15
|
-
resource_id '
|
15
|
+
resource_id 'foreman_openscap_scap_contents'
|
16
16
|
api_version 'v2'
|
17
17
|
api_base_url "/api/v2"
|
18
18
|
end
|
@@ -45,7 +45,7 @@ module Api::V2
|
|
45
45
|
param_group :scap_content, :as => :create
|
46
46
|
|
47
47
|
def create
|
48
|
-
@scap_content =
|
48
|
+
@scap_content = ForemanOpenscap::ScapContent.new(params[:scap_content])
|
49
49
|
process_response @scap_content.save
|
50
50
|
end
|
51
51
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class ArfReportsController < ApplicationController
|
2
|
+
include Foreman::Controller::AutoCompleteSearch
|
3
|
+
|
4
|
+
before_filter :find_by_id, :only => [:show, :show_html, :destroy, :parse_html, :parse_bzip]
|
5
|
+
|
6
|
+
def model_of_controller
|
7
|
+
::ForemanOpenscap::ArfReport
|
8
|
+
end
|
9
|
+
|
10
|
+
def index
|
11
|
+
@arf_reports = resource_base.includes(: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 show_html
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_html
|
23
|
+
begin
|
24
|
+
self.response_body = @arf_report.to_html
|
25
|
+
rescue => e
|
26
|
+
render :text => _(e.message)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def parse_bzip
|
31
|
+
begin
|
32
|
+
response = @arf_report.to_bzip
|
33
|
+
send_data response, :filename => "#{@arf_report.id}_arf_report.bz2", :type => 'application/octet-stream', :disposition => 'attachement'
|
34
|
+
rescue => e
|
35
|
+
process_error(:error_msg => (_("Failed to downloaded Arf report as bzip: #{e.message}")),
|
36
|
+
:error_redirect => arf_report_path(@arf_report.id))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def destroy
|
41
|
+
if @arf_report.destroy
|
42
|
+
process_success(:success_msg => (_("Successfully deleted Arf report.")), :success_redirect => arf_reports_path)
|
43
|
+
else
|
44
|
+
process_error
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def find_by_id
|
51
|
+
@arf_report = resource_base.find(params[:id])
|
52
|
+
end
|
53
|
+
|
54
|
+
def action_permission
|
55
|
+
case params[:action]
|
56
|
+
when 'show_html', 'parse_html', 'parse_bzip'
|
57
|
+
:view
|
58
|
+
else
|
59
|
+
super
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
class
|
1
|
+
class PoliciesController < ApplicationController
|
2
2
|
include Foreman::Controller::AutoCompleteSearch
|
3
3
|
before_filter :find_by_id, :only => [:show, :edit, :update, :parse, :destroy]
|
4
4
|
before_filter :find_multiple, :only => [:select_multiple_hosts, :update_multiple_hosts, :disassociate_multiple_hosts, :remove_policy_from_multiple_hosts]
|
5
5
|
|
6
6
|
def model_of_controller
|
7
|
-
::
|
7
|
+
::ForemanOpenscap::Policy
|
8
8
|
end
|
9
9
|
|
10
10
|
def index
|
@@ -12,13 +12,13 @@ class ScaptimonyPoliciesController < ApplicationController
|
|
12
12
|
.search_for(params[:search], :order => params[:order])
|
13
13
|
.paginate(:page => params[:page], :per_page => params[:per_page])
|
14
14
|
.includes(:scap_content, :scap_content_profile)
|
15
|
-
if @policies.empty? &&
|
16
|
-
redirect_to
|
15
|
+
if @policies.empty? && ForemanOpenscap::ScapContent.unconfigured?
|
16
|
+
redirect_to scap_contents_path
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
def new
|
21
|
-
@policy = ::
|
21
|
+
@policy = ::ForemanOpenscap::Policy.new
|
22
22
|
end
|
23
23
|
|
24
24
|
def show
|
@@ -29,9 +29,9 @@ class ScaptimonyPoliciesController < ApplicationController
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def create
|
32
|
-
@policy = ::
|
32
|
+
@policy = ::ForemanOpenscap::Policy.new(params[:policy])
|
33
33
|
if @policy.wizard_completed? && @policy.save
|
34
|
-
process_success :success_redirect =>
|
34
|
+
process_success :success_redirect => policies_path
|
35
35
|
else
|
36
36
|
if @policy.valid?
|
37
37
|
render 'new' and return
|
@@ -47,7 +47,7 @@ class ScaptimonyPoliciesController < ApplicationController
|
|
47
47
|
|
48
48
|
def update
|
49
49
|
if @policy.update_attributes(params[:policy])
|
50
|
-
process_success :success_redirect =>
|
50
|
+
process_success :success_redirect => policies_path
|
51
51
|
else
|
52
52
|
process_error :object => @policy
|
53
53
|
end
|
@@ -62,8 +62,8 @@ class ScaptimonyPoliciesController < ApplicationController
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def scap_content_selected
|
65
|
-
if params[:scap_content_id] && (@scap_content = ::
|
66
|
-
@policy ||= ::
|
65
|
+
if params[:scap_content_id] && (@scap_content = ::ForemanOpenscap::ScapContent.find(params[:scap_content_id]))
|
66
|
+
@policy ||= ::ForemanOpenscap::Policy.new
|
67
67
|
render :partial => 'scap_content_results', :locals => {:policy => @policy}
|
68
68
|
end
|
69
69
|
end
|
@@ -72,14 +72,14 @@ class ScaptimonyPoliciesController < ApplicationController
|
|
72
72
|
|
73
73
|
def update_multiple_hosts
|
74
74
|
if (id = params['policy']['id'])
|
75
|
-
policy = ::
|
75
|
+
policy = ::ForemanOpenscap::Policy.find(id)
|
76
76
|
policy.assign_hosts(@hosts)
|
77
77
|
notice _("Updated hosts: Assigned with compliance policy: #{policy.name}")
|
78
78
|
# We prefer to go back as this does not lose the current search
|
79
79
|
redirect_to hosts_path
|
80
80
|
else
|
81
81
|
error _('No compliance policy selected.')
|
82
|
-
redirect_to(
|
82
|
+
redirect_to(select_multiple_hosts_policies_path)
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -87,7 +87,7 @@ class ScaptimonyPoliciesController < ApplicationController
|
|
87
87
|
|
88
88
|
def remove_policy_from_multiple_hosts
|
89
89
|
if (id = params.fetch(:policy, {})[:id])
|
90
|
-
policy = ::
|
90
|
+
policy = ::ForemanOpenscap::Policy.find(id)
|
91
91
|
policy.unassign_hosts(@hosts)
|
92
92
|
notice _("Updated hosts: Unassigned from compliance policy '%s'") % policy.name
|
93
93
|
redirect_to hosts_path
|
data/app/controllers/{scaptimony_policy_dashboard_controller.rb → policy_dashboard_controller.rb}
RENAMED
@@ -8,14 +8,14 @@
|
|
8
8
|
# along with this software; if not, see http://www.gnu.org/licenses/gpl.txt
|
9
9
|
#
|
10
10
|
|
11
|
-
class
|
11
|
+
class PolicyDashboardController < ApplicationController
|
12
12
|
before_filter :prefetch_data, :only => :index
|
13
13
|
|
14
14
|
def index; end
|
15
15
|
|
16
16
|
def prefetch_data
|
17
|
-
@policy = ::
|
18
|
-
dashboard =
|
17
|
+
@policy = ::ForemanOpenscap::Policy.find(params[:id])
|
18
|
+
dashboard = ForemanOpenscap::PolicyDashboard::Data.new(@policy, params[:search])
|
19
19
|
@report = dashboard.report
|
20
20
|
end
|
21
21
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
class
|
1
|
+
class ScapContentsController < ApplicationController
|
2
2
|
include Foreman::Controller::AutoCompleteSearch
|
3
3
|
before_filter :handle_file_upload, :only => [:create, :update]
|
4
4
|
before_filter :find_by_id, :only => [:show, :edit, :update, :destroy]
|
5
5
|
|
6
6
|
def model_of_controller
|
7
|
-
::
|
7
|
+
::ForemanOpenscap::ScapContent
|
8
8
|
end
|
9
9
|
|
10
10
|
def index
|
@@ -12,18 +12,18 @@ class ScaptimonyScapContentsController < ApplicationController
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def show
|
15
|
-
send_data @
|
15
|
+
send_data @scap_content.scap_file,
|
16
16
|
:type => 'application/xml',
|
17
|
-
:filename => @
|
17
|
+
:filename => @scap_content.original_filename
|
18
18
|
end
|
19
19
|
|
20
20
|
def new
|
21
|
-
@
|
21
|
+
@scap_content = ForemanOpenscap::ScapContent.new
|
22
22
|
end
|
23
23
|
|
24
24
|
def create
|
25
|
-
@
|
26
|
-
if @
|
25
|
+
@scap_content = ForemanOpenscap::ScapContent.new(params[:scap_content])
|
26
|
+
if @scap_content.save
|
27
27
|
process_success
|
28
28
|
else
|
29
29
|
process_error
|
@@ -31,7 +31,7 @@ class ScaptimonyScapContentsController < ApplicationController
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def update
|
34
|
-
if @
|
34
|
+
if @scap_content.update_attributes(params[:scap_content])
|
35
35
|
process_success
|
36
36
|
else
|
37
37
|
process_error
|
@@ -39,10 +39,10 @@ class ScaptimonyScapContentsController < ApplicationController
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def destroy
|
42
|
-
if @
|
42
|
+
if @scap_content.destroy
|
43
43
|
process_success
|
44
44
|
else
|
45
|
-
process_error :object => @
|
45
|
+
process_error :object => @scap_content
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -58,7 +58,7 @@ class ScaptimonyScapContentsController < ApplicationController
|
|
58
58
|
|
59
59
|
private
|
60
60
|
def find_by_id
|
61
|
-
@
|
61
|
+
@scap_content = resource_base.find(params[:id])
|
62
62
|
end
|
63
63
|
|
64
64
|
def handle_file_upload
|
@@ -1,20 +1,18 @@
|
|
1
|
-
module
|
2
|
-
|
1
|
+
module ArfReportDashboardHelper
|
2
|
+
COLORS = {
|
3
3
|
:passed => '#89A54E',
|
4
4
|
:failed => '#AA4643',
|
5
5
|
:othered => '#DB843D',
|
6
6
|
}
|
7
7
|
|
8
|
-
|
9
8
|
def reports_breakdown_chart(report, options = {})
|
10
9
|
data = []
|
11
10
|
[[:failed, _('Failed')],
|
12
11
|
[:passed, _('Passed')],
|
13
12
|
[:othered, _('Othered')],
|
14
13
|
].each { |i|
|
15
|
-
data << {:label => i[1], :data => report[i[0]], :color =>
|
14
|
+
data << {:label => i[1], :data => report[i[0]], :color => COLORS[i[0]]}
|
16
15
|
}
|
17
16
|
flot_pie_chart 'overview', _('Compliance reports breakdown'), data, options
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
@@ -13,4 +13,25 @@ module ArfReportsHelper
|
|
13
13
|
style = "label-default" if event == 0
|
14
14
|
content_tag(:span, event, :class=>'label ' + style)
|
15
15
|
end
|
16
|
+
|
17
|
+
def show_logs
|
18
|
+
return unless @arf_report.logs.size > 0
|
19
|
+
form_tag arf_report_path(@arf_report), :id => 'level_filter', :method => :get, :class => "form form-horizontal" do
|
20
|
+
content_tag(:span, _("Show log messages:") + ' ') +
|
21
|
+
select(nil, 'level', [[_('All messages'), 'info'],[_('Failed and Othered'), 'warning'],[_('Failed only'), 'error']],
|
22
|
+
{}, {:class=>"col-md-1 form-control", :onchange =>"filter_by_level(this);"})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def result_tag(level)
|
27
|
+
tag = case level
|
28
|
+
when 'pass'
|
29
|
+
"success"
|
30
|
+
when 'fail'
|
31
|
+
"danger"
|
32
|
+
else
|
33
|
+
"warning"
|
34
|
+
end
|
35
|
+
"class='label label-#{tag}'".html_safe
|
36
|
+
end
|
16
37
|
end
|