foreman_openscap 6.0.0 → 7.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_openscap/locale/cs_CZ/foreman_openscap.js +1302 -0
  3. data/app/assets/javascripts/foreman_openscap/locale/de/foreman_openscap.js +1302 -0
  4. data/app/assets/javascripts/foreman_openscap/locale/en/foreman_openscap.js +1302 -0
  5. data/app/assets/javascripts/foreman_openscap/locale/en_GB/foreman_openscap.js +1302 -0
  6. data/app/assets/javascripts/foreman_openscap/locale/es/foreman_openscap.js +1304 -0
  7. data/app/assets/javascripts/foreman_openscap/locale/fr/foreman_openscap.js +1304 -0
  8. data/app/assets/javascripts/foreman_openscap/locale/gl/foreman_openscap.js +1302 -0
  9. data/app/assets/javascripts/foreman_openscap/locale/it/foreman_openscap.js +1302 -0
  10. data/app/assets/javascripts/foreman_openscap/locale/ja/foreman_openscap.js +1300 -0
  11. data/app/assets/javascripts/foreman_openscap/locale/ko/foreman_openscap.js +1302 -0
  12. data/app/assets/javascripts/foreman_openscap/locale/pt_BR/foreman_openscap.js +1304 -0
  13. data/app/assets/javascripts/foreman_openscap/locale/ru/foreman_openscap.js +1302 -0
  14. data/app/assets/javascripts/foreman_openscap/locale/sv_SE/foreman_openscap.js +1302 -0
  15. data/app/assets/javascripts/foreman_openscap/locale/zh_CN/foreman_openscap.js +1300 -0
  16. data/app/assets/javascripts/foreman_openscap/locale/zh_TW/foreman_openscap.js +1302 -0
  17. data/app/controllers/api/v2/compliance/arf_reports_controller.rb +2 -1
  18. data/app/controllers/concerns/foreman_openscap/hosts_and_hostgroups_controller_extensions.rb +1 -1
  19. data/app/controllers/policies_controller.rb +10 -5
  20. data/app/controllers/tailoring_files_controller.rb +3 -0
  21. data/app/helpers/compliance_hosts_helper.rb +2 -0
  22. data/app/helpers/foreman_openscap_helper.rb +11 -8
  23. data/app/helpers/policies_helper.rb +2 -0
  24. data/app/services/foreman_openscap/client_config/ansible.rb +4 -1
  25. data/app/services/foreman_openscap/client_config/manual.rb +1 -1
  26. data/app/services/foreman_openscap/client_config/puppet.rb +4 -1
  27. data/app/services/foreman_openscap/oval/sync_oval_contents.rb +2 -2
  28. data/app/views/arf_reports/_list.html.erb +1 -1
  29. data/app/views/arf_reports/show.html.erb +0 -1
  30. data/app/views/arf_reports/welcome.html.erb +1 -1
  31. data/app/views/compliance_hosts/show.html.erb +1 -1
  32. data/app/views/policies/_list.html.erb +3 -3
  33. data/app/views/policies/index.html.erb +1 -1
  34. data/app/views/policies/steps/_deployment_options_form.html.erb +1 -1
  35. data/app/views/policies/steps/_policy_attributes_form.html.erb +1 -1
  36. data/app/views/policies/steps/_schedule_form.html.erb +8 -4
  37. data/app/views/policy_dashboard/index.html.erb +1 -1
  38. data/app/views/scap_contents/_list.html.erb +3 -3
  39. data/app/views/scap_contents/index.html.erb +1 -1
  40. data/app/views/tailoring_files/_list.html.erb +3 -3
  41. data/app/views/tailoring_files/index.html.erb +1 -1
  42. data/lib/foreman_openscap/bulk_upload.rb +7 -7
  43. data/lib/foreman_openscap/engine.rb +2 -7
  44. data/lib/foreman_openscap/version.rb +1 -1
  45. data/locale/Makefile +6 -3
  46. data/locale/cs_CZ/LC_MESSAGES/foreman_openscap.mo +0 -0
  47. data/locale/cs_CZ/foreman_openscap.edit.po +1735 -0
  48. data/locale/cs_CZ/foreman_openscap.po +1309 -0
  49. data/locale/cs_CZ/foreman_openscap.po.time_stamp +0 -0
  50. data/locale/de/foreman_openscap.edit.po +1745 -0
  51. data/locale/de/foreman_openscap.po +195 -0
  52. data/locale/de/foreman_openscap.po.time_stamp +0 -0
  53. data/locale/en/LC_MESSAGES/foreman_openscap.mo +0 -0
  54. data/locale/en/foreman_openscap.edit.po +1735 -0
  55. data/locale/en/foreman_openscap.po +1309 -0
  56. data/locale/en/foreman_openscap.po.time_stamp +0 -0
  57. data/locale/en_GB/foreman_openscap.edit.po +1735 -0
  58. data/locale/en_GB/foreman_openscap.po +195 -0
  59. data/locale/en_GB/foreman_openscap.po.time_stamp +0 -0
  60. data/locale/es/foreman_openscap.edit.po +1740 -0
  61. data/locale/es/foreman_openscap.po +195 -0
  62. data/locale/es/foreman_openscap.po.time_stamp +0 -0
  63. data/locale/foreman_openscap.pot +388 -76
  64. data/locale/fr/foreman_openscap.edit.po +1746 -0
  65. data/locale/fr/foreman_openscap.po +195 -0
  66. data/locale/fr/foreman_openscap.po.time_stamp +0 -0
  67. data/locale/gl/foreman_openscap.edit.po +1735 -0
  68. data/locale/gl/foreman_openscap.po +195 -0
  69. data/locale/gl/foreman_openscap.po.time_stamp +0 -0
  70. data/locale/it/foreman_openscap.edit.po +1737 -0
  71. data/locale/it/foreman_openscap.po +195 -0
  72. data/locale/it/foreman_openscap.po.time_stamp +0 -0
  73. data/locale/ja/foreman_openscap.edit.po +1741 -0
  74. data/locale/ja/foreman_openscap.po +195 -0
  75. data/locale/ja/foreman_openscap.po.time_stamp +0 -0
  76. data/locale/ko/foreman_openscap.edit.po +1735 -0
  77. data/locale/ko/foreman_openscap.po +195 -0
  78. data/locale/ko/foreman_openscap.po.time_stamp +0 -0
  79. data/locale/pt_BR/foreman_openscap.edit.po +1745 -0
  80. data/locale/pt_BR/foreman_openscap.po +195 -0
  81. data/locale/pt_BR/foreman_openscap.po.time_stamp +0 -0
  82. data/locale/ru/foreman_openscap.edit.po +1739 -0
  83. data/locale/ru/foreman_openscap.po +195 -0
  84. data/locale/ru/foreman_openscap.po.time_stamp +0 -0
  85. data/locale/sv_SE/foreman_openscap.edit.po +1735 -0
  86. data/locale/sv_SE/foreman_openscap.po +195 -0
  87. data/locale/sv_SE/foreman_openscap.po.time_stamp +0 -0
  88. data/locale/zh_CN/foreman_openscap.edit.po +1740 -0
  89. data/locale/zh_CN/foreman_openscap.po +195 -0
  90. data/locale/zh_CN/foreman_openscap.po.time_stamp +0 -0
  91. data/locale/zh_TW/foreman_openscap.edit.po +1736 -0
  92. data/locale/zh_TW/foreman_openscap.po +195 -0
  93. data/locale/zh_TW/foreman_openscap.po.time_stamp +0 -0
  94. data/package.json +0 -3
  95. data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js +2 -2
  96. data/webpack/routes/OvalPolicies/OvalPoliciesNew/HostgroupSelect.js +1 -1
  97. data/webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyFormHelpers.js +3 -3
  98. data/webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShowHelper.js +4 -4
  99. metadata +54 -5
@@ -124,7 +124,8 @@ module Api
124
124
  end
125
125
 
126
126
  def handle_download_error(error)
127
- render_error 'standard_error', :status => :internal_error, :locals => { :exception => error }
127
+ render_error :custom_error, :status => :unprocessable_entity,
128
+ :locals => { :message => _("Downloading the report failed: #{error.message}") }
128
129
  end
129
130
 
130
131
  def upload_fail(msg)
@@ -7,7 +7,7 @@ module ForemanOpenscap
7
7
 
8
8
  def detect_proxy_without_scap
9
9
  unless openscap_proxy_id.nil?
10
- error = "The #{openscap_proxy_id[:name]} proxy does not have Openscap feature enabled. Either set correct OpenSCAP Proxy or unset it."
10
+ error = _("The %s proxy does not have Openscap feature enabled. Either set correct OpenSCAP Proxy or unset it.") % openscap_proxy_id[:name]
11
11
  return error(error, :now => true) unless scap_enabled_proxy?(openscap_proxy_id)
12
12
  end
13
13
  end
@@ -117,13 +117,18 @@ class PoliciesController < ApplicationController
117
117
  @tailoring_file = ForemanOpenscap::TailoringFile.find(params[:tailoring_file_id]) if params[:tailoring_file_id].present?
118
118
  end
119
119
 
120
+ def multiple_with_filter?
121
+ params.key?(:search)
122
+ end
123
+
120
124
  def find_multiple
121
- # Lets search by name or id and make sure one of them exists first
122
- if params[:host_ids].present?
123
- @hosts = Host.where("id IN (?)", params[:host_ids])
125
+ if params.key?(:host_names) || params.key?(:host_ids) || multiple_with_filter?
126
+ @hosts = Host.search_for(params[:search]) if multiple_with_filter?
127
+ @hosts ||= Host.merge(Host.where(id: params[:host_ids]).or(Host.where(name: params[:host_names])))
124
128
  if @hosts.empty?
125
- error _('No hosts were found.')
126
- redirect_to(hosts_path) && (return false)
129
+ error _('No hosts were found with that id, name or query filter')
130
+ redirect_to(hosts_path)
131
+ return false
127
132
  end
128
133
  else
129
134
  error _('No hosts selected')
@@ -24,6 +24,9 @@ class TailoringFilesController < ApplicationController
24
24
  else
25
25
  process_error
26
26
  end
27
+ rescue RestClient::Exception => e
28
+ @tailoring_file.errors.add(:scap_file, :invalid, message: e.http_body)
29
+ process_error
27
30
  end
28
31
 
29
32
  def edit
@@ -20,6 +20,8 @@ module ComplianceHostsHelper
20
20
  end
21
21
 
22
22
  def compliance_host_multiple_actions
23
+ return [] unless User.current.can?(:edit_hosts)
24
+
23
25
  [
24
26
  { :action => [_('Assign Compliance Policy'), select_multiple_hosts_policies_path], :priority => 1210 },
25
27
  { :action => [_('Unassign Compliance Policy'), disassociate_multiple_hosts_policies_path], :priority => 1211 },
@@ -1,12 +1,8 @@
1
1
  require 'foreman_openscap/version'
2
2
 
3
3
  module ForemanOpenscapHelper
4
- def scap_doc_link(section = '', text = _('documentation'))
5
- link_to(
6
- text,
7
- scap_doc_url(section),
8
- :rel => 'external noopener noreferrer', :target => '_blank'
9
- )
4
+ def scap_doc_button(section)
5
+ documentation_button(section, root_url: scap_doc_url)
10
6
  end
11
7
 
12
8
  def scap_doc_url(section = '')
@@ -15,10 +11,17 @@ module ForemanOpenscapHelper
15
11
  documentation_url(section, root_url: scap_root_url)
16
12
  end
17
13
 
14
+ private
15
+
16
+ def doc_flavor
17
+ ForemanOpenscap.with_katello? ? 'katello' : 'foreman-el'
18
+ end
19
+
18
20
  def scap_root_url
19
21
  @scap_root_url ||= begin
20
- version = ForemanOpenscap::VERSION.split('.')[0..-2].join('.')
21
- "https://theforeman.org/plugins/foreman_openscap/#{version}/index.html"
22
+ version = SETTINGS[:version]
23
+ version = version.tag == 'develop' ? 'nightly' : version.short
24
+ "https://docs.theforeman.org/#{version}/Managing_Security_Compliance/index-#{doc_flavor}.html#"
22
25
  end
23
26
  end
24
27
  end
@@ -55,11 +55,13 @@ module PoliciesHelper
55
55
  select_f form, :scap_content_id, scap_contents, :id, :title,
56
56
  { :include_blank => _("Choose existing SCAP Content") },
57
57
  { :label => _("SCAP Content"),
58
+ :required => true,
58
59
  :onchange => 'scap_content_selected(this);',
59
60
  :'data-url' => method_path('scap_content_selected') }
60
61
  else
61
62
  select_f form, :scap_content_id, scap_contents, :id, :title,
62
63
  { :label => _("SCAP Content"),
64
+ :required => true,
63
65
  :onchange => 'scap_content_selected(this);',
64
66
  :'data-url' => method_path('scap_content_selected') }
65
67
  end
@@ -20,8 +20,11 @@ module ForemanOpenscap
20
20
  end
21
21
 
22
22
  def inline_help
23
+ t1 = _("Requires Ansible plugin, %s Ansible role and variables. This will assign the role to the hosts or selected hostgroups.") % ansible_role_name
24
+ t2 = _("To deploy foreman_scap_client, ansible roles run needs to be triggered manually. Manual run is also required after any change to this policy.")
25
+
23
26
  {
24
- :text => "Requires Ansible plugin, #{ansible_role_name} Ansible role and variables. This will assign the role to the hosts or selected hostgroups.<br>To deploy foreman_scap_client, ansible roles run needs to be triggered manually. Manual run is also required after any change to this policy.",
27
+ :text => "#{t1}<br>#{t2}",
25
28
  :replace_text => 'Ansible role',
26
29
  :route_helper_method => :hash_for_ansible_roles_path
27
30
  }
@@ -11,7 +11,7 @@ module ForemanOpenscap
11
11
 
12
12
  def inline_help
13
13
  {
14
- :text => "This leaves the setup of the foreman_scap_client solely on the user. The policy still needs to be defined in order to link incoming ARF reports."
14
+ :text => _("This leaves the setup of the foreman_scap_client solely on the user. The policy still needs to be defined in order to link incoming ARF reports.")
15
15
  }
16
16
  end
17
17
 
@@ -14,8 +14,11 @@ module ForemanOpenscap
14
14
  end
15
15
 
16
16
  def inline_help
17
+ t1 = _("Requires %s Puppet class. This will assign the class to the hosts or selected hostgroups.") % puppetclass_name
18
+ t2 = _("Every puppet run ensures the foreman_scap_client is configured according to the policy.")
19
+
17
20
  {
18
- :text => "Requires #{puppetclass_name} Puppet class. This will assign the class to the hosts or selected hostgroups.<br>Every puppet run ensures the foreman_scap_client is configured according to the policy.",
21
+ :text => "#{t1}<br>#{t2}",
19
22
  :replace_text => 'Puppet class',
20
23
  :route_helper_method => :hash_for_puppetclasses_path
21
24
  }
@@ -5,7 +5,7 @@ module ForemanOpenscap
5
5
  begin
6
6
  content_blob = fetch_content_blob(oval_content.url)
7
7
  rescue StandardError => e
8
- oval_content.errors.add(:base, "#{fail_msg oval_content}, cause: #{e.message}")
8
+ oval_content.errors.add(:base, "#{fail_msg oval_content}, " + _("cause: ") + e.message)
9
9
  return oval_content
10
10
  end
11
11
 
@@ -25,7 +25,7 @@ module ForemanOpenscap
25
25
  private
26
26
 
27
27
  def fail_msg(content)
28
- "Failed to fetch content file from #{content.url}"
28
+ _("Failed to fetch content file from %s") % content.url
29
29
  end
30
30
 
31
31
  def fetch_content_blob(url)
@@ -3,7 +3,7 @@
3
3
  <table class="<%= table_css_classes %>">
4
4
  <tr>
5
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
- <th><%= sort :host %></th>
6
+ <th><%= sort :host, as: _('Host') %></th>
7
7
  <th><%= sort :reported, :as => _("Reported At") %></th>
8
8
  <th><%= sort :policy, :as => _("Policy") %></th>
9
9
  <th><%= sort :openscap_proxy, :as => _("Openscap Proxy") %></th>
@@ -1,4 +1,3 @@
1
- <% javascript 'charts' %>
2
1
  <% javascript 'foreman_openscap/reports' %>
3
2
  <% stylesheet 'foreman_openscap/reports' %>
4
3
 
@@ -9,6 +9,6 @@
9
9
  <%= _("You don't seem to have any ARF report. ARF report is a summary of a single scan occurrence on a particular host for a given Compliance Policy.") %></br>
10
10
  </p>
11
11
  <div class="blank-slate-pf-main-action">
12
- <%= link_to _('Documentation'), documentation_url("4.4ARFReports", :root_url => "https://www.theforeman.org/plugins/foreman_openscap/0.8/index.html#"), :rel => 'external', :class => 'btn btn-primary btn-lg' %>
12
+ <%= link_to _('Documentation'), scap_doc_url("Monitoring_Compliance_security-compliance"), :rel => 'external', :class => 'btn btn-primary btn-lg' %>
13
13
  </div>
14
14
  </div>
@@ -1,4 +1,4 @@
1
- <% javascript 'charts', 'foreman_openscap/scap_hosts_show' %>
1
+ <% javascript 'foreman_openscap/scap_hosts_show' %>
2
2
  <% stylesheet 'foreman_openscap/scap_breakdown_chart' %>
3
3
 
4
4
  <%= breadcrumbs(:resource_url => api_hosts_path,
@@ -1,8 +1,8 @@
1
1
  <table class="<%= table_css_classes('table-fixed') %>">
2
2
  <tr>
3
- <th><%= sort :name %></th>
4
- <th><%= sort :content %></th>
5
- <th><%= sort :profile %></th>
3
+ <th><%= sort :name, as: _('Name') %></th>
4
+ <th><%= sort :content, as: _('Content') %></th>
5
+ <th><%= sort :profile, as: _('Profile') %></th>
6
6
  <th><%= sort :tailoring_file, :as => _('Tailoring File') %></th>
7
7
  <th><%= sort :tailoring_file_profile, :as => _('Effective Profile') %></th>
8
8
  <th><%= _('Actions') %></th>
@@ -3,7 +3,7 @@
3
3
 
4
4
  <% title_actions(
5
5
  display_link_if_authorized(_("New Compliance Policy"), hash_for_new_policy_path, :class => "btn btn-primary"),
6
- documentation_button('#4.2Creatingpolicywizard', :root_url => scap_doc_url)
6
+ scap_doc_button('Managing_Compliance_Policies_security-compliance')
7
7
  ) %>
8
8
 
9
9
  <%= render :partial => 'list' %>
@@ -4,7 +4,7 @@
4
4
  <div class="alert alert-info" id="scap-deployment-options-info-banner">
5
5
  <span class="pficon pficon-info"></span>
6
6
  <strong><%= _('There are significant differences in deployment options.') %></strong>
7
- <%= _('Please make sure you understand them by reading our') %> <%=scap_doc_link('#2.3Policydeploymentoptions') %>.
7
+ <%= _('Please make sure you understand them by reading our') %> <%= link_to(_('documentation'), scap_doc_url('deploying-compliance-policies_security-compliance'), :rel => 'external noopener noreferrer', :target => '_blank') %>.
8
8
  </div>
9
9
 
10
10
  <%= deploy_by_radios f, @policy %>
@@ -1,5 +1,5 @@
1
1
  <div class="tab-pane <%= show_partial_wizard(step) %>" id="create-policy">
2
2
  <%= wizard_header @policy.step_index, *translate_steps(@policy) %>
3
- <%= text_f(f, :name) %>
3
+ <%= text_f(f, :name, :required => true) %>
4
4
  <%= text_f(f, :description, :size => "col-md-8" ) %>
5
5
  </div>
@@ -4,8 +4,12 @@
4
4
  <%= wizard_header @policy.step_index, *@policy.steps %>
5
5
  <%= select_f(f, :period, %w[Weekly Monthly Custom], :downcase, :to_s,
6
6
  { :include_blank => _('Choose period') },
7
- { :onchange => 'period_selected(this)' }) %>
8
- <%= select_f(f, :weekday, days_of_week_hash, :first, :last, :include_blank => _('Choose weekday')) %>
9
- <%= select_f(f, :day_of_month, (1..31).to_a, :to_i, :to_s, :help_inline => _('Number of a day in month, note that not all months have same count of days'), :include_blank => _('Choose day in month')) %>
10
- <%= text_f(f, :cron_line, :help_inline => _('You can specify custom cron line, e.g. "0 3 * * *", separate each of 5 values by space')) %>
7
+ { :onchange => 'period_selected(this)', :required => true }) %>
8
+ <%= select_f(f, :weekday, days_of_week_hash, :first, :last,
9
+ { :include_blank => _('Choose weekday') },
10
+ { :required => true }) %>
11
+ <%= select_f(f, :day_of_month, (1..31).to_a, :to_i, :to_s,
12
+ { :include_blank => _('Choose day in month') },
13
+ { :help_inline => _('Number of a day in month, note that not all months have same count of days'), :required => true }) %>
14
+ <%= text_f(f, :cron_line, :help_inline => _('You can specify custom cron line, e.g. "0 3 * * *", separate each of 5 values by space'), :required => true) %>
11
15
  </div>
@@ -1,4 +1,4 @@
1
- <% javascript 'charts', 'foreman_openscap/policy_dashboard' %>
1
+ <% javascript 'foreman_openscap/policy_dashboard' %>
2
2
 
3
3
  <% title _("Compliance policy: %s") % @policy.name %>
4
4
 
@@ -1,8 +1,8 @@
1
1
  <table class="<%= table_css_classes('table-two-pane table-fixed') %>">
2
2
  <tr>
3
- <th class="col-md-4"><%= sort :title %></th>
4
- <th class="col-md-5"><%= sort :filename %></th>
5
- <th class="col-md-2"><%= sort :created_at %></th>
3
+ <th class="col-md-4"><%= sort :title, as: _('Title') %></th>
4
+ <th class="col-md-5"><%= sort :filename, as: _('File name') %></th>
5
+ <th class="col-md-2"><%= sort :created_at, as: _('Created at') %></th>
6
6
  <th class="col-md-1"><%= _('Actions') %></th>
7
7
  </tr>
8
8
  <% for content in @contents %>
@@ -1,6 +1,6 @@
1
1
  <% title _("SCAP Contents") %>
2
2
 
3
3
  <% title_actions(display_link_if_authorized(_("Upload New SCAP Content"), hash_for_new_scap_content_path, :class => 'btn btn-primary'),
4
- documentation_button('#4.1CreatingSCAPcontent', :root_url => scap_doc_url)) %>
4
+ scap_doc_button('Configuring_SCAP_Contents_security-compliance')) %>
5
5
 
6
6
  <%= render :partial => 'list' %>
@@ -1,8 +1,8 @@
1
1
  <table class="<%= table_css_classes('table-fixed') %>">
2
2
  <tr>
3
- <th class="col-md-4"><%= sort :name %></th>
4
- <th class="col-md-5"><%= sort :filename %></th>
5
- <th class="col-md-2"><%= sort :created_at %></th>
3
+ <th class="col-md-4"><%= sort :name, as: _('Name') %></th>
4
+ <th class="col-md-5"><%= sort :filename, as: _('File name') %></th>
5
+ <th class="col-md-2"><%= sort :created_at, as: _('Created at') %></th>
6
6
  <th class="col-md-1"><%= _('Actions') %></th>
7
7
  </tr>
8
8
  <% @tailoring_files.each do |file| %>
@@ -1,4 +1,4 @@
1
1
  <% title _("Tailoring Files") %>
2
2
  <% title_actions(display_link_if_authorized(_("Upload New Tailoring file"), hash_for_new_tailoring_file_path, :class => 'btn btn-primary'),
3
- documentation_button('#4.5Tailoringfiles(foreman_openscap>=0.6.5)', :root_url => scap_doc_url)) %>
3
+ scap_doc_button('tailoring-xccdf-profiles_security-compliance')) %>
4
4
  <%= render :partial => 'list' %>
@@ -17,7 +17,7 @@ module ForemanOpenscap
17
17
 
18
18
  def upload_from_scap_guide
19
19
  unless scap_guide_installed?
20
- @result.errors.push("Can't find scap-security-guide RPM, are you sure it is installed on your server?")
20
+ @result.errors.push(_("Can't find scap-security-guide RPM, are you sure it is installed on your server?"))
21
21
  return @result
22
22
  end
23
23
 
@@ -26,18 +26,18 @@ module ForemanOpenscap
26
26
 
27
27
  def upload_from_files(files_array, from_scap_guide = false)
28
28
  unless files_array.is_a? Array
29
- @result.errors.push("Expected an array of files to upload, got: #{files_array}.")
29
+ @result.errors.push(_("Expected an array of files to upload, got: %s.") % files_array)
30
30
  return @result
31
31
  end
32
32
 
33
33
  files_array.each do |datastream|
34
34
  if File.directory?(datastream)
35
- @result.errors.push("#{datastream} is a directory, expecting file.")
35
+ @result.errors.push(_("%s is a directory, expecting file.") % datastream)
36
36
  next
37
37
  end
38
38
 
39
39
  unless File.file?(datastream)
40
- @result.errors.push("#{datastream} does not exist, skipping.")
40
+ @result.errors.push(_("%s does not exist, skipping.") % datastream)
41
41
  next
42
42
  end
43
43
 
@@ -55,7 +55,7 @@ module ForemanOpenscap
55
55
  if scap_content.save
56
56
  @result.results.push(scap_content)
57
57
  else
58
- @result.errors.push("Failed saving #{datastream}: #{scap_content.errors.full_messages.uniq.join(',')}")
58
+ @result.errors.push(_("Failed saving %s:") % datastream + " #{scap_content.errors.full_messages.uniq.join(',')}")
59
59
  end
60
60
  end
61
61
  @result
@@ -63,7 +63,7 @@ module ForemanOpenscap
63
63
 
64
64
  def upload_from_directory(directory_path)
65
65
  unless directory_path && Dir.exist?(directory_path)
66
- @result[:errors].push("No such directory: #{directory_path}. Please check the path you have provided.")
66
+ @result[:errors].push(_("No such directory: %s. Please check the path you have provided.") % directory_path)
67
67
  return @result
68
68
  end
69
69
 
@@ -85,7 +85,7 @@ module ForemanOpenscap
85
85
 
86
86
  def content_name(datastream, from_scap_guide)
87
87
  os_name = extract_name_from_file(datastream)
88
- from_scap_guide ? "Red Hat #{os_name} default content" : "#{os_name} content"
88
+ from_scap_guide ? (_("Red Hat %s default content") % os_name) : (_("%s content") % os_name)
89
89
  end
90
90
  end
91
91
  end
@@ -48,7 +48,8 @@ module ForemanOpenscap
48
48
 
49
49
  initializer 'foreman_openscap.register_plugin', :before => :finisher_hook do |app|
50
50
  Foreman::Plugin.register :foreman_openscap do
51
- requires_foreman '>= 3.3'
51
+ requires_foreman '>= 3.7'
52
+ register_gettext
52
53
 
53
54
  apipie_documented_controllers ["#{ForemanOpenscap::Engine.root}/app/controllers/api/v2/compliance/*.rb"]
54
55
 
@@ -246,12 +247,6 @@ module ForemanOpenscap
246
247
  end
247
248
  end
248
249
 
249
- initializer 'foreman_openscap.register_gettext', after: :load_config_initializers do |_app|
250
- locale_dir = File.join(File.expand_path('../../..', __FILE__), 'locale')
251
- locale_domain = 'foreman_openscap'
252
- Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
253
- end
254
-
255
250
  # Include concerns in this config.to_prepare block
256
251
  config.to_prepare do
257
252
  ::Api::V2::HostsController.send(:include, ForemanOpenscap::Api::V2::HostsControllerExtensions)
@@ -1,3 +1,3 @@
1
1
  module ForemanOpenscap
2
- VERSION = "6.0.0".freeze
2
+ VERSION = "7.1.0".freeze
3
3
  end
data/locale/Makefile CHANGED
@@ -14,6 +14,7 @@ POFILES = $(shell find . -name '$(DOMAIN).po')
14
14
  MOFILES = $(patsubst %.po,%.mo,$(POFILES))
15
15
  POXFILES = $(patsubst %.po,%.pox,$(POFILES))
16
16
  EDITFILES = $(patsubst %.po,%.edit.po,$(POFILES))
17
+ JSFILES = $(shell find ../app/assets/javascripts/*/locale -name '$(DOMAIN).js')
17
18
 
18
19
  %.mo: %.po
19
20
  mkdir -p $(shell dirname $@)/LC_MESSAGES
@@ -42,18 +43,20 @@ uniq-po:
42
43
  done
43
44
 
44
45
  tx-pull: $(EDITFILES)
45
- tx pull -f
46
+ cd .. && tx pull -f
46
47
  for f in $(EDITFILES) ; do \
47
48
  sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
48
49
  done
49
50
 
50
51
  tx-update: tx-pull
51
52
  @echo
52
- @echo Run rake plugin:gettext[$(DOMAIN)] from the Foreman installation, then make -C locale mo-files to finish
53
+ @echo Run rake plugin:gettext[$(DOMAIN)] from the Foreman installation
54
+ @echo then run rake plugin:po_to_json[$(DOMAIN)] from the Foreman installation
55
+ @echo then run make -C locale mo-files to finish
53
56
  @echo
54
57
 
55
58
  mo-files: $(MOFILES)
56
- git add $(POFILES) $(POTFILE) ../locale/*/LC_MESSAGES
59
+ git add $(POFILES) $(POTFILE) $(JSFILES) ../locale/*/LC_MESSAGES
57
60
  git commit -m "i18n - pulling from tx"
58
61
  @echo
59
62
  @echo Changes commited!