inspec-core 4.3.2 → 4.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (285) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +37 -21
  3. data/etc/deprecations.json +10 -0
  4. data/etc/plugin_filters.json +8 -0
  5. data/lib/bundles/inspec-compliance/api.rb +1 -1
  6. data/lib/bundles/inspec-compliance/configuration.rb +1 -1
  7. data/lib/bundles/inspec-compliance/http.rb +1 -1
  8. data/lib/bundles/inspec-compliance/support.rb +1 -1
  9. data/lib/bundles/inspec-compliance/target.rb +1 -1
  10. data/lib/bundles/inspec-supermarket.rb +3 -7
  11. data/lib/bundles/inspec-supermarket/api.rb +10 -13
  12. data/lib/bundles/inspec-supermarket/cli.rb +12 -15
  13. data/lib/bundles/inspec-supermarket/target.rb +7 -11
  14. data/lib/fetchers/git.rb +14 -15
  15. data/lib/fetchers/local.rb +6 -10
  16. data/lib/fetchers/mock.rb +3 -5
  17. data/lib/fetchers/url.rb +42 -44
  18. data/lib/inspec.rb +23 -24
  19. data/lib/inspec/archive/tar.rb +2 -6
  20. data/lib/inspec/archive/zip.rb +3 -7
  21. data/lib/inspec/backend.rb +8 -9
  22. data/lib/inspec/base_cli.rb +64 -65
  23. data/lib/inspec/cached_fetcher.rb +2 -3
  24. data/lib/inspec/cli.rb +136 -97
  25. data/lib/inspec/config.rb +71 -61
  26. data/lib/inspec/control_eval_context.rb +22 -18
  27. data/lib/inspec/dependencies/cache.rb +2 -3
  28. data/lib/inspec/dependencies/dependency_set.rb +2 -3
  29. data/lib/inspec/dependencies/lockfile.rb +8 -9
  30. data/lib/inspec/dependencies/requirement.rb +7 -8
  31. data/lib/inspec/dependencies/resolver.rb +5 -7
  32. data/lib/inspec/describe.rb +2 -6
  33. data/lib/inspec/dist.rb +20 -0
  34. data/lib/inspec/dsl.rb +4 -7
  35. data/lib/inspec/dsl_shared.rb +1 -2
  36. data/lib/inspec/env_printer.rb +11 -12
  37. data/lib/inspec/errors.rb +0 -4
  38. data/lib/inspec/exceptions.rb +0 -1
  39. data/lib/inspec/expect.rb +5 -8
  40. data/lib/inspec/fetcher.rb +7 -10
  41. data/lib/inspec/file_provider.rb +24 -24
  42. data/lib/inspec/formatters.rb +3 -3
  43. data/lib/inspec/formatters/base.rb +8 -8
  44. data/lib/inspec/globals.rb +2 -2
  45. data/lib/inspec/impact.rb +5 -7
  46. data/lib/inspec/input_registry.rb +84 -33
  47. data/lib/inspec/library_eval_context.rb +3 -6
  48. data/lib/inspec/log.rb +1 -5
  49. data/lib/inspec/metadata.rb +17 -16
  50. data/lib/inspec/method_source.rb +5 -9
  51. data/lib/inspec/objects.rb +10 -12
  52. data/lib/inspec/objects/control.rb +7 -9
  53. data/lib/inspec/objects/describe.rb +9 -11
  54. data/lib/inspec/objects/each_loop.rb +1 -3
  55. data/lib/inspec/objects/input.rb +24 -26
  56. data/lib/inspec/objects/list.rb +4 -6
  57. data/lib/inspec/objects/or_test.rb +2 -4
  58. data/lib/inspec/objects/ruby_helper.rb +3 -5
  59. data/lib/inspec/objects/tag.rb +0 -2
  60. data/lib/inspec/objects/test.rb +9 -11
  61. data/lib/inspec/objects/value.rb +3 -5
  62. data/lib/inspec/plugin/v1.rb +2 -2
  63. data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
  64. data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
  65. data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
  66. data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
  67. data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
  68. data/lib/inspec/plugin/v1/plugins.rb +15 -19
  69. data/lib/inspec/plugin/v1/registry.rb +0 -4
  70. data/lib/inspec/plugin/v2.rb +8 -8
  71. data/lib/inspec/plugin/v2/activator.rb +1 -1
  72. data/lib/inspec/plugin/v2/config_file.rb +6 -6
  73. data/lib/inspec/plugin/v2/filter.rb +13 -13
  74. data/lib/inspec/plugin/v2/installer.rb +36 -24
  75. data/lib/inspec/plugin/v2/loader.rb +28 -28
  76. data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
  77. data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
  78. data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
  79. data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
  80. data/lib/inspec/plugin/v2/registry.rb +7 -7
  81. data/lib/inspec/polyfill.rb +0 -3
  82. data/lib/inspec/profile.rb +55 -63
  83. data/lib/inspec/profile_context.rb +27 -30
  84. data/lib/inspec/profile_vendor.rb +6 -9
  85. data/lib/inspec/reporters.rb +24 -24
  86. data/lib/inspec/reporters/automate.rb +17 -19
  87. data/lib/inspec/reporters/base.rb +1 -1
  88. data/lib/inspec/reporters/cli.rb +88 -91
  89. data/lib/inspec/reporters/json.rb +2 -4
  90. data/lib/inspec/reporters/json_automate.rb +1 -3
  91. data/lib/inspec/reporters/json_min.rb +1 -3
  92. data/lib/inspec/reporters/junit.rb +26 -28
  93. data/lib/inspec/reporters/yaml.rb +1 -3
  94. data/lib/inspec/require_loader.rb +0 -4
  95. data/lib/inspec/resource.rb +4 -125
  96. data/lib/inspec/resources.rb +121 -0
  97. data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
  98. data/lib/{resources → inspec/resources}/apache.rb +13 -14
  99. data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
  100. data/lib/{resources → inspec/resources}/apt.rb +17 -17
  101. data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
  102. data/lib/{resources → inspec/resources}/auditd.rb +62 -64
  103. data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
  104. data/lib/{resources → inspec/resources}/bash.rb +6 -8
  105. data/lib/{resources → inspec/resources}/bond.rb +15 -14
  106. data/lib/{resources → inspec/resources}/bridge.rb +8 -8
  107. data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
  108. data/lib/{resources → inspec/resources}/command.rb +11 -10
  109. data/lib/{resources → inspec/resources}/cpan.rb +12 -12
  110. data/lib/{resources → inspec/resources}/cran.rb +9 -9
  111. data/lib/{resources → inspec/resources}/crontab.rb +47 -48
  112. data/lib/{resources → inspec/resources}/csv.rb +5 -5
  113. data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
  114. data/lib/{resources → inspec/resources}/directory.rb +5 -7
  115. data/lib/{resources → inspec/resources}/docker.rb +63 -63
  116. data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
  117. data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
  118. data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
  119. data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
  120. data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
  121. data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
  122. data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
  123. data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
  124. data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
  125. data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
  126. data/lib/{resources → inspec/resources}/file.rb +80 -79
  127. data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
  128. data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
  129. data/lib/{resources → inspec/resources}/gem.rb +12 -12
  130. data/lib/{resources → inspec/resources}/groups.rb +28 -27
  131. data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
  132. data/lib/{resources → inspec/resources}/host.rb +31 -29
  133. data/lib/{resources → inspec/resources}/http.rb +24 -24
  134. data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
  135. data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
  136. data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
  137. data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
  138. data/lib/{resources → inspec/resources}/ini.rb +7 -8
  139. data/lib/{resources → inspec/resources}/interface.rb +30 -30
  140. data/lib/{resources → inspec/resources}/iptables.rb +8 -8
  141. data/lib/{resources → inspec/resources}/json.rb +8 -10
  142. data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
  143. data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
  144. data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
  145. data/lib/{resources → inspec/resources}/ksh.rb +6 -8
  146. data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
  147. data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
  148. data/lib/{resources → inspec/resources}/mount.rb +6 -8
  149. data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
  150. data/lib/inspec/resources/mysql.rb +81 -0
  151. data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
  152. data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
  153. data/lib/{resources → inspec/resources}/nginx.rb +16 -17
  154. data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
  155. data/lib/{resources → inspec/resources}/npm.rb +9 -10
  156. data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
  157. data/lib/{resources → inspec/resources}/oneget.rb +8 -8
  158. data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
  159. data/lib/{resources → inspec/resources}/os.rb +6 -8
  160. data/lib/{resources → inspec/resources}/os_env.rb +11 -12
  161. data/lib/{resources → inspec/resources}/package.rb +66 -65
  162. data/lib/{resources → inspec/resources}/packages.rb +13 -13
  163. data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
  164. data/lib/{resources → inspec/resources}/passwd.rb +18 -19
  165. data/lib/{resources → inspec/resources}/pip.rb +19 -19
  166. data/lib/{resources → inspec/resources}/platform.rb +9 -11
  167. data/lib/{resources → inspec/resources}/port.rb +134 -136
  168. data/lib/{resources → inspec/resources}/postgres.rb +40 -32
  169. data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
  170. data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
  171. data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
  172. data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
  173. data/lib/{resources → inspec/resources}/powershell.rb +17 -13
  174. data/lib/{resources → inspec/resources}/processes.rb +29 -29
  175. data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
  176. data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
  177. data/lib/inspec/resources/script.rb +1 -0
  178. data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
  179. data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
  180. data/lib/{resources → inspec/resources}/service.rb +74 -75
  181. data/lib/{resources → inspec/resources}/shadow.rb +44 -45
  182. data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
  183. data/lib/{resources → inspec/resources}/ssl.rb +28 -29
  184. data/lib/inspec/resources/sys_info.rb +30 -0
  185. data/lib/{resources → inspec/resources}/toml.rb +5 -7
  186. data/lib/{resources → inspec/resources}/users.rb +65 -65
  187. data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
  188. data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
  189. data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
  190. data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
  191. data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
  192. data/lib/{resources → inspec/resources}/wmi.rb +7 -8
  193. data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
  194. data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
  195. data/lib/{resources → inspec/resources}/xml.rb +7 -7
  196. data/lib/{resources → inspec/resources}/yaml.rb +5 -6
  197. data/lib/{resources → inspec/resources}/yum.rb +10 -10
  198. data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
  199. data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
  200. data/lib/inspec/rspec_extensions.rb +24 -8
  201. data/lib/inspec/rule.rb +14 -15
  202. data/lib/inspec/runner.rb +28 -28
  203. data/lib/inspec/runner_mock.rb +1 -5
  204. data/lib/inspec/runner_rspec.rb +18 -20
  205. data/lib/inspec/runtime_profile.rb +2 -5
  206. data/lib/inspec/schema.rb +142 -143
  207. data/lib/inspec/secrets.rb +3 -7
  208. data/lib/inspec/secrets/yaml.rb +3 -5
  209. data/lib/inspec/shell.rb +11 -15
  210. data/lib/inspec/shell_detector.rb +6 -7
  211. data/lib/inspec/source_reader.rb +4 -8
  212. data/lib/inspec/ui.rb +33 -39
  213. data/lib/inspec/ui_table_helper.rb +12 -0
  214. data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
  215. data/lib/{utils → inspec/utils}/convert.rb +0 -4
  216. data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
  217. data/lib/inspec/utils/deprecation.rb +6 -0
  218. data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
  219. data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
  220. data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
  221. data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
  222. data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
  223. data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
  224. data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
  225. data/lib/{utils → inspec/utils}/filter.rb +30 -33
  226. data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
  227. data/lib/{utils → inspec/utils}/find_files.rb +9 -12
  228. data/lib/{utils → inspec/utils}/hash.rb +1 -5
  229. data/lib/inspec/utils/json_log.rb +15 -0
  230. data/lib/inspec/utils/latest_version.rb +13 -0
  231. data/lib/{utils → inspec/utils}/modulator.rb +0 -3
  232. data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
  233. data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
  234. data/lib/{utils → inspec/utils}/parser.rb +45 -45
  235. data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
  236. data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
  237. data/lib/{utils → inspec/utils}/spdx.rb +1 -4
  238. data/lib/{utils → inspec/utils}/spdx.txt +0 -0
  239. data/lib/inspec/utils/telemetry.rb +3 -3
  240. data/lib/inspec/utils/telemetry/collector.rb +30 -9
  241. data/lib/inspec/utils/telemetry/data_series.rb +3 -1
  242. data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
  243. data/lib/inspec/version.rb +1 -1
  244. data/lib/matchers/matchers.rb +22 -25
  245. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
  246. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
  247. data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
  248. data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
  249. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
  250. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
  251. data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
  252. data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
  253. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
  254. data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
  255. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
  256. data/lib/plugins/inspec-habitat/Berksfile +2 -2
  257. data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
  258. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
  259. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
  260. data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
  261. data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
  262. data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
  263. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
  264. data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
  265. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
  266. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
  267. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
  268. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
  269. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
  270. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
  271. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
  272. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
  273. data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
  274. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
  275. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
  276. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
  277. data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
  278. data/lib/source_readers/flat.rb +6 -10
  279. data/lib/source_readers/inspec.rb +8 -12
  280. metadata +139 -140
  281. data/lib/resources/mysql.rb +0 -82
  282. data/lib/resources/sys_info.rb +0 -28
  283. data/lib/utils/deprecation.rb +0 -6
  284. data/lib/utils/json_log.rb +0 -18
  285. data/lib/utils/latest_version.rb +0 -22
@@ -1,14 +1,13 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Vulcano Security GmbH
3
2
 
4
- require 'utils/simpleconfig'
5
- require 'utils/file_reader'
3
+ require "inspec/utils/simpleconfig"
4
+ require "inspec/utils/file_reader"
6
5
 
7
6
  module Inspec::Resources
8
7
  class InetdConf < Inspec.resource(1)
9
- name 'inetd_conf'
10
- supports platform: 'unix'
11
- desc 'Use the inetd_conf InSpec audit resource to test if a service is enabled in the inetd.conf file on Linux and UNIX platforms. inetd---the Internet service daemon---listens on dedicated ports, and then loads the appropriate program based on a request. The inetd.conf file is typically located at /etc/inetd.conf and contains a list of Internet services associated to the ports on which that service will listen. Only enabled services may handle a request; only services that are required by the system should be enabled.'
8
+ name "inetd_conf"
9
+ supports platform: "unix"
10
+ desc "Use the inetd_conf InSpec audit resource to test if a service is enabled in the inetd.conf file on Linux and UNIX platforms. inetd---the Internet service daemon---listens on dedicated ports, and then loads the appropriate program based on a request. The inetd.conf file is typically located at /etc/inetd.conf and contains a list of Internet services associated to the ports on which that service will listen. Only enabled services may handle a request; only services that are required by the system should be enabled."
12
11
  example <<~EXAMPLE
13
12
  describe inetd_conf do
14
13
  its('shell') { should eq nil }
@@ -20,14 +19,14 @@ module Inspec::Resources
20
19
  include FileReader
21
20
 
22
21
  def initialize(path = nil)
23
- @conf_path = path || '/etc/inetd.conf'
22
+ @conf_path = path || "/etc/inetd.conf"
24
23
  @content = read_file_content(@conf_path)
25
24
  end
26
25
 
27
26
  # overwrite exec to ensure it works with its
28
27
  # TODO: this needs to be fixed in RSpec
29
28
  def exec
30
- read_params['exec']
29
+ read_params["exec"]
31
30
  end
32
31
 
33
32
  def method_missing(name)
@@ -42,13 +41,13 @@ module Inspec::Resources
42
41
  @content,
43
42
  assignment_regex: /^\s*(\S+?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s*$/,
44
43
  key_values: 6,
45
- multiple_values: false,
44
+ multiple_values: false
46
45
  )
47
46
  @params = conf.params
48
47
  end
49
48
 
50
49
  def to_s
51
- 'inetd.conf'
50
+ "inetd.conf"
52
51
  end
53
52
  end
54
53
  end
@@ -1,13 +1,12 @@
1
- # encoding: utf-8
2
-
3
- require 'utils/simpleconfig'
1
+ require "inspec/resources/json"
2
+ require "inspec/utils/simpleconfig"
4
3
 
5
4
  module Inspec::Resources
6
5
  class IniConfig < JsonConfig
7
- name 'ini'
8
- supports platform: 'unix'
9
- supports platform: 'windows'
10
- desc 'Use the ini InSpec audit resource to test data in a INI file.'
6
+ name "ini"
7
+ supports platform: "unix"
8
+ supports platform: "windows"
9
+ desc "Use the ini InSpec audit resource to test data in a INI file."
11
10
  example <<~EXAMPLE
12
11
  descibe ini do
13
12
  its('auth_protocol') { should eq 'https' }
@@ -23,7 +22,7 @@ module Inspec::Resources
23
22
  # used by JsonConfig to build up a full to_s method
24
23
  # based on whether a file path, content, or command was supplied.
25
24
  def resource_base_name
26
- 'INI'
25
+ "INI"
27
26
  end
28
27
  end
29
28
  end
@@ -1,13 +1,13 @@
1
- # encoding: utf-8
2
-
3
- require 'utils/convert'
1
+ require "inspec/resources/command"
2
+ require "inspec/utils/convert"
3
+ require "inspec/utils/simpleconfig"
4
4
 
5
5
  module Inspec::Resources
6
6
  class NetworkInterface < Inspec.resource(1)
7
- name 'interface'
8
- supports platform: 'unix'
9
- supports platform: 'windows'
10
- desc 'Use the interface InSpec audit resource to test basic network adapter properties, such as name, status, and link speed (in MB/sec).'
7
+ name "interface"
8
+ supports platform: "unix"
9
+ supports platform: "windows"
10
+ desc "Use the interface InSpec audit resource to test basic network adapter properties, such as name, status, and link speed (in MB/sec)."
11
11
  example <<~EXAMPLE
12
12
  describe interface('eth0') do
13
13
  it { should exist }
@@ -26,7 +26,7 @@ module Inspec::Resources
26
26
  elsif inspec.os.windows?
27
27
  @interface_provider = WindowsInterface.new(inspec)
28
28
  else
29
- return skip_resource 'The `interface` resource is not supported on your OS yet.'
29
+ return skip_resource "The `interface` resource is not supported on your OS yet."
30
30
  end
31
31
  end
32
32
 
@@ -52,15 +52,15 @@ module Inspec::Resources
52
52
  end
53
53
 
54
54
  def ipv4_addresses
55
- ipv4_cidrs.map { |i| i.split('/')[0] }
55
+ ipv4_cidrs.map { |i| i.split("/")[0] }
56
56
  end
57
57
 
58
58
  def ipv6_addresses
59
- ipv6_cidrs.map { |i| i.split('/')[0] }
59
+ ipv6_cidrs.map { |i| i.split("/")[0] }
60
60
  end
61
61
 
62
62
  def ipv4_addresses_netmask
63
- ipv4_cidrs.map { |i| i.split('/') }.map do |addr, netlen|
63
+ ipv4_cidrs.map { |i| i.split("/") }.map do |addr, netlen|
64
64
  binmask = "#{'1' * netlen.to_i}#{'0' * (32 - netlen.to_i)}".to_i(2)
65
65
  netmask = []
66
66
  (1..4).each do |_byte|
@@ -113,15 +113,15 @@ module Inspec::Resources
113
113
 
114
114
  # parse state
115
115
  state = false
116
- if params.key?('operstate')
117
- operstate, _value = params['operstate'].first
118
- state = operstate == 'up'
116
+ if params.key?("operstate")
117
+ operstate, _value = params["operstate"].first
118
+ state = operstate == "up"
119
119
  end
120
120
 
121
121
  # parse speed
122
122
  speed = nil
123
- if params.key?('speed')
124
- speed, _value = params['speed'].first
123
+ if params.key?("speed")
124
+ speed, _value = params["speed"].first
125
125
  speed = convert_to_i(speed)
126
126
  end
127
127
 
@@ -130,19 +130,19 @@ module Inspec::Resources
130
130
  name: iface,
131
131
  up: state,
132
132
  speed: speed,
133
- ipv4_addresses: family_addresses['inet'],
134
- ipv6_addresses: family_addresses['inet6'],
133
+ ipv4_addresses: family_addresses["inet"],
134
+ ipv6_addresses: family_addresses["inet6"],
135
135
  }
136
136
  end
137
137
 
138
138
  private
139
139
 
140
140
  def addresses(iface)
141
- addrs_by_family = { 'inet6' => [], 'inet' => [] }
141
+ addrs_by_family = { "inet6" => [], "inet" => [] }
142
142
  [4, 6].each do |v|
143
143
  cmd = inspec.command("/sbin/ip -br -#{v} address show dev #{iface}")
144
144
  next unless cmd.exit_status.to_i == 0
145
- family = v == 6 ? 'inet6' : 'inet'
145
+ family = v == 6 ? "inet6" : "inet"
146
146
 
147
147
  cmd.stdout.each_line do |line|
148
148
  _dev, _state, *addrs = line.split(/\s+/)
@@ -156,11 +156,11 @@ module Inspec::Resources
156
156
  class WindowsInterface < InterfaceInfo
157
157
  def interface_info(iface)
158
158
  # gather all network interfaces
159
- cmd = inspec.command('Get-NetAdapter | Select-Object -Property Name, InterfaceDescription, Status, State, ' \
160
- 'MacAddress, LinkSpeed, ReceiveLinkSpeed, TransmitLinkSpeed, Virtual | ConvertTo-Json')
159
+ cmd = inspec.command("Get-NetAdapter | Select-Object -Property Name, InterfaceDescription, Status, State, " \
160
+ "MacAddress, LinkSpeed, ReceiveLinkSpeed, TransmitLinkSpeed, Virtual | ConvertTo-Json")
161
161
 
162
- addr_cmd = inspec.command('Get-NetIPAddress | Select-Object -Property IPv6Address, IPv4Address, InterfaceAlias,' \
163
- ' PrefixLength | ConvertTo-Json')
162
+ addr_cmd = inspec.command("Get-NetIPAddress | Select-Object -Property IPv6Address, IPv4Address, InterfaceAlias," \
163
+ " PrefixLength | ConvertTo-Json")
164
164
 
165
165
  # filter network interface
166
166
  begin
@@ -178,11 +178,11 @@ module Inspec::Resources
178
178
  adapters = net_adapter.each_with_object([]) do |adapter, adapter_collection|
179
179
  # map object
180
180
  info = {
181
- name: adapter['Name'],
182
- up: adapter['State'] == 2,
183
- speed: adapter['ReceiveLinkSpeed'] / 1000,
184
- ipv4_addresses: addresses_for_proto(addresses, adapter['Name'], 'IPv4'),
185
- ipv6_addresses: addresses_for_proto(addresses, adapter['Name'], 'IPv6'),
181
+ name: adapter["Name"],
182
+ up: adapter["State"] == 2,
183
+ speed: adapter["ReceiveLinkSpeed"] / 1000,
184
+ ipv4_addresses: addresses_for_proto(addresses, adapter["Name"], "IPv4"),
185
+ ipv6_addresses: addresses_for_proto(addresses, adapter["Name"], "IPv6"),
186
186
  }
187
187
  adapter_collection.push(info) if info[:name].casecmp(iface) == 0
188
188
  end
@@ -195,7 +195,7 @@ module Inspec::Resources
195
195
  private
196
196
 
197
197
  def addresses_for_proto(all_addresses, iface, proto)
198
- all_addresses.select { |i| i['InterfaceAlias'] == iface }
198
+ all_addresses.select { |i| i["InterfaceAlias"] == iface }
199
199
  .map { |i| "#{i["#{proto}Address"]}/#{i['PrefixLength']}" unless i["#{proto}Address"].nil? }
200
200
  .compact
201
201
  end
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ require "inspec/resources/command"
2
2
 
3
3
  # Usage:
4
4
  # describe iptables do
@@ -21,9 +21,9 @@
21
21
  # @see https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html
22
22
  module Inspec::Resources
23
23
  class IpTables < Inspec.resource(1)
24
- name 'iptables'
25
- supports platform: 'linux'
26
- desc 'Use the iptables InSpec audit resource to test rules that are defined in iptables, which maintains tables of IP packet filtering rules. There may be more than one table. Each table contains one (or more) chains (both built-in and custom). A chain is a list of rules that match packets. When the rule matches, the rule defines what target to assign to the packet.'
24
+ name "iptables"
25
+ supports platform: "linux"
26
+ desc "Use the iptables InSpec audit resource to test rules that are defined in iptables, which maintains tables of IP packet filtering rules. There may be more than one table. Each table contains one (or more) chains (both built-in and custom). A chain is a list of rules that match packets. When the rule matches, the rule defines what target to assign to the packet."
27
27
  example <<~EXAMPLE
28
28
  describe iptables do
29
29
  it { should have_rule('-P INPUT ACCEPT') }
@@ -39,7 +39,7 @@ module Inspec::Resources
39
39
 
40
40
  # ensures, all calls are aborted for non-supported os
41
41
  @iptables_cache = []
42
- skip_resource 'The `iptables` resource is not supported on your OS yet.'
42
+ skip_resource "The `iptables` resource is not supported on your OS yet."
43
43
  end
44
44
 
45
45
  def has_rule?(rule = nil, _table = nil, _chain = nil)
@@ -54,7 +54,7 @@ module Inspec::Resources
54
54
  # construct iptables command to read all rules
55
55
  bin = find_iptables_or_error
56
56
  table_cmd = "-t #{@table}" if @table
57
- iptables_cmd = format('%s %s -S %s', bin, table_cmd, @chain).strip
57
+ iptables_cmd = format("%s %s -S %s", bin, table_cmd, @chain).strip
58
58
 
59
59
  cmd = inspec.command(iptables_cmd)
60
60
  return [] if cmd.exit_status.to_i != 0
@@ -64,7 +64,7 @@ module Inspec::Resources
64
64
  end
65
65
 
66
66
  def to_s
67
- format('Iptables %s %s', @table && "table: #{@table}", @chain && "chain: #{@chain}").strip
67
+ format("Iptables %s %s", @table && "table: #{@table}", @chain && "chain: #{@chain}").strip
68
68
  end
69
69
 
70
70
  private
@@ -74,7 +74,7 @@ module Inspec::Resources
74
74
  return cmd if inspec.command(cmd).exist?
75
75
  end
76
76
 
77
- raise Inspec::Exceptions::ResourceFailed, 'Could not find `iptables`'
77
+ raise Inspec::Exceptions::ResourceFailed, "Could not find `iptables`"
78
78
  end
79
79
  end
80
80
  end
@@ -1,13 +1,11 @@
1
- # encoding: utf-8
2
-
3
- require 'utils/object_traversal'
4
- require 'utils/enumerable_delegation'
5
- require 'utils/file_reader'
1
+ require "inspec/utils/object_traversal"
2
+ require "inspec/utils/enumerable_delegation"
3
+ require "inspec/utils/file_reader"
6
4
 
7
5
  module Inspec::Resources
8
6
  class JsonConfig < Inspec.resource(1)
9
- name 'json'
10
- desc 'Use the json InSpec audit resource to test data in a JSON file.'
7
+ name "json"
8
+ desc "Use the json InSpec audit resource to test data in a JSON file."
11
9
  example <<~EXAMPLE
12
10
  describe json('policyfile.lock.json') do
13
11
  its(['cookbook_locks','omnibus','version']) { should eq('2.2.0') }
@@ -67,7 +65,7 @@ module Inspec::Resources
67
65
  private
68
66
 
69
67
  def parse(content)
70
- require 'json'
68
+ require "json"
71
69
  JSON.parse(content)
72
70
  rescue => e
73
71
  raise Inspec::Exceptions::ResourceFailed, "Unable to parse JSON: #{e.message}"
@@ -86,7 +84,7 @@ module Inspec::Resources
86
84
  elsif opts.key?(:content)
87
85
  opts[:content]
88
86
  else
89
- raise Inspec::Exceptions::ResourceFailed, 'No JSON content; must specify a file, command, or raw JSON content'
87
+ raise Inspec::Exceptions::ResourceFailed, "No JSON content; must specify a file, command, or raw JSON content"
90
88
  end
91
89
  end
92
90
 
@@ -104,7 +102,7 @@ module Inspec::Resources
104
102
  # for resources the subclass JsonConfig, this allows specification of the resource
105
103
  # base name in each subclass so we can build a good to_s method
106
104
  def resource_base_name
107
- 'JSON'
105
+ "JSON"
108
106
  end
109
107
  end
110
108
  end
@@ -1,9 +1,9 @@
1
- # encoding: utf-8
1
+ require "inspec/resources/command"
2
2
 
3
3
  module Inspec::Resources
4
4
  class KernelModule < Inspec.resource(1)
5
- name 'kernel_module'
6
- supports platform: 'unix'
5
+ name "kernel_module"
6
+ supports platform: "unix"
7
7
  desc 'Use the kernel_module InSpec audit resource to test kernel modules on
8
8
  Linux platforms. These parameters are located under /lib/modules. Any submodule
9
9
  may be tested using this resource.
@@ -36,14 +36,14 @@ module Inspec::Resources
36
36
  def initialize(modulename = nil)
37
37
  @module = modulename
38
38
  # this resource is only supported on Linux
39
- return skip_resource 'The `kernel_parameter` resource is not supported on your OS.' if !inspec.os.linux?
39
+ return skip_resource "The `kernel_parameter` resource is not supported on your OS." if !inspec.os.linux?
40
40
  end
41
41
 
42
42
  def loaded?
43
- if inspec.os.redhat? || inspec.os.name == 'fedora'
44
- lsmod_cmd = '/sbin/lsmod'
43
+ if inspec.os.redhat? || inspec.os.name == "fedora"
44
+ lsmod_cmd = "/sbin/lsmod"
45
45
  else
46
- lsmod_cmd = 'lsmod'
46
+ lsmod_cmd = "lsmod"
47
47
  end
48
48
 
49
49
  # get list of all modules
@@ -51,7 +51,7 @@ module Inspec::Resources
51
51
  return false if cmd.exit_status != 0
52
52
 
53
53
  # check if module is loaded
54
- re = Regexp.new('^'+Regexp.quote(@module)+'\s')
54
+ re = Regexp.new("^" + Regexp.quote(@module) + '\s')
55
55
  found = cmd.stdout.match(re)
56
56
  !found.nil?
57
57
  end
@@ -66,7 +66,7 @@ module Inspec::Resources
66
66
 
67
67
  def version
68
68
  cmd = inspec.command("#{modinfo_cmd_for_os} -F version #{@module}")
69
- cmd.exit_status.zero? ? cmd.stdout.delete("\n") : nil
69
+ cmd.exit_status == 0 ? cmd.stdout.delete("\n") : nil
70
70
  end
71
71
 
72
72
  def to_s
@@ -80,18 +80,18 @@ module Inspec::Resources
80
80
  end
81
81
 
82
82
  def modinfo_cmd_for_os
83
- if inspec.os.redhat? || inspec.os.name == 'fedora'
84
- '/sbin/modinfo'
83
+ if inspec.os.redhat? || inspec.os.name == "fedora"
84
+ "/sbin/modinfo"
85
85
  else
86
- 'modinfo'
86
+ "modinfo"
87
87
  end
88
88
  end
89
89
 
90
90
  def modprobe_cmd_for_os
91
- if inspec.os.redhat? || inspec.os.name == 'fedora'
92
- '/sbin/modprobe'
91
+ if inspec.os.redhat? || inspec.os.name == "fedora"
92
+ "/sbin/modprobe"
93
93
  else
94
- 'modprobe'
94
+ "modprobe"
95
95
  end
96
96
  end
97
97
 
@@ -1,10 +1,10 @@
1
- # encoding: utf-8
1
+ require "inspec/resources/command"
2
2
 
3
3
  module Inspec::Resources
4
4
  class KernelParameter < Inspec.resource(1)
5
- name 'kernel_parameter'
6
- supports platform: 'unix'
7
- desc 'Use the kernel_parameter InSpec audit resource to test kernel parameters on Linux platforms.'
5
+ name "kernel_parameter"
6
+ supports platform: "unix"
7
+ desc "Use the kernel_parameter InSpec audit resource to test kernel parameters on Linux platforms."
8
8
  example <<~EXAMPLE
9
9
  describe kernel_parameter('net.ipv4.conf.all.forwarding') do
10
10
  its('value') { should eq 0 }
@@ -15,7 +15,7 @@ module Inspec::Resources
15
15
  @parameter = parameter
16
16
 
17
17
  # this resource is only supported on Linux
18
- return skip_resource 'The `kernel_parameter` resource is not supported on your OS.' if !inspec.os.linux?
18
+ return skip_resource "The `kernel_parameter` resource is not supported on your OS." if !inspec.os.linux?
19
19
  end
20
20
 
21
21
  def value
@@ -34,15 +34,15 @@ module Inspec::Resources
34
34
  end
35
35
 
36
36
  class LinuxKernelParameter < KernelParameter
37
- name 'linux_kernel_parameter'
37
+ name "linux_kernel_parameter"
38
38
 
39
39
  def initialize(parameter)
40
- Inspec.deprecate(:resource_linux_kernel_parameter, 'The `linux_kernel_parameter` resource is deprecated. Please use `kernel_parameter`')
40
+ Inspec.deprecate(:resource_linux_kernel_parameter, "The `linux_kernel_parameter` resource is deprecated. Please use `kernel_parameter`")
41
41
  super(parameter)
42
42
  end
43
43
 
44
44
  def value
45
- Inspec.deprecate(:resource_linux_kernel_parameter, 'The `linux_kernel_parameter` resource is deprecated. Please use `kernel_parameter`')
45
+ Inspec.deprecate(:resource_linux_kernel_parameter, "The `linux_kernel_parameter` resource is deprecated. Please use `kernel_parameter`")
46
46
  super()
47
47
  end
48
48
 
@@ -1,16 +1,14 @@
1
- # encoding: utf-8
2
-
3
- require 'openssl'
4
- require 'hashie/mash'
5
- require 'utils/file_reader'
6
- require 'utils/pkey_reader'
1
+ require "openssl"
2
+ require "hashie/mash"
3
+ require "inspec/utils/file_reader"
4
+ require "inspec/utils/pkey_reader"
7
5
 
8
6
  module Inspec::Resources
9
7
  class RsaKey < Inspec.resource(1)
10
- name 'key_rsa'
11
- supports platform: 'unix'
12
- supports platform: 'windows'
13
- desc 'public/private RSA key pair test'
8
+ name "key_rsa"
9
+ supports platform: "unix"
10
+ supports platform: "windows"
11
+ desc "public/private RSA key pair test"
14
12
  example <<~EXAMPLE
15
13
  describe key_rsa('/etc/pki/www.mywebsite.com.key') do
16
14
  its('public_key') { should match /BEGIN RSA PUBLIC KEY/ }