foreman_openscap 1.0.1 → 1.0.2
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/arf_reports.js +23 -1
- data/app/controllers/api/v2/compliance/arf_reports_controller.rb +1 -0
- data/app/controllers/api/v2/compliance/policies_controller.rb +1 -0
- data/app/controllers/api/v2/compliance/scap_contents_controller.rb +1 -0
- data/app/controllers/api/v2/compliance/tailoring_files_controller.rb +1 -0
- data/app/models/concerns/foreman_openscap/openscap_proxy_core_extensions.rb +2 -2
- data/app/models/foreman_openscap/policy.rb +4 -4
- data/app/services/foreman_openscap/client_config/base.rb +7 -1
- data/app/views/arf_reports/_list.html.erb +4 -4
- data/app/views/policies/_list.html.erb +1 -1
- data/app/views/scap_contents/_list.html.erb +1 -1
- data/app/views/tailoring_files/_list.html.erb +1 -1
- data/lib/foreman_openscap/version.rb +1 -1
- data/test/factories/arf_report_factory.rb +6 -6
- data/test/factories/asset_factory.rb +3 -3
- data/test/factories/compliance_host_factory.rb +3 -3
- data/test/factories/compliance_log_factory.rb +2 -2
- data/test/factories/policy_arf_report_factory.rb +2 -2
- data/test/factories/policy_factory.rb +9 -9
- data/test/factories/scap_content_related.rb +5 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4fa6212889b88db1926a1167a196758e8be00c39
|
4
|
+
data.tar.gz: 936356cbe95d4e44a7bc93980a37d37cb5b55934
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 880ec79e64d9501bdc9f80bbc1eec5d98dd6b622f1c84c56f032f461abc91760a427b87f7fb35d7b653e97b447514bd98822b3f7c5559559d0c2ab5708d5840b
|
7
|
+
data.tar.gz: 25358fba90e35c34445dcbdc4264faeecb64e58283018909099e527575d5b735ea78b68d315fcb572391a947787e4c1f4855fc686e231ace17c25d2d4338af48
|
@@ -1,5 +1,27 @@
|
|
1
|
+
function readFromCookie() {
|
2
|
+
try {
|
3
|
+
var r = $.cookie(cookieName);
|
4
|
+
if (r) {
|
5
|
+
return $.parseJSON(r);
|
6
|
+
}
|
7
|
+
return [];
|
8
|
+
} catch (err) {
|
9
|
+
removeCookie();
|
10
|
+
return [];
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
function removeCookie() {
|
15
|
+
$.removeCookie(cookieName);
|
16
|
+
}
|
17
|
+
|
18
|
+
var cookieName = `_ForemanSelected${window.location.pathname.replace(
|
19
|
+
/\//,
|
20
|
+
''
|
21
|
+
)}`;
|
22
|
+
|
1
23
|
function buildArfModal(element, url) {
|
2
|
-
var url = url + "?" + $.param({arf_report_ids:
|
24
|
+
var url = url + "?" + $.param({arf_report_ids: readFromCookie()});
|
3
25
|
var title = $(element).attr('data-dialog-title');
|
4
26
|
$('#confirmation-modal .modal-header h4').text(title);
|
5
27
|
$("#confirmation-modal .modal-body").load(url + " #content",
|
@@ -24,6 +24,7 @@ module Api
|
|
24
24
|
|
25
25
|
api :GET, '/compliance/arf_reports', N_('List ARF reports')
|
26
26
|
param_group :search_and_pagination, ::Api::V2::BaseController
|
27
|
+
add_scoped_search_description_for(::ForemanOpenscap::ArfReport)
|
27
28
|
|
28
29
|
def index
|
29
30
|
@arf_reports = resource_scope_for_index(:permission => :view_arf_reports).includes(:openscap_proxy, :policy, :host)
|
@@ -24,6 +24,7 @@ module Api::V2
|
|
24
24
|
|
25
25
|
api :GET, '/compliance/policies', N_('List Policies')
|
26
26
|
param_group :search_and_pagination, ::Api::V2::BaseController
|
27
|
+
add_scoped_search_description_for(::ForemanOpenscap::Policy)
|
27
28
|
|
28
29
|
def index
|
29
30
|
@policies = resource_scope_for_index(:permission => :view_policies)
|
@@ -15,6 +15,7 @@ module Api::V2
|
|
15
15
|
|
16
16
|
api :GET, '/compliance/scap_contents', N_('List SCAP contents')
|
17
17
|
param_group :search_and_pagination, ::Api::V2::BaseController
|
18
|
+
add_scoped_search_description_for(::ForemanOpenscap::ScapContent)
|
18
19
|
|
19
20
|
def index
|
20
21
|
@scap_contents = resource_scope_for_index(:permission => :view_scap_contents)
|
@@ -16,6 +16,7 @@ module Api::V2
|
|
16
16
|
|
17
17
|
api :GET, '/compliance/tailoring_files', N_('List Tailoring files')
|
18
18
|
param_group :search_and_pagination, ::Api::V2::BaseController
|
19
|
+
add_scoped_search_description_for(::ForemanOpenscap::TailoringFile)
|
19
20
|
|
20
21
|
def index
|
21
22
|
@tailoring_files = resource_scope_for_index(:permission => :view_tailoring_files)
|
@@ -18,7 +18,7 @@ module ForemanOpenscap
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def update_client_params(model_match, config)
|
21
|
-
client_item = config.find_config_item self.public_send(config.
|
21
|
+
client_item = config.find_config_item self.public_send(config.all_collection_method)
|
22
22
|
return unless client_item
|
23
23
|
lookup_keys = client_item.public_send(config.override_method_name)
|
24
24
|
server_key = lookup_keys.find { |param| param.key == config.server_param }
|
@@ -65,7 +65,7 @@ module ForemanOpenscap
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def openscap_proxy_has_feature
|
68
|
-
errors.add(:openscap_proxy_id, _("must have Openscap feature")) if
|
68
|
+
errors.add(:openscap_proxy_id, _("must have Openscap feature")) if openscap_proxy && !openscap_proxy.has_feature?("Openscap")
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
@@ -16,10 +16,10 @@ module ForemanOpenscap
|
|
16
16
|
has_many :assets, :through => :asset_policies, :as => :assetable, :dependent => :destroy
|
17
17
|
|
18
18
|
scoped_search :on => :name, :complete_value => true
|
19
|
-
scoped_search :
|
20
|
-
scoped_search :
|
21
|
-
scoped_search :
|
22
|
-
scoped_search :
|
19
|
+
scoped_search :relation => :scap_content, :on => :title, :rename => 'content', :complete_value => true
|
20
|
+
scoped_search :relation => :scap_content_profile, :on => :title, :rename => 'profile', :complete_value => true
|
21
|
+
scoped_search :relation => :tailoring_file, :on => :name, :rename => 'tailoring_file', :complete_value => true
|
22
|
+
scoped_search :relation => :tailoring_file_profile, :on => :title, :rename => 'tailoring_file_profile', :complete_value => true
|
23
23
|
before_validation :update_period_attrs
|
24
24
|
|
25
25
|
def self.deploy_by_variants
|
@@ -33,8 +33,14 @@ module ForemanOpenscap
|
|
33
33
|
constants.config_item_class_name&.pluralize&.underscore
|
34
34
|
end
|
35
35
|
|
36
|
+
def all_collection_method
|
37
|
+
"all_#{collection_method}".to_sym
|
38
|
+
end
|
39
|
+
|
36
40
|
def find_config_item(scope = config_item_class_name.constantize)
|
37
|
-
scope.find_by :name => config_item_name
|
41
|
+
return scope.find_by :name => config_item_name if scope.respond_to?(:find_by)
|
42
|
+
# all_puppetclasses, all_ansible_roles methods return Array, not ActiveRecord::Relation
|
43
|
+
scope.find { |item| item.name == config_item_name }
|
38
44
|
end
|
39
45
|
end
|
40
46
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
<%= javascript "
|
1
|
+
<%= javascript "foreman_openscap/arf_reports" %>
|
2
2
|
|
3
3
|
<table class="<%= table_css_classes %>">
|
4
4
|
<tr>
|
5
|
-
<th class="ca" width="40px"><%= check_box_tag "check_all", "", false, { :onclick => "toggleCheck()", :'check-title' => _("Select all items in this page"), :'uncheck-title'=> _("items selected. Uncheck to Clear") } %></th>
|
5
|
+
<th class="ca" width="40px"><%= check_box_tag "check_all", "", false, { :onclick => "tfm.hosts.table.toggleCheck()", :'check-title' => _("Select all items in this page"), :'uncheck-title'=> _("items selected. Uncheck to Clear") } %></th>
|
6
6
|
<th><%= sort :host %></th>
|
7
7
|
<th><%= sort :reported, :as => _("Reported At") %></th>
|
8
8
|
<th><%= sort :policy, :as => _("Policy") %></th>
|
@@ -21,7 +21,7 @@
|
|
21
21
|
:id => "host_ids_#{arf_report.id}",
|
22
22
|
:disabled => !authorized_for(:controller => :arf_reports, :action => :destroy),
|
23
23
|
:class => 'host_select_boxes',
|
24
|
-
:onclick => 'hostChecked(this)' %>
|
24
|
+
:onclick => 'tfm.hosts.table.hostChecked(this)' %>
|
25
25
|
</td>
|
26
26
|
<td class="elipsis"><%= name_column(arf_report.host) %></td>
|
27
27
|
<td><%= display_link_if_authorized(date_time_relative_value(arf_report.reported_at), hash_for_arf_report_path(:id => arf_report.id)) %></td>
|
@@ -34,7 +34,7 @@
|
|
34
34
|
<%= action_buttons(display_link_if_authorized(_("Full Report"), hash_for_show_html_arf_report_path(:id => arf_report.id
|
35
35
|
)),
|
36
36
|
display_delete_if_authorized(hash_for_arf_report_path(:id => arf_report.id),
|
37
|
-
|
37
|
+
:data => { :confirm => _("Delete compliance report for %s?") % arf_report.host}))
|
38
38
|
%>
|
39
39
|
</td>
|
40
40
|
</tr>
|
@@ -36,7 +36,7 @@
|
|
36
36
|
display_link_if_authorized(_("Dashboard"), hash_for_policy_dashboard_policy_path(:id => policy.id)),
|
37
37
|
display_link_if_authorized(_("Show Guide"), hash_for_policy_path(:id => policy.id)),
|
38
38
|
display_delete_if_authorized(hash_for_policy_path(:id => policy.id),
|
39
|
-
:confirm => _("Delete compliance policy %s with all of its reports?") % policy.name)
|
39
|
+
:data => {:confirm => _("Delete compliance policy %s with all of its reports?") % policy.name})
|
40
40
|
) %>
|
41
41
|
</td>
|
42
42
|
</tr>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
<%= action_buttons(
|
17
17
|
display_link_if_authorized(_("Download"), hash_for_scap_content_path(:id => content.id), :data => { :no_turbolink => true }),
|
18
18
|
display_delete_if_authorized(hash_for_scap_content_path(:id => content.id),
|
19
|
-
:confirm => _("Delete scap content %s?") % content.title)
|
19
|
+
:data => {:confirm => _("Delete scap content %s?") % content.title})
|
20
20
|
) %>
|
21
21
|
</td>
|
22
22
|
</tr>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<td>
|
20
20
|
<%= action_buttons(
|
21
21
|
display_delete_if_authorized(hash_for_tailoring_file_path(:id => file.id),
|
22
|
-
:confirm => _("Delete tailoring file %s?") % file.name),
|
22
|
+
:data => {:confirm => _("Delete tailoring file %s?") % file.name}),
|
23
23
|
display_link_if_authorized(_("Download"), hash_for_xml_tailoring_file_path(:id => file.id), :data => { :no_turbolink => true })
|
24
24
|
) %>
|
25
25
|
</td>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :arf_report, :class => ::ForemanOpenscap::ArfReport do
|
3
|
-
host_id 1
|
4
|
-
policy nil
|
5
|
-
policy_arf_report nil
|
3
|
+
host_id { 1 }
|
4
|
+
policy { nil }
|
5
|
+
policy_arf_report { nil }
|
6
6
|
sequence(:reported_at) { |n| Time.new(1490 + n, 0o1, 13, 15, 24, 0o0) }
|
7
7
|
sequence(:created_at) { |n| Time.new(1490 + n, 0o1, 13, 15, 24, 0o0) }
|
8
|
-
status 0
|
9
|
-
metrics
|
10
|
-
openscap_proxy nil
|
8
|
+
status { 0 }
|
9
|
+
metrics { {} }
|
10
|
+
openscap_proxy { nil }
|
11
11
|
end
|
12
12
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :asset, :class => ::ForemanOpenscap::Asset do |f|
|
3
3
|
f.assetable_id { FactoryBot.create(:host).id }
|
4
|
-
f.assetable_type 'Host::Base'
|
4
|
+
f.assetable_type { 'Host::Base' }
|
5
5
|
end
|
6
6
|
|
7
7
|
factory :asset_policy, :class => ForemanOpenscap::AssetPolicy do |f|
|
8
|
-
f.asset_id nil
|
9
|
-
f.policy_id nil
|
8
|
+
f.asset_id { nil }
|
9
|
+
f.policy_id { nil }
|
10
10
|
end
|
11
11
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :openscap_feature, :class => Feature do
|
3
|
-
name 'Openscap'
|
3
|
+
name { 'Openscap' }
|
4
4
|
end
|
5
5
|
|
6
6
|
factory :openscap_proxy, :class => SmartProxy do
|
@@ -12,8 +12,8 @@ FactoryBot.define do
|
|
12
12
|
factory :compliance_host, :class => Host::Managed do
|
13
13
|
sequence(:name) { |n| "host#{n}" }
|
14
14
|
sequence(:hostname) { |n| "hostname#{n}" }
|
15
|
-
root_pass 'xybxa6JUkz63w'
|
15
|
+
root_pass { 'xybxa6JUkz63w' }
|
16
16
|
openscap_proxy { SmartProxy.unscoped.with_features('Openscap').first || FactoryBot.create(:openscap_proxy) }
|
17
|
-
policies []
|
17
|
+
policies { [] }
|
18
18
|
end
|
19
19
|
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :policy, :class => ::ForemanOpenscap::Policy do
|
3
3
|
sequence(:name) { |n| "policy#{n}" }
|
4
|
-
period 'weekly'
|
5
|
-
weekday 'monday'
|
4
|
+
period { 'weekly' }
|
5
|
+
weekday { 'monday' }
|
6
6
|
scap_content { FactoryBot.create(:scap_content) }
|
7
7
|
scap_content_profile { FactoryBot.create(:scap_content_profile, :scap_content => scap_content) }
|
8
|
-
tailoring_file nil
|
9
|
-
tailoring_file_profile nil
|
10
|
-
day_of_month nil
|
11
|
-
cron_line nil
|
12
|
-
hosts []
|
13
|
-
assets []
|
14
|
-
deploy_by 'manual'
|
8
|
+
tailoring_file { nil }
|
9
|
+
tailoring_file_profile { nil }
|
10
|
+
day_of_month { nil }
|
11
|
+
cron_line { nil }
|
12
|
+
hosts { [] }
|
13
|
+
assets { [] }
|
14
|
+
deploy_by { 'manual' }
|
15
15
|
end
|
16
16
|
end
|
@@ -3,20 +3,20 @@ include ActionDispatch::TestProcess
|
|
3
3
|
FactoryBot.define do
|
4
4
|
factory :scap_content, :class => ::ForemanOpenscap::ScapContent do |f|
|
5
5
|
f.sequence(:title) { |n| "scap_content_title_#{n}" }
|
6
|
-
f.original_filename 'fedora ds'
|
6
|
+
f.original_filename { 'fedora ds' }
|
7
7
|
f.scap_file { File.new("#{ForemanOpenscap::Engine.root}/test/files/scap_contents/ssg-fedora-ds.xml", 'rb').read }
|
8
8
|
end
|
9
9
|
|
10
10
|
factory :scap_content_profile, :class => ::ForemanOpenscap::ScapContentProfile do |f|
|
11
11
|
f.scap_content
|
12
|
-
f.profile_id 'xccdf_org.test.common_test_profile'
|
13
|
-
f.title 'test Profile for testing'
|
12
|
+
f.profile_id { 'xccdf_org.test.common_test_profile' }
|
13
|
+
f.title { 'test Profile for testing' }
|
14
14
|
end
|
15
15
|
|
16
16
|
factory :tailoring_file, :class => ForemanOpenscap::TailoringFile do |f|
|
17
17
|
f.sequence(:name) { |n| "tailoring_file_#{n}" }
|
18
|
-
f.original_filename 'original tailoring filename'
|
18
|
+
f.original_filename { 'original tailoring filename' }
|
19
19
|
f.scap_file { File.new("#{ForemanOpenscap::Engine.root}/test/files/tailoring_files/ssg-firefox-ds-tailoring.xml", 'rb').read }
|
20
|
-
f.scap_content_profiles []
|
20
|
+
f.scap_content_profiles { [] }
|
21
21
|
end
|
22
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_openscap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- slukasik@redhat.com
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deface
|