foreman_openscap 0.2.1 → 0.3.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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +20 -6
  3. data/app/assets/javascript/foreman_openscap/period_selector.js +3 -0
  4. data/app/assets/javascript/foreman_openscap/policy_edit.js +37 -0
  5. data/app/assets/stylesheets/foreman_openscap/policy.css.scss +7 -0
  6. data/app/controllers/api/v2/{openscap → compliance}/arf_reports_controller.rb +6 -5
  7. data/app/controllers/scaptimony_arf_reports_controller.rb +9 -6
  8. data/app/controllers/scaptimony_policies_controller.rb +72 -11
  9. data/app/{models/scaptimony/asset.rb → controllers/scaptimony_policy_dashboard_controller.rb} +8 -9
  10. data/app/controllers/scaptimony_scap_contents_controller.rb +25 -16
  11. data/app/helpers/concerns/foreman_openscap/hosts_helper_extensions.rb +3 -4
  12. data/app/helpers/scaptimony_policies_helper.rb +22 -0
  13. data/app/helpers/scaptimony_policy_dashboard_helper.rb +43 -0
  14. data/app/helpers/scaptimony_report_dashboard_helper.rb +20 -0
  15. data/app/models/concerns/foreman_openscap/arf_report_extensions.rb +30 -1
  16. data/app/models/concerns/foreman_openscap/asset_extensions.rb +34 -0
  17. data/app/models/concerns/foreman_openscap/host_extensions.rb +38 -7
  18. data/app/models/concerns/foreman_openscap/policy_extensions.rb +214 -3
  19. data/app/models/concerns/foreman_openscap/scap_content_extensions.rb +21 -1
  20. data/app/overrides/hosts/index/host_arf_report.rb +5 -0
  21. data/app/services/scaptimony/policy_dashboard/data.rb +30 -0
  22. data/app/services/scaptimony/policy_dashboard/loader.rb +20 -0
  23. data/app/services/scaptimony/policy_dashboard/manager.rb +32 -0
  24. data/app/services/scaptimony/report_dashboard/data.rb +37 -0
  25. data/app/views/dashboard/_foreman_openscap_host_reports_widget.html.erb +24 -0
  26. data/app/views/dashboard/_foreman_openscap_reports_breakdown_widget.html.erb +3 -0
  27. data/app/views/scaptimony_arf_reports/_host_report.html.erb +8 -0
  28. data/app/views/scaptimony_arf_reports/_list.html.erb +2 -2
  29. data/app/views/scaptimony_arf_reports/show.html.erb +3 -0
  30. data/app/views/scaptimony_policies/_form.html.erb +23 -4
  31. data/app/views/scaptimony_policies/_list.html.erb +2 -4
  32. data/app/views/scaptimony_policies/create.html.erb +2 -0
  33. data/app/views/scaptimony_policies/edit.html.erb +1 -2
  34. data/app/views/scaptimony_policies/index.html.erb +1 -1
  35. data/app/views/scaptimony_policies/new.html.erb +1 -2
  36. data/app/views/scaptimony_policies/select_multiple_hosts.html.erb +8 -0
  37. data/app/views/scaptimony_policies/show.html.erb +3 -0
  38. data/app/views/scaptimony_policies/steps/_create_policy_form.html.erb +5 -0
  39. data/app/views/scaptimony_policies/steps/_hostgroups_form.html.erb +7 -0
  40. data/app/views/scaptimony_policies/steps/_locations_form.html.erb +13 -0
  41. data/app/views/scaptimony_policies/steps/_organizations_form.html.erb +13 -0
  42. data/app/views/scaptimony_policies/steps/_scap_content_form.html.erb +21 -0
  43. data/app/views/scaptimony_policies/steps/_schedule_form.html.erb +11 -0
  44. data/app/views/scaptimony_policies/steps/_step_form.html.erb +11 -0
  45. data/app/views/scaptimony_policy_dashboard/_policy_chart_widget.html.erb +4 -0
  46. data/app/views/scaptimony_policy_dashboard/_policy_reports.html.erb +24 -0
  47. data/app/views/scaptimony_policy_dashboard/_policy_status_widget.html.erb +12 -0
  48. data/app/views/scaptimony_policy_dashboard/index.html.erb +26 -0
  49. data/app/views/scaptimony_scap_contents/_form.html.erb +8 -0
  50. data/app/views/scaptimony_scap_contents/_list.html.erb +8 -6
  51. data/config/routes.rb +24 -6
  52. data/db/seeds.d/openscap_feature.rb +2 -0
  53. data/lib/foreman_openscap/engine.rb +18 -12
  54. data/lib/foreman_openscap/helper.rb +1 -7
  55. data/lib/foreman_openscap/version.rb +1 -1
  56. metadata +57 -31
  57. data/app/assets/javascript/policy_edit.js +0 -14
  58. data/app/overrides/dashboard/index/sample_override.html.erb.deface +0 -4
  59. data/db/migrate/20141017172055_create_scaptimony_auditable_hosts.rb +0 -9
@@ -7,12 +7,20 @@
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>
10
+ <% if show_location_tab? %>
11
+ <li><a href='#locations' data-toggle='tab'><%= _('Locations') %></a></li>
12
+ <% end %>
13
+ <% if show_organization_tab? %>
14
+ <li><a href='#organizations' data-toggle='tab'><%= _('Organizations') %></a></li>
15
+ <% end %>
10
16
  </ul>
11
17
  <div class="tab-content">
12
18
  <div class="tab-pane active" id="primary">
13
19
  <%= text_f(f, :title) %>
14
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>
15
22
  </div>
23
+ <%= render 'taxonomies/loc_org_tabs', :f => f, :obj => @scaptimony_scap_content %>
16
24
  <%= submit_or_cancel f %>
17
25
  </div>
18
26
  <% end %>
@@ -5,21 +5,23 @@
5
5
  <th>Created</th>
6
6
  <th></th>
7
7
  </tr>
8
- <% for c in @contents %>
8
+ <% for content in @contents %>
9
9
  <tr>
10
10
  <td>
11
- <%= c.title %>
11
+ <%= content.title %>
12
12
  </td>
13
13
  <td>
14
- <%= c.original_filename %>
14
+ <%= content.original_filename %>
15
15
  </td>
16
16
  <td>
17
- <%= _("%s ago") % time_ago_in_words(c.created_at.getlocal) %>
17
+ <%= _("%s ago") % time_ago_in_words(content.created_at.getlocal) %>
18
18
  </td>
19
19
  <td>
20
20
  <%= action_buttons(
21
- link_to_if_authorized(_("Edit"), hash_for_edit_scaptimony_scap_content_path(:id => c.id)),
22
- link_to_if_authorized(_("Download"), hash_for_scaptimony_scap_content_path(:id => c.id))
21
+ link_to_if_authorized(_("Edit"), hash_for_edit_scaptimony_scap_content_path(:id => content.id)),
22
+ link_to_if_authorized(_("Download"), hash_for_scaptimony_scap_content_path(:id => content.id)),
23
+ display_delete_if_authorized(hash_for_scaptimony_scap_content_path(:id => content.id),
24
+ :confirm => _("Delete compliance policy %s with all the reports?") % content.title)
23
25
  ) %>
24
26
  </td>
25
27
  </tr>
@@ -1,24 +1,42 @@
1
1
  Rails.application.routes.draw do
2
2
 
3
- scope '/scaptimony' do
3
+ scope '/compliance' do
4
4
  resources :arf_reports, :only => [:index, :show, :destroy],
5
- :as => :scaptimony_arf_reports, :controller => :scaptimony_arf_reports
5
+ :as => :scaptimony_arf_reports, :controller => :scaptimony_arf_reports do
6
+ member do
7
+ match 'parse', :to => 'scaptimony_arf_reports#parse'
8
+ end
9
+ collection do
10
+ get 'auto_complete_search'
11
+ end
12
+ end
6
13
  match 'dashboard', :to => 'scaptimony_dashboard#index', :as => "scaptimony_dashboard"
7
14
  resources :policies, :only => [:index, :new, :show, :create, :edit, :update, :destroy],
8
15
  :as => :scaptimony_policies, :controller => :scaptimony_policies do
16
+ member do
17
+ match 'parse', :to => 'scaptimony_policies#parse'
18
+ match 'dashboard', :to => 'scaptimony_policy_dashboard#index', :as => 'scaptimony_policy_dashboard'
19
+ end
9
20
  collection do
21
+ get 'auto_complete_search'
10
22
  post 'scap_content_selected'
23
+ get 'select_multiple_hosts'
24
+ post 'update_multiple_hosts'
25
+ end
26
+ end
27
+ resources :scap_contents,
28
+ :as => :scaptimony_scap_contents, :controller => :scaptimony_scap_contents do
29
+ collection do
30
+ get 'auto_complete_search'
11
31
  end
12
32
  end
13
- resources :scap_contents, :only => [:index, :show, :new, :create, :edit, :update],
14
- :as => :scaptimony_scap_contents, :controller => :scaptimony_scap_contents
15
33
  end
16
34
 
17
35
  namespace :api do
18
36
  scope "(:apiv)", :module => :v2, :defaults => {:apiv => 'v2'},
19
37
  :apiv => /v1|v2/, :constraints => ApiConstraints.new(:version => 2) do
20
- namespace :openscap do
21
- post 'arf_reports/:cname/:policy/:date', \
38
+ namespace :compliance do
39
+ post 'arf_reports/:cname/:policy_id/:date', \
22
40
  :constraints => { :cname => /[^\/]+/ }, :to => 'arf_reports#create'
23
41
  end
24
42
  end
@@ -0,0 +1,2 @@
1
+ f = Feature.find_or_create_by_name('Openscap')
2
+ raise "Unable to create proxy feature: #{format_errors f}" if f.nil? || f.errors.any?
@@ -17,13 +17,17 @@ module ForemanOpenscap
17
17
 
18
18
  initializer 'foreman_openscap.assets.precompile' do |app|
19
19
  app.config.assets.precompile += %w(
20
- 'foreman_openscap/policy_edit.js'
20
+ 'foreman_openscap/policy_edit.js',
21
+ 'foreman_openscap/period_selector.js',
22
+ 'foreman_openscap/policy.css'
21
23
  )
22
24
  end
23
25
 
24
26
  initializer 'foreman_openscap.configure_assets', :group => :assets do
25
27
  SETTINGS[:foreman_openscap] =
26
- { :assets => { :precompile => ['foreman_openscap/policy_edit.js']}}
28
+ {:assets => {:precompile => ['foreman_openscap/policy_edit.js',
29
+ 'foreman_openscap/period_selector.js',
30
+ 'foreman_openscap/policy.css']}}
27
31
  end
28
32
 
29
33
  initializer 'foreman_openscap.register_plugin', :after=> :finisher_hook do |app|
@@ -37,7 +41,8 @@ module ForemanOpenscap
37
41
  :scaptimony_scap_contents => [:index, :show],
38
42
  }
39
43
  permission :edit_compliance, {:scaptimony_arf_reports => [:destroy],
40
- :scaptimony_policies => [:new, :create, :edit, :update, :destroy],
44
+ :scaptimony_policies => [:new, :create, :edit, :update, :destroy,
45
+ :select_multiple_hosts, :upldate_multiple_hosts],
41
46
  :scaptimony_scap_contents => [:new, :create, :edit, :update]
42
47
  }
43
48
  end
@@ -56,20 +61,21 @@ module ForemanOpenscap
56
61
  menu :top_menu, :compliance_reports, :caption => N_('Reports'),
57
62
  :url_hash => {:controller => :'scaptimony_arf_reports', :action => :index },
58
63
  :parent => :hosts_menu
64
+
65
+ # add dashboard widget
66
+ widget 'foreman_openscap_host_reports_widget', :name => N_('OpenSCAP Host reports widget'), :sizex => 4, :sizey =>1
67
+ widget 'foreman_openscap_reports_breakdown_widget', :name => N_('OpenSCAP Host reports widget'), :sizex => 4, :sizey =>1
59
68
  end
60
69
  end
61
70
 
62
71
  #Include concerns in this config.to_prepare block
63
72
  config.to_prepare do
64
- begin
65
- Host::Managed.send(:include, ForemanOpenscap::HostExtensions)
66
- HostsHelper.send(:include, ForemanOpenscap::HostsHelperExtensions)
67
- ::Scaptimony::ArfReport.send(:include, ForemanOpenscap::ArfReportExtensions)
68
- ::Scaptimony::Policy.send(:include, ForemanOpenscap::PolicyExtensions)
69
- ::Scaptimony::ScapContent.send(:include, ForemanOpenscap::ScapContentExtensions)
70
- rescue => e
71
- puts "ForemanOpenscap: skipping engine hook (#{e.to_s})"
72
- end
73
+ Host::Managed.send(:include, ForemanOpenscap::HostExtensions)
74
+ HostsHelper.send(:include, ForemanOpenscap::HostsHelperExtensions)
75
+ ::Scaptimony::ArfReport.send(:include, ForemanOpenscap::ArfReportExtensions)
76
+ ::Scaptimony::Asset.send(:include, ForemanOpenscap::AssetExtensions)
77
+ ::Scaptimony::Policy.send(:include, ForemanOpenscap::PolicyExtensions)
78
+ ::Scaptimony::ScapContent.send(:include, ForemanOpenscap::ScapContentExtensions)
73
79
  end
74
80
 
75
81
  rake_tasks do
@@ -10,12 +10,6 @@
10
10
 
11
11
  module ForemanOpenscap::Helper
12
12
  def self.get_asset(cname)
13
- host = Host.find_by_name!(cname)
14
- if host.auditable_host.nil?
15
- # TODO:RAILS-4.0: This should become: asset = Asset.find_or_create_by!(name: cname)
16
- asset = Scaptimony::Asset.first_or_create!(:name => cname)
17
- host.auditable_host = Scaptimony::AuditableHost.where(:asset_id => asset.id, :host_id => host.id).first_or_create
18
- end
19
- return host.auditable_host.asset
13
+ Host.find_by_name!(cname).get_asset
20
14
  end
21
15
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanOpenscap
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  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: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Šimon Lukašík
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-23 00:00:00.000000000 Z
11
+ date: 2015-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -45,48 +45,75 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - app/overrides/dashboard/index/sample_override.html.erb.deface
49
- - app/helpers/arf_reports_helper.rb
50
- - app/helpers/concerns/foreman_openscap/hosts_helper_extensions.rb
51
- - app/helpers/scaptimony_policies_helper.rb
52
- - app/assets/javascript/policy_edit.js
53
- - app/models/scaptimony/asset.rb
54
- - app/models/concerns/foreman_openscap/scap_content_extensions.rb
55
- - app/models/concerns/foreman_openscap/host_extensions.rb
56
- - app/models/concerns/foreman_openscap/policy_extensions.rb
57
- - app/models/concerns/foreman_openscap/arf_report_extensions.rb
58
- - app/controllers/scaptimony_policies_controller.rb
59
- - app/controllers/scaptimony_dashboard_controller.rb
60
- - app/controllers/api/v2/openscap/arf_reports_controller.rb
61
- - app/controllers/scaptimony_scap_contents_controller.rb
62
- - app/controllers/scaptimony_arf_reports_controller.rb
63
- - app/views/scaptimony_scap_contents/index.html.erb
48
+ - app/views/scaptimony_arf_reports/show.html.erb
49
+ - app/views/scaptimony_arf_reports/_host_report.html.erb
50
+ - app/views/scaptimony_arf_reports/index.html.erb
51
+ - app/views/scaptimony_arf_reports/_list.html.erb
52
+ - app/views/dashboard/_foreman_openscap_host_reports_widget.html.erb
53
+ - app/views/dashboard/_foreman_openscap_reports_breakdown_widget.html.erb
64
54
  - app/views/scaptimony_scap_contents/_form.html.erb
65
- - app/views/scaptimony_scap_contents/_list.html.erb
66
55
  - app/views/scaptimony_scap_contents/new.html.erb
56
+ - app/views/scaptimony_scap_contents/index.html.erb
57
+ - app/views/scaptimony_scap_contents/_list.html.erb
67
58
  - app/views/scaptimony_scap_contents/edit.html.erb
68
- - app/views/scaptimony_arf_reports/index.html.erb
69
- - app/views/scaptimony_arf_reports/_list.html.erb
70
- - app/views/scaptimony_policies/_scap_content_results.html.erb
71
- - app/views/scaptimony_policies/index.html.erb
59
+ - app/views/scaptimony_policy_dashboard/_policy_reports.html.erb
60
+ - app/views/scaptimony_policy_dashboard/index.html.erb
61
+ - app/views/scaptimony_policy_dashboard/_policy_status_widget.html.erb
62
+ - app/views/scaptimony_policy_dashboard/_policy_chart_widget.html.erb
63
+ - app/views/scaptimony_policies/welcome.html.erb
72
64
  - app/views/scaptimony_policies/_form.html.erb
73
- - app/views/scaptimony_policies/_list.html.erb
65
+ - app/views/scaptimony_policies/select_multiple_hosts.html.erb
66
+ - app/views/scaptimony_policies/show.html.erb
74
67
  - app/views/scaptimony_policies/new.html.erb
68
+ - app/views/scaptimony_policies/steps/_organizations_form.html.erb
69
+ - app/views/scaptimony_policies/steps/_hostgroups_form.html.erb
70
+ - app/views/scaptimony_policies/steps/_locations_form.html.erb
71
+ - app/views/scaptimony_policies/steps/_scap_content_form.html.erb
72
+ - app/views/scaptimony_policies/steps/_schedule_form.html.erb
73
+ - app/views/scaptimony_policies/steps/_create_policy_form.html.erb
74
+ - app/views/scaptimony_policies/steps/_step_form.html.erb
75
+ - app/views/scaptimony_policies/create.html.erb
76
+ - app/views/scaptimony_policies/index.html.erb
77
+ - app/views/scaptimony_policies/_list.html.erb
78
+ - app/views/scaptimony_policies/_scap_content_results.html.erb
75
79
  - app/views/scaptimony_policies/edit.html.erb
76
- - app/views/scaptimony_policies/welcome.html.erb
80
+ - app/overrides/hosts/index/host_arf_report.rb
81
+ - app/helpers/scaptimony_policies_helper.rb
82
+ - app/helpers/scaptimony_report_dashboard_helper.rb
83
+ - app/helpers/scaptimony_policy_dashboard_helper.rb
84
+ - app/helpers/concerns/foreman_openscap/hosts_helper_extensions.rb
85
+ - app/helpers/arf_reports_helper.rb
86
+ - app/controllers/scaptimony_policy_dashboard_controller.rb
87
+ - app/controllers/scaptimony_policies_controller.rb
88
+ - app/controllers/scaptimony_scap_contents_controller.rb
89
+ - app/controllers/api/v2/compliance/arf_reports_controller.rb
90
+ - app/controllers/scaptimony_dashboard_controller.rb
91
+ - app/controllers/scaptimony_arf_reports_controller.rb
92
+ - app/assets/javascript/foreman_openscap/period_selector.js
93
+ - app/assets/javascript/foreman_openscap/policy_edit.js
94
+ - app/assets/stylesheets/foreman_openscap/policy.css.scss
95
+ - app/services/scaptimony/policy_dashboard/data.rb
96
+ - app/services/scaptimony/policy_dashboard/manager.rb
97
+ - app/services/scaptimony/policy_dashboard/loader.rb
98
+ - app/services/scaptimony/report_dashboard/data.rb
99
+ - app/models/concerns/foreman_openscap/arf_report_extensions.rb
100
+ - app/models/concerns/foreman_openscap/host_extensions.rb
101
+ - app/models/concerns/foreman_openscap/policy_extensions.rb
102
+ - app/models/concerns/foreman_openscap/scap_content_extensions.rb
103
+ - app/models/concerns/foreman_openscap/asset_extensions.rb
77
104
  - config/routes.rb
78
- - db/migrate/20141017172055_create_scaptimony_auditable_hosts.rb
105
+ - db/seeds.d/openscap_feature.rb
106
+ - lib/tasks/foreman_openscap_tasks.rake
79
107
  - lib/foreman_openscap/engine.rb
80
108
  - lib/foreman_openscap/helper.rb
81
109
  - lib/foreman_openscap/version.rb
82
110
  - lib/foreman_openscap.rb
83
- - lib/tasks/foreman_openscap_tasks.rake
84
111
  - LICENSE
85
112
  - Rakefile
86
113
  - README.md
87
114
  - test/unit/foreman_openscap_test.rb
88
- - test/factories/foreman_openscap_factories.rb
89
115
  - test/test_plugin_helper.rb
116
+ - test/factories/foreman_openscap_factories.rb
90
117
  homepage: https://github.com/OpenSCAP/foreman_openscap
91
118
  licenses:
92
119
  - GPL-3.0
@@ -107,12 +134,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
134
  version: '0'
108
135
  requirements: []
109
136
  rubyforge_project:
110
- rubygems_version: 2.0.3
137
+ rubygems_version: 2.1.11
111
138
  signing_key:
112
139
  specification_version: 4
113
140
  summary: Foreman plug-in for displaying OpenSCAP audit reports
114
141
  test_files:
115
142
  - test/unit/foreman_openscap_test.rb
116
- - test/factories/foreman_openscap_factories.rb
117
143
  - test/test_plugin_helper.rb
118
- has_rdoc:
144
+ - test/factories/foreman_openscap_factories.rb
@@ -1,14 +0,0 @@
1
- function scap_content_selected(element){
2
- var attrs = attribute_hash(['scap_content_id']);
3
- var url = $(element).attr('data-url');
4
- $(element).indicator_show();
5
- $.ajax({
6
- data: attrs,
7
- type: 'post',
8
- url: url,
9
- complete: function() { $(element).indicator_hide();},
10
- success: function(request) {
11
- $('#scap_content_profile_select').html(request);
12
- }
13
- })
14
- }
@@ -1,4 +0,0 @@
1
- <!-- insert_before 'div:contains("title_action")' -->
2
- <%= title_actions "<h2>ForemanOpenSCAP</h2>" %>
3
-
4
- <!-- vim: set ft=eruby : -->
@@ -1,9 +0,0 @@
1
- class CreateScaptimonyAuditableHosts < ActiveRecord::Migration
2
- def change
3
- create_table :scaptimony_auditable_hosts, :id => false do |t|
4
- t.references :asset, :null => false
5
- t.references :host, :null => false
6
- end
7
- add_index :scaptimony_auditable_hosts, [:asset_id, :host_id], :unique => true
8
- end
9
- end