puppet 8.3.1-x86-mingw32 → 8.4.0-x86-mingw32

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 (1052) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +51 -43
  3. data/README.md +4 -4
  4. data/Rakefile +0 -27
  5. data/examples/enc/regexp_nodes/regexp_nodes.rb +1 -1
  6. data/ext/windows/service/daemon.rb +4 -5
  7. data/lib/hiera/puppet_function.rb +3 -2
  8. data/lib/hiera/scope.rb +2 -2
  9. data/lib/hiera_puppet.rb +1 -3
  10. data/lib/puppet/agent/disabler.rb +2 -1
  11. data/lib/puppet/agent/locker.rb +1 -2
  12. data/lib/puppet/agent.rb +2 -1
  13. data/lib/puppet/application/agent.rb +292 -291
  14. data/lib/puppet/application/apply.rb +143 -139
  15. data/lib/puppet/application/catalog.rb +1 -0
  16. data/lib/puppet/application/config.rb +1 -0
  17. data/lib/puppet/application/describe.rb +53 -55
  18. data/lib/puppet/application/device.rb +150 -150
  19. data/lib/puppet/application/doc.rb +60 -59
  20. data/lib/puppet/application/epp.rb +1 -0
  21. data/lib/puppet/application/face_base.rb +8 -7
  22. data/lib/puppet/application/facts.rb +1 -0
  23. data/lib/puppet/application/filebucket.rb +186 -184
  24. data/lib/puppet/application/generate.rb +1 -0
  25. data/lib/puppet/application/help.rb +1 -0
  26. data/lib/puppet/application/indirection_base.rb +1 -0
  27. data/lib/puppet/application/lookup.rb +168 -171
  28. data/lib/puppet/application/module.rb +1 -0
  29. data/lib/puppet/application/node.rb +1 -0
  30. data/lib/puppet/application/parser.rb +1 -0
  31. data/lib/puppet/application/plugin.rb +1 -0
  32. data/lib/puppet/application/report.rb +1 -0
  33. data/lib/puppet/application/resource.rb +111 -108
  34. data/lib/puppet/application/script.rb +92 -93
  35. data/lib/puppet/application/ssl.rb +89 -88
  36. data/lib/puppet/application.rb +9 -8
  37. data/lib/puppet/application_support.rb +1 -1
  38. data/lib/puppet/coercion.rb +3 -2
  39. data/lib/puppet/compilable_resource_type.rb +1 -0
  40. data/lib/puppet/concurrent/lock.rb +1 -2
  41. data/lib/puppet/concurrent/synchronized.rb +1 -2
  42. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  43. data/lib/puppet/concurrent.rb +1 -0
  44. data/lib/puppet/configurer/downloader.rb +1 -1
  45. data/lib/puppet/configurer/fact_handler.rb +2 -1
  46. data/lib/puppet/configurer/plugin_handler.rb +1 -0
  47. data/lib/puppet/configurer.rb +17 -13
  48. data/lib/puppet/confine/any.rb +1 -0
  49. data/lib/puppet/confine/boolean.rb +1 -0
  50. data/lib/puppet/confine/exists.rb +1 -0
  51. data/lib/puppet/confine/false.rb +1 -0
  52. data/lib/puppet/confine/feature.rb +1 -0
  53. data/lib/puppet/confine/true.rb +1 -0
  54. data/lib/puppet/confine/variable.rb +1 -0
  55. data/lib/puppet/confine.rb +2 -0
  56. data/lib/puppet/confine_collection.rb +3 -1
  57. data/lib/puppet/confiner.rb +1 -0
  58. data/lib/puppet/context/trusted_information.rb +1 -0
  59. data/lib/puppet/context.rb +1 -0
  60. data/lib/puppet/daemon.rb +4 -1
  61. data/lib/puppet/data_binding.rb +2 -1
  62. data/lib/puppet/datatypes/error.rb +2 -1
  63. data/lib/puppet/datatypes/impl/error.rb +1 -0
  64. data/lib/puppet/datatypes.rb +5 -1
  65. data/lib/puppet/defaults.rb +19 -18
  66. data/lib/puppet/environments.rb +3 -2
  67. data/lib/puppet/error.rb +9 -7
  68. data/lib/puppet/etc.rb +6 -3
  69. data/lib/puppet/external/dot.rb +12 -31
  70. data/lib/puppet/face/catalog/select.rb +2 -1
  71. data/lib/puppet/face/catalog.rb +3 -2
  72. data/lib/puppet/face/config.rb +18 -20
  73. data/lib/puppet/face/epp.rb +6 -6
  74. data/lib/puppet/face/facts.rb +4 -3
  75. data/lib/puppet/face/generate.rb +2 -0
  76. data/lib/puppet/face/help.rb +8 -7
  77. data/lib/puppet/face/module/changes.rb +2 -0
  78. data/lib/puppet/face/module/install.rb +2 -1
  79. data/lib/puppet/face/module/list.rb +7 -8
  80. data/lib/puppet/face/module/uninstall.rb +1 -0
  81. data/lib/puppet/face/module.rb +1 -0
  82. data/lib/puppet/face/node/clean.rb +2 -1
  83. data/lib/puppet/face/node.rb +2 -1
  84. data/lib/puppet/face/parser.rb +2 -2
  85. data/lib/puppet/face/plugin.rb +2 -1
  86. data/lib/puppet/face/report.rb +2 -1
  87. data/lib/puppet/face/resource.rb +1 -0
  88. data/lib/puppet/face.rb +1 -0
  89. data/lib/puppet/feature/base.rb +2 -1
  90. data/lib/puppet/feature/bolt.rb +1 -0
  91. data/lib/puppet/feature/cfpropertylist.rb +1 -0
  92. data/lib/puppet/feature/eventlog.rb +1 -0
  93. data/lib/puppet/feature/hiera_eyaml.rb +1 -0
  94. data/lib/puppet/feature/hocon.rb +1 -0
  95. data/lib/puppet/feature/libuser.rb +4 -3
  96. data/lib/puppet/feature/msgpack.rb +1 -0
  97. data/lib/puppet/feature/pe_license.rb +2 -1
  98. data/lib/puppet/feature/pson.rb +1 -0
  99. data/lib/puppet/feature/selinux.rb +1 -0
  100. data/lib/puppet/feature/ssh.rb +1 -0
  101. data/lib/puppet/feature/telnet.rb +1 -0
  102. data/lib/puppet/feature/zlib.rb +1 -0
  103. data/lib/puppet/ffi/posix/constants.rb +1 -0
  104. data/lib/puppet/ffi/posix/functions.rb +1 -1
  105. data/lib/puppet/ffi/posix.rb +1 -0
  106. data/lib/puppet/ffi/windows/api_types.rb +1 -0
  107. data/lib/puppet/ffi/windows/constants.rb +78 -77
  108. data/lib/puppet/ffi/windows/functions.rb +73 -73
  109. data/lib/puppet/ffi/windows/structs.rb +3 -3
  110. data/lib/puppet/ffi/windows.rb +1 -0
  111. data/lib/puppet/file_bucket/dipper.rb +7 -1
  112. data/lib/puppet/file_bucket/file.rb +1 -0
  113. data/lib/puppet/file_bucket.rb +1 -0
  114. data/lib/puppet/file_serving/base.rb +13 -6
  115. data/lib/puppet/file_serving/configuration/parser.rb +3 -1
  116. data/lib/puppet/file_serving/configuration.rb +5 -3
  117. data/lib/puppet/file_serving/content.rb +1 -0
  118. data/lib/puppet/file_serving/fileset.rb +9 -6
  119. data/lib/puppet/file_serving/http_metadata.rb +1 -3
  120. data/lib/puppet/file_serving/metadata.rb +9 -10
  121. data/lib/puppet/file_serving/mount/file.rb +6 -3
  122. data/lib/puppet/file_serving/mount/locales.rb +2 -1
  123. data/lib/puppet/file_serving/mount/modules.rb +2 -0
  124. data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
  125. data/lib/puppet/file_serving/mount/plugins.rb +2 -1
  126. data/lib/puppet/file_serving/mount/scripts.rb +2 -0
  127. data/lib/puppet/file_serving/mount/tasks.rb +2 -0
  128. data/lib/puppet/file_serving/mount.rb +2 -0
  129. data/lib/puppet/file_serving/terminus_helper.rb +1 -0
  130. data/lib/puppet/file_serving/terminus_selector.rb +1 -0
  131. data/lib/puppet/file_serving.rb +1 -0
  132. data/lib/puppet/file_system/file_impl.rb +2 -2
  133. data/lib/puppet/file_system/jruby.rb +1 -0
  134. data/lib/puppet/file_system/memory_file.rb +2 -0
  135. data/lib/puppet/file_system/memory_impl.rb +3 -0
  136. data/lib/puppet/file_system/path_pattern.rb +1 -0
  137. data/lib/puppet/file_system/posix.rb +5 -1
  138. data/lib/puppet/file_system/uniquefile.rb +11 -11
  139. data/lib/puppet/file_system/windows.rb +4 -2
  140. data/lib/puppet/file_system.rb +3 -2
  141. data/lib/puppet/forge/cache.rb +1 -1
  142. data/lib/puppet/forge/errors.rb +1 -3
  143. data/lib/puppet/forge/repository.rb +2 -0
  144. data/lib/puppet/forge.rb +3 -0
  145. data/lib/puppet/functions/abs.rb +2 -1
  146. data/lib/puppet/functions/alert.rb +1 -0
  147. data/lib/puppet/functions/all.rb +1 -0
  148. data/lib/puppet/functions/annotate.rb +1 -0
  149. data/lib/puppet/functions/any.rb +1 -0
  150. data/lib/puppet/functions/assert_type.rb +1 -0
  151. data/lib/puppet/functions/binary_file.rb +3 -1
  152. data/lib/puppet/functions/break.rb +2 -1
  153. data/lib/puppet/functions/call.rb +1 -1
  154. data/lib/puppet/functions/camelcase.rb +1 -1
  155. data/lib/puppet/functions/capitalize.rb +1 -1
  156. data/lib/puppet/functions/ceiling.rb +2 -2
  157. data/lib/puppet/functions/chomp.rb +1 -1
  158. data/lib/puppet/functions/chop.rb +1 -1
  159. data/lib/puppet/functions/compare.rb +1 -0
  160. data/lib/puppet/functions/contain.rb +1 -0
  161. data/lib/puppet/functions/convert_to.rb +1 -0
  162. data/lib/puppet/functions/crit.rb +1 -0
  163. data/lib/puppet/functions/debug.rb +1 -0
  164. data/lib/puppet/functions/defined.rb +7 -4
  165. data/lib/puppet/functions/dig.rb +10 -8
  166. data/lib/puppet/functions/downcase.rb +1 -0
  167. data/lib/puppet/functions/each.rb +1 -0
  168. data/lib/puppet/functions/emerg.rb +1 -0
  169. data/lib/puppet/functions/empty.rb +1 -0
  170. data/lib/puppet/functions/epp.rb +1 -1
  171. data/lib/puppet/functions/err.rb +1 -0
  172. data/lib/puppet/functions/eyaml_lookup_key.rb +6 -4
  173. data/lib/puppet/functions/filter.rb +1 -0
  174. data/lib/puppet/functions/find_file.rb +1 -0
  175. data/lib/puppet/functions/find_template.rb +1 -0
  176. data/lib/puppet/functions/flatten.rb +1 -0
  177. data/lib/puppet/functions/floor.rb +2 -2
  178. data/lib/puppet/functions/get.rb +2 -1
  179. data/lib/puppet/functions/getvar.rb +2 -1
  180. data/lib/puppet/functions/hiera.rb +1 -0
  181. data/lib/puppet/functions/hiera_array.rb +1 -0
  182. data/lib/puppet/functions/hiera_hash.rb +1 -0
  183. data/lib/puppet/functions/hiera_include.rb +2 -0
  184. data/lib/puppet/functions/hocon_data.rb +1 -0
  185. data/lib/puppet/functions/import.rb +1 -0
  186. data/lib/puppet/functions/include.rb +1 -0
  187. data/lib/puppet/functions/index.rb +2 -2
  188. data/lib/puppet/functions/info.rb +1 -0
  189. data/lib/puppet/functions/inline_epp.rb +1 -1
  190. data/lib/puppet/functions/join.rb +2 -1
  191. data/lib/puppet/functions/json_data.rb +1 -0
  192. data/lib/puppet/functions/keys.rb +1 -0
  193. data/lib/puppet/functions/length.rb +1 -1
  194. data/lib/puppet/functions/lest.rb +1 -0
  195. data/lib/puppet/functions/lookup.rb +8 -9
  196. data/lib/puppet/functions/lstrip.rb +1 -1
  197. data/lib/puppet/functions/map.rb +1 -0
  198. data/lib/puppet/functions/match.rb +3 -1
  199. data/lib/puppet/functions/max.rb +4 -4
  200. data/lib/puppet/functions/min.rb +4 -4
  201. data/lib/puppet/functions/module_directory.rb +1 -0
  202. data/lib/puppet/functions/new.rb +2 -1
  203. data/lib/puppet/functions/next.rb +1 -0
  204. data/lib/puppet/functions/notice.rb +1 -0
  205. data/lib/puppet/functions/reduce.rb +1 -1
  206. data/lib/puppet/functions/regsubst.rb +1 -0
  207. data/lib/puppet/functions/require.rb +2 -0
  208. data/lib/puppet/functions/return.rb +1 -0
  209. data/lib/puppet/functions/reverse_each.rb +1 -0
  210. data/lib/puppet/functions/round.rb +1 -0
  211. data/lib/puppet/functions/rstrip.rb +1 -1
  212. data/lib/puppet/functions/scanf.rb +1 -0
  213. data/lib/puppet/functions/size.rb +1 -2
  214. data/lib/puppet/functions/slice.rb +2 -0
  215. data/lib/puppet/functions/sort.rb +1 -0
  216. data/lib/puppet/functions/split.rb +1 -0
  217. data/lib/puppet/functions/step.rb +1 -0
  218. data/lib/puppet/functions/strftime.rb +3 -2
  219. data/lib/puppet/functions/strip.rb +1 -1
  220. data/lib/puppet/functions/then.rb +2 -0
  221. data/lib/puppet/functions/tree_each.rb +1 -1
  222. data/lib/puppet/functions/type.rb +1 -0
  223. data/lib/puppet/functions/unique.rb +2 -1
  224. data/lib/puppet/functions/unwrap.rb +1 -0
  225. data/lib/puppet/functions/upcase.rb +1 -0
  226. data/lib/puppet/functions/values.rb +1 -0
  227. data/lib/puppet/functions/versioncmp.rb +2 -2
  228. data/lib/puppet/functions/warning.rb +1 -0
  229. data/lib/puppet/functions/with.rb +1 -0
  230. data/lib/puppet/functions/yaml_data.rb +1 -0
  231. data/lib/puppet/functions.rb +9 -9
  232. data/lib/puppet/generate/models/type/property.rb +2 -0
  233. data/lib/puppet/generate/models/type/type.rb +2 -0
  234. data/lib/puppet/generate/type.rb +6 -1
  235. data/lib/puppet/gettext/config.rb +6 -0
  236. data/lib/puppet/gettext/module_translations.rb +1 -1
  237. data/lib/puppet/gettext/stubs.rb +1 -0
  238. data/lib/puppet/graph/key.rb +1 -0
  239. data/lib/puppet/graph/prioritizer.rb +1 -0
  240. data/lib/puppet/graph/rb_tree_map.rb +12 -2
  241. data/lib/puppet/graph/relationship_graph.rb +3 -2
  242. data/lib/puppet/graph/sequential_prioritizer.rb +1 -0
  243. data/lib/puppet/graph/simple_graph.rb +38 -31
  244. data/lib/puppet/graph.rb +1 -0
  245. data/lib/puppet/http/client.rb +4 -1
  246. data/lib/puppet/http/dns.rb +5 -5
  247. data/lib/puppet/http/errors.rb +1 -0
  248. data/lib/puppet/http/external_client.rb +2 -2
  249. data/lib/puppet/http/factory.rb +1 -0
  250. data/lib/puppet/http/pool.rb +2 -1
  251. data/lib/puppet/http/pool_entry.rb +1 -0
  252. data/lib/puppet/http/proxy.rb +3 -2
  253. data/lib/puppet/http/redirector.rb +1 -0
  254. data/lib/puppet/http/resolver/server_list.rb +1 -1
  255. data/lib/puppet/http/resolver/settings.rb +1 -1
  256. data/lib/puppet/http/resolver/srv.rb +1 -1
  257. data/lib/puppet/http/resolver.rb +1 -0
  258. data/lib/puppet/http/response.rb +1 -0
  259. data/lib/puppet/http/response_converter.rb +1 -0
  260. data/lib/puppet/http/response_net_http.rb +1 -1
  261. data/lib/puppet/http/retry_after_handler.rb +1 -1
  262. data/lib/puppet/http/service/ca.rb +1 -0
  263. data/lib/puppet/http/service/compiler.rb +9 -3
  264. data/lib/puppet/http/service/file_server.rb +2 -1
  265. data/lib/puppet/http/service/puppetserver.rb +1 -1
  266. data/lib/puppet/http/service/report.rb +1 -1
  267. data/lib/puppet/http/service.rb +1 -0
  268. data/lib/puppet/http/session.rb +2 -1
  269. data/lib/puppet/http/site.rb +1 -0
  270. data/lib/puppet/http.rb +1 -0
  271. data/lib/puppet/indirector/catalog/compiler.rb +50 -40
  272. data/lib/puppet/indirector/catalog/json.rb +1 -0
  273. data/lib/puppet/indirector/catalog/msgpack.rb +1 -0
  274. data/lib/puppet/indirector/catalog/rest.rb +9 -0
  275. data/lib/puppet/indirector/catalog/store_configs.rb +1 -2
  276. data/lib/puppet/indirector/catalog/yaml.rb +1 -0
  277. data/lib/puppet/indirector/code.rb +1 -0
  278. data/lib/puppet/indirector/data_binding/hiera.rb +1 -0
  279. data/lib/puppet/indirector/data_binding/none.rb +1 -0
  280. data/lib/puppet/indirector/direct_file_server.rb +3 -1
  281. data/lib/puppet/indirector/envelope.rb +1 -0
  282. data/lib/puppet/indirector/errors.rb +1 -0
  283. data/lib/puppet/indirector/exec.rb +1 -0
  284. data/lib/puppet/indirector/face.rb +7 -6
  285. data/lib/puppet/indirector/fact_search.rb +1 -0
  286. data/lib/puppet/indirector/facts/facter.rb +2 -0
  287. data/lib/puppet/indirector/facts/json.rb +1 -0
  288. data/lib/puppet/indirector/facts/memory.rb +1 -0
  289. data/lib/puppet/indirector/facts/network_device.rb +1 -0
  290. data/lib/puppet/indirector/facts/rest.rb +1 -0
  291. data/lib/puppet/indirector/facts/store_configs.rb +1 -1
  292. data/lib/puppet/indirector/facts/yaml.rb +1 -0
  293. data/lib/puppet/indirector/file_bucket_file/file.rb +10 -5
  294. data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -0
  295. data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -0
  296. data/lib/puppet/indirector/file_content/file.rb +1 -0
  297. data/lib/puppet/indirector/file_content/file_server.rb +1 -0
  298. data/lib/puppet/indirector/file_content/rest.rb +1 -0
  299. data/lib/puppet/indirector/file_content/selector.rb +1 -0
  300. data/lib/puppet/indirector/file_content.rb +1 -0
  301. data/lib/puppet/indirector/file_metadata/file.rb +1 -0
  302. data/lib/puppet/indirector/file_metadata/file_server.rb +1 -0
  303. data/lib/puppet/indirector/file_metadata/http.rb +1 -0
  304. data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
  305. data/lib/puppet/indirector/file_metadata/selector.rb +1 -0
  306. data/lib/puppet/indirector/file_metadata.rb +1 -0
  307. data/lib/puppet/indirector/file_server.rb +2 -0
  308. data/lib/puppet/indirector/generic_http.rb +1 -0
  309. data/lib/puppet/indirector/hiera.rb +5 -4
  310. data/lib/puppet/indirector/indirection.rb +11 -1
  311. data/lib/puppet/indirector/json.rb +3 -1
  312. data/lib/puppet/indirector/memory.rb +2 -0
  313. data/lib/puppet/indirector/msgpack.rb +5 -2
  314. data/lib/puppet/indirector/node/exec.rb +3 -2
  315. data/lib/puppet/indirector/node/json.rb +1 -1
  316. data/lib/puppet/indirector/node/memory.rb +1 -0
  317. data/lib/puppet/indirector/node/msgpack.rb +1 -0
  318. data/lib/puppet/indirector/node/plain.rb +1 -0
  319. data/lib/puppet/indirector/node/rest.rb +1 -0
  320. data/lib/puppet/indirector/node/store_configs.rb +1 -2
  321. data/lib/puppet/indirector/node/yaml.rb +1 -0
  322. data/lib/puppet/indirector/none.rb +1 -0
  323. data/lib/puppet/indirector/plain.rb +1 -0
  324. data/lib/puppet/indirector/report/json.rb +1 -0
  325. data/lib/puppet/indirector/report/msgpack.rb +1 -0
  326. data/lib/puppet/indirector/report/processor.rb +2 -0
  327. data/lib/puppet/indirector/report/rest.rb +1 -0
  328. data/lib/puppet/indirector/report/yaml.rb +1 -0
  329. data/lib/puppet/indirector/request.rb +7 -5
  330. data/lib/puppet/indirector/resource/ral.rb +1 -0
  331. data/lib/puppet/indirector/resource/store_configs.rb +1 -0
  332. data/lib/puppet/indirector/resource/validator.rb +1 -0
  333. data/lib/puppet/indirector/rest.rb +1 -0
  334. data/lib/puppet/indirector/store_configs.rb +1 -0
  335. data/lib/puppet/indirector/terminus.rb +4 -1
  336. data/lib/puppet/indirector/yaml.rb +1 -0
  337. data/lib/puppet/indirector.rb +2 -0
  338. data/lib/puppet/info_service/class_information_service.rb +5 -3
  339. data/lib/puppet/info_service/plan_information_service.rb +1 -0
  340. data/lib/puppet/info_service/task_information_service.rb +1 -0
  341. data/lib/puppet/interface/action.rb +32 -27
  342. data/lib/puppet/interface/action_builder.rb +14 -14
  343. data/lib/puppet/interface/action_manager.rb +2 -0
  344. data/lib/puppet/interface/documentation.rb +21 -15
  345. data/lib/puppet/interface/face_collection.rb +5 -2
  346. data/lib/puppet/interface/option.rb +15 -4
  347. data/lib/puppet/interface/option_builder.rb +13 -9
  348. data/lib/puppet/interface/option_manager.rb +3 -2
  349. data/lib/puppet/interface.rb +3 -3
  350. data/lib/puppet/loaders.rb +1 -1
  351. data/lib/puppet/metatype/manager.rb +9 -8
  352. data/lib/puppet/module/plan.rb +10 -4
  353. data/lib/puppet/module/task.rb +8 -2
  354. data/lib/puppet/module.rb +13 -3
  355. data/lib/puppet/module_tool/applications/application.rb +6 -4
  356. data/lib/puppet/module_tool/applications/checksummer.rb +1 -2
  357. data/lib/puppet/module_tool/applications/installer.rb +32 -45
  358. data/lib/puppet/module_tool/applications/uninstaller.rb +22 -21
  359. data/lib/puppet/module_tool/applications/unpacker.rb +3 -0
  360. data/lib/puppet/module_tool/applications/upgrader.rb +28 -26
  361. data/lib/puppet/module_tool/applications.rb +1 -0
  362. data/lib/puppet/module_tool/checksums.rb +1 -1
  363. data/lib/puppet/module_tool/contents_description.rb +1 -2
  364. data/lib/puppet/module_tool/dependency.rb +1 -1
  365. data/lib/puppet/module_tool/errors/base.rb +1 -0
  366. data/lib/puppet/module_tool/errors/installer.rb +4 -4
  367. data/lib/puppet/module_tool/errors/shared.rb +12 -12
  368. data/lib/puppet/module_tool/errors/uninstaller.rb +2 -2
  369. data/lib/puppet/module_tool/errors/upgrader.rb +3 -3
  370. data/lib/puppet/module_tool/errors.rb +1 -0
  371. data/lib/puppet/module_tool/install_directory.rb +6 -4
  372. data/lib/puppet/module_tool/installed_modules.rb +2 -0
  373. data/lib/puppet/module_tool/local_tarball.rb +3 -0
  374. data/lib/puppet/module_tool/metadata.rb +21 -20
  375. data/lib/puppet/module_tool/shared_behaviors.rb +23 -21
  376. data/lib/puppet/module_tool/tar/gnu.rb +1 -0
  377. data/lib/puppet/module_tool/tar/mini.rb +1 -0
  378. data/lib/puppet/module_tool/tar.rb +2 -1
  379. data/lib/puppet/module_tool.rb +1 -1
  380. data/lib/puppet/network/authconfig.rb +1 -0
  381. data/lib/puppet/network/authorization.rb +1 -0
  382. data/lib/puppet/network/client_request.rb +1 -0
  383. data/lib/puppet/network/format.rb +5 -0
  384. data/lib/puppet/network/format_handler.rb +2 -1
  385. data/lib/puppet/network/format_support.rb +6 -5
  386. data/lib/puppet/network/formats.rb +15 -11
  387. data/lib/puppet/network/http/api/indirected_routes.rb +8 -8
  388. data/lib/puppet/network/http/api/indirection_type.rb +1 -1
  389. data/lib/puppet/network/http/api/master/v3/environments.rb +1 -0
  390. data/lib/puppet/network/http/api/master/v3.rb +1 -0
  391. data/lib/puppet/network/http/api/master.rb +1 -0
  392. data/lib/puppet/network/http/api/server/v3/environments.rb +20 -14
  393. data/lib/puppet/network/http/api/server/v3.rb +13 -13
  394. data/lib/puppet/network/http/api/server.rb +1 -0
  395. data/lib/puppet/network/http/api.rb +11 -10
  396. data/lib/puppet/network/http/connection.rb +1 -0
  397. data/lib/puppet/network/http/error.rb +2 -1
  398. data/lib/puppet/network/http/handler.rb +3 -2
  399. data/lib/puppet/network/http/issues.rb +1 -0
  400. data/lib/puppet/network/http/memory_response.rb +1 -0
  401. data/lib/puppet/network/http/request.rb +13 -6
  402. data/lib/puppet/network/http/response.rb +1 -0
  403. data/lib/puppet/network/http/route.rb +4 -2
  404. data/lib/puppet/network/http.rb +1 -0
  405. data/lib/puppet/network/http_pool.rb +2 -1
  406. data/lib/puppet/network/uri.rb +1 -0
  407. data/lib/puppet/network.rb +1 -0
  408. data/lib/puppet/node/environment.rb +12 -9
  409. data/lib/puppet/node/facts.rb +2 -1
  410. data/lib/puppet/node.rb +3 -2
  411. data/lib/puppet/pal/catalog_compiler.rb +1 -3
  412. data/lib/puppet/pal/compiler.rb +6 -2
  413. data/lib/puppet/pal/function_signature.rb +2 -1
  414. data/lib/puppet/pal/json_catalog_encoder.rb +5 -1
  415. data/lib/puppet/pal/pal_api.rb +1 -0
  416. data/lib/puppet/pal/pal_impl.rb +20 -19
  417. data/lib/puppet/pal/plan_signature.rb +2 -1
  418. data/lib/puppet/pal/script_compiler.rb +3 -2
  419. data/lib/puppet/pal/task_signature.rb +14 -9
  420. data/lib/puppet/parameter/boolean.rb +1 -0
  421. data/lib/puppet/parameter/package_options.rb +1 -0
  422. data/lib/puppet/parameter/path.rb +3 -0
  423. data/lib/puppet/parameter/value.rb +1 -0
  424. data/lib/puppet/parameter/value_collection.rb +5 -5
  425. data/lib/puppet/parameter.rb +4 -3
  426. data/lib/puppet/parser/abstract_compiler.rb +0 -2
  427. data/lib/puppet/parser/ast/block_expression.rb +1 -0
  428. data/lib/puppet/parser/ast/branch.rb +1 -0
  429. data/lib/puppet/parser/ast/hostclass.rb +1 -0
  430. data/lib/puppet/parser/ast/leaf.rb +2 -0
  431. data/lib/puppet/parser/ast/node.rb +1 -0
  432. data/lib/puppet/parser/ast/pops_bridge.rb +6 -6
  433. data/lib/puppet/parser/ast/resource.rb +2 -3
  434. data/lib/puppet/parser/ast/resource_instance.rb +2 -0
  435. data/lib/puppet/parser/ast/resourceparam.rb +6 -5
  436. data/lib/puppet/parser/ast/top_level_construct.rb +1 -0
  437. data/lib/puppet/parser/ast.rb +4 -3
  438. data/lib/puppet/parser/catalog_compiler.rb +1 -2
  439. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +3 -0
  440. data/lib/puppet/parser/compiler/catalog_validator.rb +1 -0
  441. data/lib/puppet/parser/compiler.rb +10 -8
  442. data/lib/puppet/parser/e4_parser_adapter.rb +15 -15
  443. data/lib/puppet/parser/files.rb +1 -1
  444. data/lib/puppet/parser/functions/assert_type.rb +55 -54
  445. data/lib/puppet/parser/functions/binary_file.rb +19 -18
  446. data/lib/puppet/parser/functions/break.rb +35 -34
  447. data/lib/puppet/parser/functions/contain.rb +1 -0
  448. data/lib/puppet/parser/functions/create_resources.rb +8 -6
  449. data/lib/puppet/parser/functions/defined.rb +102 -101
  450. data/lib/puppet/parser/functions/dig.rb +33 -32
  451. data/lib/puppet/parser/functions/digest.rb +1 -0
  452. data/lib/puppet/parser/functions/each.rb +99 -98
  453. data/lib/puppet/parser/functions/epp.rb +2 -2
  454. data/lib/puppet/parser/functions/fail.rb +9 -8
  455. data/lib/puppet/parser/functions/file.rb +14 -13
  456. data/lib/puppet/parser/functions/filter.rb +74 -73
  457. data/lib/puppet/parser/functions/find_file.rb +22 -21
  458. data/lib/puppet/parser/functions/fqdn_rand.rb +23 -22
  459. data/lib/puppet/parser/functions/generate.rb +20 -20
  460. data/lib/puppet/parser/functions/hiera.rb +94 -93
  461. data/lib/puppet/parser/functions/hiera_array.rb +82 -81
  462. data/lib/puppet/parser/functions/hiera_hash.rb +92 -91
  463. data/lib/puppet/parser/functions/hiera_include.rb +92 -91
  464. data/lib/puppet/parser/functions/include.rb +2 -1
  465. data/lib/puppet/parser/functions/inline_epp.rb +2 -2
  466. data/lib/puppet/parser/functions/inline_template.rb +11 -11
  467. data/lib/puppet/parser/functions/lest.rb +44 -43
  468. data/lib/puppet/parser/functions/lookup.rb +131 -130
  469. data/lib/puppet/parser/functions/map.rb +71 -70
  470. data/lib/puppet/parser/functions/match.rb +39 -38
  471. data/lib/puppet/parser/functions/md5.rb +2 -1
  472. data/lib/puppet/parser/functions/new.rb +985 -984
  473. data/lib/puppet/parser/functions/next.rb +34 -33
  474. data/lib/puppet/parser/functions/realize.rb +9 -9
  475. data/lib/puppet/parser/functions/reduce.rb +132 -131
  476. data/lib/puppet/parser/functions/regsubst.rb +6 -5
  477. data/lib/puppet/parser/functions/require.rb +5 -4
  478. data/lib/puppet/parser/functions/return.rb +88 -87
  479. data/lib/puppet/parser/functions/reverse_each.rb +78 -77
  480. data/lib/puppet/parser/functions/scanf.rb +28 -27
  481. data/lib/puppet/parser/functions/sha1.rb +2 -1
  482. data/lib/puppet/parser/functions/sha256.rb +1 -0
  483. data/lib/puppet/parser/functions/shellquote.rb +1 -0
  484. data/lib/puppet/parser/functions/slice.rb +34 -33
  485. data/lib/puppet/parser/functions/split.rb +5 -6
  486. data/lib/puppet/parser/functions/sprintf.rb +3 -3
  487. data/lib/puppet/parser/functions/step.rb +79 -78
  488. data/lib/puppet/parser/functions/strftime.rb +180 -179
  489. data/lib/puppet/parser/functions/tag.rb +7 -6
  490. data/lib/puppet/parser/functions/tagged.rb +13 -12
  491. data/lib/puppet/parser/functions/template.rb +24 -23
  492. data/lib/puppet/parser/functions/then.rb +68 -67
  493. data/lib/puppet/parser/functions/type.rb +48 -47
  494. data/lib/puppet/parser/functions/versioncmp.rb +1 -1
  495. data/lib/puppet/parser/functions/with.rb +23 -22
  496. data/lib/puppet/parser/functions.rb +2 -0
  497. data/lib/puppet/parser/parser_factory.rb +1 -0
  498. data/lib/puppet/parser/relationship.rb +3 -0
  499. data/lib/puppet/parser/resource/param.rb +1 -0
  500. data/lib/puppet/parser/resource.rb +10 -4
  501. data/lib/puppet/parser/scope.rb +40 -32
  502. data/lib/puppet/parser/script_compiler.rb +5 -6
  503. data/lib/puppet/parser/templatewrapper.rb +1 -0
  504. data/lib/puppet/parser/type_loader.rb +19 -17
  505. data/lib/puppet/parser.rb +1 -0
  506. data/lib/puppet/plugins/configuration.rb +1 -0
  507. data/lib/puppet/plugins/syntax_checkers.rb +1 -1
  508. data/lib/puppet/plugins.rb +1 -0
  509. data/lib/puppet/pops/adaptable.rb +3 -1
  510. data/lib/puppet/pops/adapters.rb +3 -1
  511. data/lib/puppet/pops/evaluator/access_operator.rb +79 -65
  512. data/lib/puppet/pops/evaluator/callable_signature.rb +1 -1
  513. data/lib/puppet/pops/evaluator/closure.rb +273 -277
  514. data/lib/puppet/pops/evaluator/collector_transformer.rb +11 -9
  515. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -0
  516. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +2 -2
  517. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +4 -4
  518. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +1 -1
  519. data/lib/puppet/pops/evaluator/compare_operator.rb +15 -3
  520. data/lib/puppet/pops/evaluator/deferred_resolver.rb +2 -2
  521. data/lib/puppet/pops/evaluator/epp_evaluator.rb +10 -10
  522. data/lib/puppet/pops/evaluator/evaluator_impl.rb +140 -138
  523. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  524. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +2 -1
  525. data/lib/puppet/pops/evaluator/literal_evaluator.rb +1 -1
  526. data/lib/puppet/pops/evaluator/puppet_proc.rb +2 -0
  527. data/lib/puppet/pops/evaluator/relationship_operator.rb +5 -3
  528. data/lib/puppet/pops/evaluator/runtime3_converter.rb +21 -19
  529. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +31 -33
  530. data/lib/puppet/pops/evaluator/runtime3_support.rb +16 -19
  531. data/lib/puppet/pops/functions/dispatch.rb +1 -0
  532. data/lib/puppet/pops/functions/dispatcher.rb +1 -1
  533. data/lib/puppet/pops/functions/function.rb +1 -2
  534. data/lib/puppet/pops/issue_reporter.rb +19 -17
  535. data/lib/puppet/pops/issues.rb +8 -4
  536. data/lib/puppet/pops/label_provider.rb +1 -0
  537. data/lib/puppet/pops/loader/base_loader.rb +2 -2
  538. data/lib/puppet/pops/loader/dependency_loader.rb +3 -0
  539. data/lib/puppet/pops/loader/gem_support.rb +3 -1
  540. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +1 -0
  541. data/lib/puppet/pops/loader/loader.rb +1 -2
  542. data/lib/puppet/pops/loader/loader_paths.rb +20 -19
  543. data/lib/puppet/pops/loader/module_loaders.rb +28 -28
  544. data/lib/puppet/pops/loader/predefined_loader.rb +1 -2
  545. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +4 -2
  546. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +4 -2
  547. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +1 -1
  548. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +4 -1
  549. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +4 -1
  550. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -2
  551. data/lib/puppet/pops/loader/runtime3_type_loader.rb +2 -2
  552. data/lib/puppet/pops/loader/simple_environment_loader.rb +1 -2
  553. data/lib/puppet/pops/loader/static_loader.rb +22 -21
  554. data/lib/puppet/pops/loader/task_instantiator.rb +1 -0
  555. data/lib/puppet/pops/loader/type_definition_instantiator.rb +6 -4
  556. data/lib/puppet/pops/loader/typed_name.rb +1 -0
  557. data/lib/puppet/pops/loader/uri_helper.rb +1 -0
  558. data/lib/puppet/pops/loaders.rb +21 -18
  559. data/lib/puppet/pops/lookup/configured_data_provider.rb +1 -0
  560. data/lib/puppet/pops/lookup/context.rb +24 -23
  561. data/lib/puppet/pops/lookup/data_adapter.rb +1 -0
  562. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +2 -2
  563. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +1 -0
  564. data/lib/puppet/pops/lookup/data_provider.rb +1 -0
  565. data/lib/puppet/pops/lookup/environment_data_provider.rb +1 -0
  566. data/lib/puppet/pops/lookup/explainer.rb +34 -33
  567. data/lib/puppet/pops/lookup/function_provider.rb +7 -6
  568. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  569. data/lib/puppet/pops/lookup/hiera_config.rb +136 -100
  570. data/lib/puppet/pops/lookup/interpolation.rb +5 -1
  571. data/lib/puppet/pops/lookup/invocation.rb +3 -0
  572. data/lib/puppet/pops/lookup/key_recorder.rb +3 -1
  573. data/lib/puppet/pops/lookup/location_resolver.rb +2 -1
  574. data/lib/puppet/pops/lookup/lookup_adapter.rb +22 -20
  575. data/lib/puppet/pops/lookup/lookup_key.rb +1 -0
  576. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +1 -0
  577. data/lib/puppet/pops/lookup/module_data_provider.rb +3 -1
  578. data/lib/puppet/pops/lookup/sub_lookup.rb +5 -2
  579. data/lib/puppet/pops/lookup.rb +13 -8
  580. data/lib/puppet/pops/merge_strategy.rb +5 -2
  581. data/lib/puppet/pops/migration/migration_checker.rb +3 -1
  582. data/lib/puppet/pops/model/ast.rb +786 -685
  583. data/lib/puppet/pops/model/ast_transformer.rb +4 -3
  584. data/lib/puppet/pops/model/factory.rb +17 -13
  585. data/lib/puppet/pops/model/model_label_provider.rb +1 -1
  586. data/lib/puppet/pops/model/model_tree_dumper.rb +10 -9
  587. data/lib/puppet/pops/model/pn_transformer.rb +4 -6
  588. data/lib/puppet/pops/model/tree_dumper.rb +2 -0
  589. data/lib/puppet/pops/parser/code_merger.rb +0 -1
  590. data/lib/puppet/pops/parser/epp_parser.rb +1 -1
  591. data/lib/puppet/pops/parser/epp_support.rb +2 -2
  592. data/lib/puppet/pops/parser/evaluating_parser.rb +5 -2
  593. data/lib/puppet/pops/parser/heredoc_support.rb +6 -7
  594. data/lib/puppet/pops/parser/interpolation_support.rb +2 -3
  595. data/lib/puppet/pops/parser/lexer2.rb +32 -29
  596. data/lib/puppet/pops/parser/lexer_support.rb +38 -41
  597. data/lib/puppet/pops/parser/locatable.rb +1 -2
  598. data/lib/puppet/pops/parser/locator.rb +31 -28
  599. data/lib/puppet/pops/parser/parser_support.rb +2 -0
  600. data/lib/puppet/pops/parser/pn_parser.rb +1 -1
  601. data/lib/puppet/pops/parser/slurp_support.rb +33 -32
  602. data/lib/puppet/pops/patterns.rb +2 -3
  603. data/lib/puppet/pops/pcore.rb +2 -2
  604. data/lib/puppet/pops/pn.rb +3 -0
  605. data/lib/puppet/pops/puppet_stack.rb +1 -0
  606. data/lib/puppet/pops/resource/param.rb +11 -10
  607. data/lib/puppet/pops/resource/resource_type_impl.rb +37 -36
  608. data/lib/puppet/pops/semantic_error.rb +1 -0
  609. data/lib/puppet/pops/serialization/abstract_reader.rb +3 -2
  610. data/lib/puppet/pops/serialization/abstract_writer.rb +5 -4
  611. data/lib/puppet/pops/serialization/deserializer.rb +2 -0
  612. data/lib/puppet/pops/serialization/extension.rb +7 -0
  613. data/lib/puppet/pops/serialization/from_data_converter.rb +3 -0
  614. data/lib/puppet/pops/serialization/instance_reader.rb +1 -0
  615. data/lib/puppet/pops/serialization/instance_writer.rb +1 -0
  616. data/lib/puppet/pops/serialization/json.rb +6 -3
  617. data/lib/puppet/pops/serialization/json_path.rb +1 -0
  618. data/lib/puppet/pops/serialization/object.rb +4 -1
  619. data/lib/puppet/pops/serialization/serializer.rb +6 -2
  620. data/lib/puppet/pops/serialization/time_factory.rb +1 -1
  621. data/lib/puppet/pops/serialization/to_data_converter.rb +4 -2
  622. data/lib/puppet/pops/serialization/to_stringified_converter.rb +2 -2
  623. data/lib/puppet/pops/serialization.rb +1 -0
  624. data/lib/puppet/pops/time/timespan.rb +12 -2
  625. data/lib/puppet/pops/time/timestamp.rb +4 -0
  626. data/lib/puppet/pops/types/annotatable.rb +1 -1
  627. data/lib/puppet/pops/types/annotation.rb +1 -0
  628. data/lib/puppet/pops/types/class_loader.rb +8 -6
  629. data/lib/puppet/pops/types/implementation_registry.rb +1 -0
  630. data/lib/puppet/pops/types/iterable.rb +18 -9
  631. data/lib/puppet/pops/types/p_binary_type.rb +2 -3
  632. data/lib/puppet/pops/types/p_init_type.rb +12 -9
  633. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  634. data/lib/puppet/pops/types/p_object_type.rb +65 -42
  635. data/lib/puppet/pops/types/p_object_type_extension.rb +10 -7
  636. data/lib/puppet/pops/types/p_runtime_type.rb +11 -9
  637. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +1 -1
  638. data/lib/puppet/pops/types/p_sem_ver_type.rb +5 -5
  639. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -4
  640. data/lib/puppet/pops/types/p_timespan_type.rb +4 -2
  641. data/lib/puppet/pops/types/p_timestamp_type.rb +3 -2
  642. data/lib/puppet/pops/types/p_type_set_type.rb +36 -28
  643. data/lib/puppet/pops/types/p_uri_type.rb +25 -18
  644. data/lib/puppet/pops/types/puppet_object.rb +1 -1
  645. data/lib/puppet/pops/types/recursion_guard.rb +7 -2
  646. data/lib/puppet/pops/types/ruby_generator.rb +7 -4
  647. data/lib/puppet/pops/types/ruby_method.rb +6 -5
  648. data/lib/puppet/pops/types/string_converter.rb +65 -57
  649. data/lib/puppet/pops/types/tree_iterators.rb +6 -7
  650. data/lib/puppet/pops/types/type_acceptor.rb +1 -0
  651. data/lib/puppet/pops/types/type_asserter.rb +1 -0
  652. data/lib/puppet/pops/types/type_assertion_error.rb +0 -1
  653. data/lib/puppet/pops/types/type_calculator.rb +10 -4
  654. data/lib/puppet/pops/types/type_conversion_error.rb +1 -10
  655. data/lib/puppet/pops/types/type_factory.rb +7 -4
  656. data/lib/puppet/pops/types/type_formatter.rb +12 -11
  657. data/lib/puppet/pops/types/type_mismatch_describer.rb +13 -8
  658. data/lib/puppet/pops/types/type_parser.rb +111 -107
  659. data/lib/puppet/pops/types/type_set_reference.rb +2 -0
  660. data/lib/puppet/pops/types/type_with_members.rb +1 -1
  661. data/lib/puppet/pops/types/types.rb +177 -152
  662. data/lib/puppet/pops/utils.rb +1 -0
  663. data/lib/puppet/pops/validation/checker4_0.rb +17 -11
  664. data/lib/puppet/pops/validation/tasks_checker.rb +2 -1
  665. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  666. data/lib/puppet/pops/validation.rb +8 -6
  667. data/lib/puppet/pops/visitable.rb +1 -0
  668. data/lib/puppet/pops/visitor.rb +14 -1
  669. data/lib/puppet/pops.rb +2 -0
  670. data/lib/puppet/property/boolean.rb +1 -0
  671. data/lib/puppet/property/ensure.rb +4 -1
  672. data/lib/puppet/property/keyvalue.rb +5 -4
  673. data/lib/puppet/property/list.rb +5 -5
  674. data/lib/puppet/property/ordered_list.rb +4 -4
  675. data/lib/puppet/property.rb +13 -11
  676. data/lib/puppet/provider/aix_object.rb +5 -0
  677. data/lib/puppet/provider/command.rb +1 -0
  678. data/lib/puppet/provider/confine.rb +1 -0
  679. data/lib/puppet/provider/exec/posix.rb +2 -0
  680. data/lib/puppet/provider/exec/shell.rb +1 -0
  681. data/lib/puppet/provider/exec/windows.rb +2 -1
  682. data/lib/puppet/provider/exec.rb +1 -0
  683. data/lib/puppet/provider/file/posix.rb +1 -0
  684. data/lib/puppet/provider/file/windows.rb +10 -6
  685. data/lib/puppet/provider/group/aix.rb +1 -0
  686. data/lib/puppet/provider/group/directoryservice.rb +1 -1
  687. data/lib/puppet/provider/group/groupadd.rb +9 -4
  688. data/lib/puppet/provider/group/ldap.rb +2 -0
  689. data/lib/puppet/provider/group/pw.rb +1 -0
  690. data/lib/puppet/provider/group/windows_adsi.rb +2 -0
  691. data/lib/puppet/provider/ldap.rb +2 -0
  692. data/lib/puppet/provider/nameservice/directoryservice.rb +28 -19
  693. data/lib/puppet/provider/nameservice/objectadd.rb +1 -0
  694. data/lib/puppet/provider/nameservice/pw.rb +6 -5
  695. data/lib/puppet/provider/nameservice.rb +8 -4
  696. data/lib/puppet/provider/network_device.rb +1 -2
  697. data/lib/puppet/provider/package/aix.rb +5 -4
  698. data/lib/puppet/provider/package/appdmg.rb +20 -19
  699. data/lib/puppet/provider/package/apple.rb +3 -2
  700. data/lib/puppet/provider/package/apt.rb +4 -4
  701. data/lib/puppet/provider/package/aptitude.rb +1 -0
  702. data/lib/puppet/provider/package/aptrpm.rb +2 -1
  703. data/lib/puppet/provider/package/blastwave.rb +6 -6
  704. data/lib/puppet/provider/package/dnf.rb +2 -0
  705. data/lib/puppet/provider/package/dnfmodule.rb +8 -7
  706. data/lib/puppet/provider/package/dpkg.rb +4 -4
  707. data/lib/puppet/provider/package/fink.rb +2 -1
  708. data/lib/puppet/provider/package/freebsd.rb +3 -2
  709. data/lib/puppet/provider/package/gem.rb +9 -5
  710. data/lib/puppet/provider/package/hpux.rb +4 -3
  711. data/lib/puppet/provider/package/macports.rb +2 -1
  712. data/lib/puppet/provider/package/nim.rb +13 -15
  713. data/lib/puppet/provider/package/openbsd.rb +6 -4
  714. data/lib/puppet/provider/package/opkg.rb +2 -0
  715. data/lib/puppet/provider/package/pacman.rb +12 -12
  716. data/lib/puppet/provider/package/pip.rb +3 -1
  717. data/lib/puppet/provider/package/pip2.rb +2 -2
  718. data/lib/puppet/provider/package/pip3.rb +2 -2
  719. data/lib/puppet/provider/package/pkg.rb +17 -13
  720. data/lib/puppet/provider/package/pkgdmg.rb +7 -2
  721. data/lib/puppet/provider/package/pkgin.rb +5 -5
  722. data/lib/puppet/provider/package/pkgng.rb +11 -7
  723. data/lib/puppet/provider/package/pkgutil.rb +7 -6
  724. data/lib/puppet/provider/package/portage.rb +11 -6
  725. data/lib/puppet/provider/package/ports.rb +6 -5
  726. data/lib/puppet/provider/package/portupgrade.rb +6 -12
  727. data/lib/puppet/provider/package/puppet_gem.rb +1 -0
  728. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -0
  729. data/lib/puppet/provider/package/rpm.rb +10 -6
  730. data/lib/puppet/provider/package/rug.rb +2 -1
  731. data/lib/puppet/provider/package/sun.rb +20 -17
  732. data/lib/puppet/provider/package/sunfreeware.rb +1 -0
  733. data/lib/puppet/provider/package/tdnf.rb +1 -0
  734. data/lib/puppet/provider/package/up2date.rb +2 -1
  735. data/lib/puppet/provider/package/urpmi.rb +1 -0
  736. data/lib/puppet/provider/package/windows/exe_package.rb +1 -0
  737. data/lib/puppet/provider/package/windows/msi_package.rb +1 -0
  738. data/lib/puppet/provider/package/windows/package.rb +5 -3
  739. data/lib/puppet/provider/package/windows.rb +4 -2
  740. data/lib/puppet/provider/package/yum.rb +16 -13
  741. data/lib/puppet/provider/package/zypper.rb +15 -14
  742. data/lib/puppet/provider/package.rb +7 -6
  743. data/lib/puppet/provider/package_targetable.rb +1 -0
  744. data/lib/puppet/provider/parsedfile.rb +7 -2
  745. data/lib/puppet/provider/service/base.rb +2 -1
  746. data/lib/puppet/provider/service/bsd.rb +1 -0
  747. data/lib/puppet/provider/service/daemontools.rb +9 -7
  748. data/lib/puppet/provider/service/debian.rb +4 -3
  749. data/lib/puppet/provider/service/freebsd.rb +5 -6
  750. data/lib/puppet/provider/service/gentoo.rb +5 -4
  751. data/lib/puppet/provider/service/init.rb +10 -11
  752. data/lib/puppet/provider/service/launchd.rb +10 -4
  753. data/lib/puppet/provider/service/openbsd.rb +4 -4
  754. data/lib/puppet/provider/service/openrc.rb +1 -1
  755. data/lib/puppet/provider/service/openwrt.rb +1 -1
  756. data/lib/puppet/provider/service/rcng.rb +1 -0
  757. data/lib/puppet/provider/service/redhat.rb +3 -2
  758. data/lib/puppet/provider/service/runit.rb +8 -7
  759. data/lib/puppet/provider/service/service.rb +1 -0
  760. data/lib/puppet/provider/service/smf.rb +5 -2
  761. data/lib/puppet/provider/service/src.rb +16 -16
  762. data/lib/puppet/provider/service/systemd.rb +8 -4
  763. data/lib/puppet/provider/service/upstart.rb +8 -7
  764. data/lib/puppet/provider/service/windows.rb +22 -26
  765. data/lib/puppet/provider/user/aix.rb +3 -2
  766. data/lib/puppet/provider/user/directoryservice.rb +52 -44
  767. data/lib/puppet/provider/user/hpux.rb +15 -14
  768. data/lib/puppet/provider/user/ldap.rb +8 -6
  769. data/lib/puppet/provider/user/openbsd.rb +21 -20
  770. data/lib/puppet/provider/user/pw.rb +3 -2
  771. data/lib/puppet/provider/user/user_role_add.rb +19 -14
  772. data/lib/puppet/provider/user/useradd.rb +51 -41
  773. data/lib/puppet/provider/user/windows_adsi.rb +4 -1
  774. data/lib/puppet/provider.rb +9 -9
  775. data/lib/puppet/reference/configuration.rb +43 -42
  776. data/lib/puppet/reference/function.rb +1 -0
  777. data/lib/puppet/reference/indirection.rb +42 -41
  778. data/lib/puppet/reference/metaparameter.rb +1 -0
  779. data/lib/puppet/reference/providers.rb +2 -0
  780. data/lib/puppet/reference/report.rb +1 -0
  781. data/lib/puppet/reference/type.rb +4 -3
  782. data/lib/puppet/relationship.rb +3 -2
  783. data/lib/puppet/reports/http.rb +1 -1
  784. data/lib/puppet/reports/log.rb +1 -0
  785. data/lib/puppet/reports/store.rb +3 -1
  786. data/lib/puppet/reports.rb +4 -3
  787. data/lib/puppet/resource/catalog.rb +14 -10
  788. data/lib/puppet/resource/status.rb +1 -1
  789. data/lib/puppet/resource/type.rb +28 -18
  790. data/lib/puppet/resource/type_collection.rb +4 -0
  791. data/lib/puppet/resource.rb +24 -16
  792. data/lib/puppet/runtime.rb +1 -0
  793. data/lib/puppet/scheduler/job.rb +1 -0
  794. data/lib/puppet/scheduler/scheduler.rb +1 -0
  795. data/lib/puppet/scheduler/splay_job.rb +1 -0
  796. data/lib/puppet/scheduler/timer.rb +1 -0
  797. data/lib/puppet/scheduler.rb +1 -0
  798. data/lib/puppet/settings/alias_setting.rb +1 -0
  799. data/lib/puppet/settings/array_setting.rb +1 -1
  800. data/lib/puppet/settings/autosign_setting.rb +1 -1
  801. data/lib/puppet/settings/base_setting.rb +9 -5
  802. data/lib/puppet/settings/boolean_setting.rb +1 -0
  803. data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
  804. data/lib/puppet/settings/config_file.rb +3 -3
  805. data/lib/puppet/settings/directory_setting.rb +1 -0
  806. data/lib/puppet/settings/duration_setting.rb +1 -0
  807. data/lib/puppet/settings/enum_setting.rb +2 -1
  808. data/lib/puppet/settings/environment_conf.rb +9 -8
  809. data/lib/puppet/settings/errors.rb +2 -0
  810. data/lib/puppet/settings/file_or_directory_setting.rb +1 -5
  811. data/lib/puppet/settings/file_setting.rb +3 -13
  812. data/lib/puppet/settings/http_extra_headers_setting.rb +1 -1
  813. data/lib/puppet/settings/ini_file.rb +1 -0
  814. data/lib/puppet/settings/integer_setting.rb +1 -0
  815. data/lib/puppet/settings/path_setting.rb +1 -0
  816. data/lib/puppet/settings/port_setting.rb +2 -1
  817. data/lib/puppet/settings/priority_setting.rb +9 -8
  818. data/lib/puppet/settings/server_list_setting.rb +2 -2
  819. data/lib/puppet/settings/string_setting.rb +1 -0
  820. data/lib/puppet/settings/symbolic_enum_setting.rb +2 -1
  821. data/lib/puppet/settings/terminus_setting.rb +1 -0
  822. data/lib/puppet/settings/ttl_setting.rb +2 -0
  823. data/lib/puppet/settings/value_translator.rb +8 -7
  824. data/lib/puppet/settings.rb +89 -66
  825. data/lib/puppet/ssl/base.rb +4 -0
  826. data/lib/puppet/ssl/certificate.rb +3 -2
  827. data/lib/puppet/ssl/certificate_request.rb +9 -7
  828. data/lib/puppet/ssl/certificate_request_attributes.rb +3 -1
  829. data/lib/puppet/ssl/certificate_signer.rb +2 -3
  830. data/lib/puppet/ssl/digest.rb +1 -0
  831. data/lib/puppet/ssl/error.rb +2 -0
  832. data/lib/puppet/ssl/oids.rb +3 -3
  833. data/lib/puppet/ssl/openssl_loader.rb +1 -0
  834. data/lib/puppet/ssl/ssl_context.rb +11 -15
  835. data/lib/puppet/ssl/ssl_provider.rb +2 -1
  836. data/lib/puppet/ssl/state_machine.rb +1 -0
  837. data/lib/puppet/ssl/verifier.rb +2 -2
  838. data/lib/puppet/ssl.rb +1 -0
  839. data/lib/puppet/syntax_checkers/base64.rb +2 -1
  840. data/lib/puppet/syntax_checkers/epp.rb +1 -1
  841. data/lib/puppet/syntax_checkers/json.rb +1 -2
  842. data/lib/puppet/syntax_checkers/pp.rb +1 -1
  843. data/lib/puppet/syntax_checkers.rb +1 -0
  844. data/lib/puppet/test/test_helper.rb +16 -14
  845. data/lib/puppet/thread_local.rb +1 -0
  846. data/lib/puppet/transaction/additional_resource_generator.rb +5 -1
  847. data/lib/puppet/transaction/event.rb +5 -3
  848. data/lib/puppet/transaction/event_manager.rb +4 -3
  849. data/lib/puppet/transaction/persistence.rb +2 -1
  850. data/lib/puppet/transaction/report.rb +23 -15
  851. data/lib/puppet/transaction/resource_harness.rb +6 -3
  852. data/lib/puppet/transaction.rb +11 -6
  853. data/lib/puppet/trusted_external.rb +8 -4
  854. data/lib/puppet/type/component.rb +11 -5
  855. data/lib/puppet/type/exec.rb +26 -10
  856. data/lib/puppet/type/file/checksum.rb +1 -0
  857. data/lib/puppet/type/file/checksum_value.rb +3 -2
  858. data/lib/puppet/type/file/content.rb +16 -13
  859. data/lib/puppet/type/file/ctime.rb +2 -1
  860. data/lib/puppet/type/file/data_sync.rb +4 -2
  861. data/lib/puppet/type/file/ensure.rb +5 -5
  862. data/lib/puppet/type/file/group.rb +2 -1
  863. data/lib/puppet/type/file/mode.rb +4 -2
  864. data/lib/puppet/type/file/mtime.rb +2 -1
  865. data/lib/puppet/type/file/owner.rb +2 -1
  866. data/lib/puppet/type/file/selcontext.rb +2 -2
  867. data/lib/puppet/type/file/source.rb +12 -10
  868. data/lib/puppet/type/file/target.rb +2 -2
  869. data/lib/puppet/type/file/type.rb +2 -1
  870. data/lib/puppet/type/file.rb +22 -13
  871. data/lib/puppet/type/filebucket.rb +1 -0
  872. data/lib/puppet/type/group.rb +8 -8
  873. data/lib/puppet/type/notify.rb +1 -1
  874. data/lib/puppet/type/package.rb +21 -21
  875. data/lib/puppet/type/resources.rb +30 -25
  876. data/lib/puppet/type/schedule.rb +9 -10
  877. data/lib/puppet/type/service.rb +9 -7
  878. data/lib/puppet/type/stage.rb +1 -0
  879. data/lib/puppet/type/tidy.rb +9 -4
  880. data/lib/puppet/type/user.rb +28 -24
  881. data/lib/puppet/type/whit.rb +1 -1
  882. data/lib/puppet/type.rb +71 -61
  883. data/lib/puppet/util/at_fork/noop.rb +1 -0
  884. data/lib/puppet/util/at_fork/solaris.rb +2 -1
  885. data/lib/puppet/util/at_fork.rb +2 -1
  886. data/lib/puppet/util/autoload.rb +5 -0
  887. data/lib/puppet/util/backups.rb +3 -2
  888. data/lib/puppet/util/character_encoding.rb +1 -0
  889. data/lib/puppet/util/checksums.rb +11 -9
  890. data/lib/puppet/util/classgen.rb +8 -13
  891. data/lib/puppet/util/colors.rb +32 -31
  892. data/lib/puppet/util/command_line/puppet_option_parser.rb +12 -12
  893. data/lib/puppet/util/command_line/trollop.rb +693 -690
  894. data/lib/puppet/util/command_line.rb +1 -0
  895. data/lib/puppet/util/constant_inflector.rb +3 -3
  896. data/lib/puppet/util/diff.rb +13 -13
  897. data/lib/puppet/util/docs.rb +3 -0
  898. data/lib/puppet/util/errors.rb +1 -0
  899. data/lib/puppet/util/execution.rb +16 -18
  900. data/lib/puppet/util/execution_stub.rb +1 -0
  901. data/lib/puppet/util/feature.rb +1 -0
  902. data/lib/puppet/util/file_watcher.rb +2 -0
  903. data/lib/puppet/util/fileparsing.rb +2 -0
  904. data/lib/puppet/util/filetype.rb +3 -0
  905. data/lib/puppet/util/http_proxy.rb +1 -0
  906. data/lib/puppet/util/inifile.rb +3 -3
  907. data/lib/puppet/util/instance_loader.rb +2 -0
  908. data/lib/puppet/util/json.rb +1 -0
  909. data/lib/puppet/util/json_lockfile.rb +3 -1
  910. data/lib/puppet/util/ldap/connection.rb +19 -18
  911. data/lib/puppet/util/ldap/generator.rb +1 -0
  912. data/lib/puppet/util/ldap/manager.rb +3 -2
  913. data/lib/puppet/util/ldap.rb +1 -0
  914. data/lib/puppet/util/libuser.rb +1 -1
  915. data/lib/puppet/util/limits.rb +1 -0
  916. data/lib/puppet/util/lockfile.rb +1 -0
  917. data/lib/puppet/util/log/destination.rb +1 -0
  918. data/lib/puppet/util/log/destinations.rb +14 -13
  919. data/lib/puppet/util/log.rb +21 -17
  920. data/lib/puppet/util/logging.rb +18 -14
  921. data/lib/puppet/util/metaid.rb +1 -0
  922. data/lib/puppet/util/metric.rb +2 -0
  923. data/lib/puppet/util/monkey_patches.rb +1 -0
  924. data/lib/puppet/util/multi_match.rb +4 -1
  925. data/lib/puppet/util/network_device/base.rb +1 -1
  926. data/lib/puppet/util/network_device/config.rb +3 -4
  927. data/lib/puppet/util/network_device/transport/base.rb +0 -1
  928. data/lib/puppet/util/network_device/transport.rb +1 -0
  929. data/lib/puppet/util/network_device.rb +1 -0
  930. data/lib/puppet/util/package/version/debian.rb +5 -3
  931. data/lib/puppet/util/package/version/gem.rb +2 -0
  932. data/lib/puppet/util/package/version/pip.rb +7 -2
  933. data/lib/puppet/util/package/version/range/eq.rb +2 -0
  934. data/lib/puppet/util/package/version/range/gt.rb +2 -0
  935. data/lib/puppet/util/package/version/range/gt_eq.rb +2 -0
  936. data/lib/puppet/util/package/version/range/lt.rb +2 -0
  937. data/lib/puppet/util/package/version/range/lt_eq.rb +2 -0
  938. data/lib/puppet/util/package/version/range/min_max.rb +4 -0
  939. data/lib/puppet/util/package/version/range/simple.rb +1 -0
  940. data/lib/puppet/util/package/version/range.rb +3 -0
  941. data/lib/puppet/util/package/version/rpm.rb +6 -4
  942. data/lib/puppet/util/package.rb +3 -0
  943. data/lib/puppet/util/pidlock.rb +7 -7
  944. data/lib/puppet/util/platform.rb +1 -0
  945. data/lib/puppet/util/plist.rb +1 -1
  946. data/lib/puppet/util/posix.rb +8 -5
  947. data/lib/puppet/util/profiler/aggregate.rb +2 -5
  948. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  949. data/lib/puppet/util/profiler/logging.rb +1 -0
  950. data/lib/puppet/util/profiler/object_counts.rb +1 -0
  951. data/lib/puppet/util/profiler/wall_clock.rb +1 -0
  952. data/lib/puppet/util/profiler.rb +1 -0
  953. data/lib/puppet/util/provider_features.rb +4 -0
  954. data/lib/puppet/util/psych_support.rb +1 -0
  955. data/lib/puppet/util/rdoc/code_objects.rb +3 -7
  956. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +37 -50
  957. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -68
  958. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +5 -5
  959. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -0
  960. data/lib/puppet/util/rdoc/parser.rb +1 -0
  961. data/lib/puppet/util/rdoc.rb +1 -1
  962. data/lib/puppet/util/reference.rb +1 -1
  963. data/lib/puppet/util/resource_template.rb +2 -0
  964. data/lib/puppet/util/retry_action.rb +3 -3
  965. data/lib/puppet/util/rpm_compare.rb +6 -3
  966. data/lib/puppet/util/rubygems.rb +1 -1
  967. data/lib/puppet/util/run_mode.rb +2 -1
  968. data/lib/puppet/util/selinux.rb +22 -11
  969. data/lib/puppet/util/skip_tags.rb +1 -0
  970. data/lib/puppet/util/splayer.rb +1 -0
  971. data/lib/puppet/util/storage.rb +2 -1
  972. data/lib/puppet/util/suidmanager.rb +8 -5
  973. data/lib/puppet/util/symbolic_file_mode.rb +3 -1
  974. data/lib/puppet/util/tag_set.rb +1 -0
  975. data/lib/puppet/util/tagging.rb +2 -1
  976. data/lib/puppet/util/terminal.rb +1 -0
  977. data/lib/puppet/util/user_attr.rb +1 -0
  978. data/lib/puppet/util/warnings.rb +3 -0
  979. data/lib/puppet/util/watched_file.rb +1 -0
  980. data/lib/puppet/util/watcher/change_watcher.rb +1 -0
  981. data/lib/puppet/util/watcher/periodic_watcher.rb +1 -0
  982. data/lib/puppet/util/watcher/timer.rb +1 -0
  983. data/lib/puppet/util/watcher.rb +1 -0
  984. data/lib/puppet/util/windows/access_control_entry.rb +1 -0
  985. data/lib/puppet/util/windows/access_control_list.rb +3 -2
  986. data/lib/puppet/util/windows/adsi.rb +32 -25
  987. data/lib/puppet/util/windows/com.rb +5 -3
  988. data/lib/puppet/util/windows/daemon.rb +33 -33
  989. data/lib/puppet/util/windows/error.rb +3 -2
  990. data/lib/puppet/util/windows/eventlog.rb +8 -5
  991. data/lib/puppet/util/windows/file.rb +30 -24
  992. data/lib/puppet/util/windows/monkey_patches/process.rb +0 -1
  993. data/lib/puppet/util/windows/principal.rb +27 -27
  994. data/lib/puppet/util/windows/process.rb +7 -6
  995. data/lib/puppet/util/windows/registry.rb +43 -41
  996. data/lib/puppet/util/windows/root_certs.rb +1 -0
  997. data/lib/puppet/util/windows/security.rb +43 -44
  998. data/lib/puppet/util/windows/security_descriptor.rb +1 -0
  999. data/lib/puppet/util/windows/service.rb +12 -1
  1000. data/lib/puppet/util/windows/sid.rb +6 -6
  1001. data/lib/puppet/util/windows/string.rb +1 -0
  1002. data/lib/puppet/util/windows/user.rb +33 -33
  1003. data/lib/puppet/util/windows.rb +6 -0
  1004. data/lib/puppet/util/yaml.rb +1 -0
  1005. data/lib/puppet/util.rb +18 -20
  1006. data/lib/puppet/vendor.rb +2 -1
  1007. data/lib/puppet/version.rb +3 -1
  1008. data/lib/puppet/x509/cert_provider.rb +7 -1
  1009. data/lib/puppet/x509/pem_store.rb +1 -0
  1010. data/lib/puppet/x509.rb +1 -0
  1011. data/lib/puppet.rb +1 -0
  1012. data/lib/puppet_pal.rb +1 -0
  1013. data/lib/puppet_x.rb +1 -0
  1014. data/locales/puppet.pot +195 -199
  1015. data/man/man5/puppet.conf.5 +2 -2
  1016. data/man/man8/puppet-agent.8 +1 -1
  1017. data/man/man8/puppet-apply.8 +1 -1
  1018. data/man/man8/puppet-catalog.8 +1 -1
  1019. data/man/man8/puppet-config.8 +1 -1
  1020. data/man/man8/puppet-describe.8 +1 -1
  1021. data/man/man8/puppet-device.8 +1 -1
  1022. data/man/man8/puppet-doc.8 +1 -1
  1023. data/man/man8/puppet-epp.8 +1 -1
  1024. data/man/man8/puppet-facts.8 +1 -1
  1025. data/man/man8/puppet-filebucket.8 +1 -1
  1026. data/man/man8/puppet-generate.8 +1 -1
  1027. data/man/man8/puppet-help.8 +1 -1
  1028. data/man/man8/puppet-lookup.8 +1 -1
  1029. data/man/man8/puppet-module.8 +1 -1
  1030. data/man/man8/puppet-node.8 +1 -1
  1031. data/man/man8/puppet-parser.8 +1 -1
  1032. data/man/man8/puppet-plugin.8 +1 -1
  1033. data/man/man8/puppet-report.8 +1 -1
  1034. data/man/man8/puppet-resource.8 +1 -1
  1035. data/man/man8/puppet-script.8 +1 -1
  1036. data/man/man8/puppet-ssl.8 +1 -1
  1037. data/man/man8/puppet.8 +2 -2
  1038. data/spec/integration/application/agent_spec.rb +13 -0
  1039. data/spec/lib/puppet_spec/puppetserver.rb +1 -0
  1040. data/spec/lib/puppet_spec/verbose.rb +5 -3
  1041. data/spec/unit/agent_spec.rb +2 -7
  1042. data/spec/unit/daemon_spec.rb +3 -20
  1043. data/spec/unit/indirector/catalog/compiler_spec.rb +17 -0
  1044. data/spec/unit/indirector/catalog/rest_spec.rb +17 -0
  1045. data/spec/unit/provider/package/appdmg_spec.rb +1 -1
  1046. data/spec/unit/provider/package/dnf_spec.rb +7 -0
  1047. data/spec/unit/provider/package/dnfmodule_spec.rb +22 -2
  1048. data/spec/unit/provider/service/systemd_spec.rb +8 -6
  1049. data/spec/unit/type/exec_spec.rb +14 -9
  1050. data/spec/unit/util/rpm_compare_spec.rb +8 -8
  1051. metadata +2 -3
  1052. data/CONTRIBUTING.md +0 -161
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative '../../../puppet/util/windows'
3
4
 
4
5
  module Puppet::Util::Windows::SID
@@ -21,7 +22,7 @@ module Puppet::Util::Windows::SID
21
22
  if (domain && !domain.empty? && @account_type == :SidTypeDomain)
22
23
  @domain_account = @domain
23
24
  elsif (domain && !domain.empty?)
24
- @domain_account = "#{domain}\\#{@account}"
25
+ @domain_account = "#{domain}\\#{@account}"
25
26
  else
26
27
  @domain_account = account
27
28
  end
@@ -59,28 +60,27 @@ module Puppet::Util::Windows::SID
59
60
  FFI::MemoryPointer.new(:dword, 1) do |sid_length_ptr|
60
61
  FFI::MemoryPointer.new(:dword, 1) do |domain_length_ptr|
61
62
  FFI::MemoryPointer.new(:uint32, 1) do |name_use_enum_ptr|
63
+ sid_length_ptr.write_dword(MAXIMUM_SID_BYTE_LENGTH)
64
+ success = LookupAccountNameW(system_name_ptr, account_name_ptr, sid_ptr, sid_length_ptr,
65
+ FFI::Pointer::NULL, domain_length_ptr, name_use_enum_ptr)
66
+ last_error = FFI.errno
62
67
 
63
- sid_length_ptr.write_dword(MAXIMUM_SID_BYTE_LENGTH)
64
- success = LookupAccountNameW(system_name_ptr, account_name_ptr, sid_ptr, sid_length_ptr,
65
- FFI::Pointer::NULL, domain_length_ptr, name_use_enum_ptr)
66
- last_error = FFI.errno
67
-
68
- if (success == FFI::WIN32_FALSE && last_error != ERROR_INSUFFICIENT_BUFFER)
69
- raise Puppet::Util::Windows::Error.new(_('Failed to call LookupAccountNameW with account: %{account_name}') % { account_name: account_name}, last_error)
70
- end
71
-
72
- FFI::MemoryPointer.new(:lpwstr, domain_length_ptr.read_dword) do |domain_ptr|
73
- if LookupAccountNameW(system_name_ptr, account_name_ptr,
74
- sid_ptr, sid_length_ptr,
75
- domain_ptr, domain_length_ptr, name_use_enum_ptr) == FFI::WIN32_FALSE
76
- raise Puppet::Util::Windows::Error.new(_('Failed to call LookupAccountNameW with account: %{account_name}') % { account_name: account_name} )
68
+ if (success == FFI::WIN32_FALSE && last_error != ERROR_INSUFFICIENT_BUFFER)
69
+ raise Puppet::Util::Windows::Error.new(_('Failed to call LookupAccountNameW with account: %{account_name}') % { account_name: account_name}, last_error)
77
70
  end
78
71
 
79
- # with a SID returned, loop back through lookup_account_sid to retrieve official name
80
- # necessary when accounts like . or '' are passed in
81
- return lookup_account_sid(
82
- system_name,
83
- sid_ptr.read_bytes(sid_length_ptr.read_dword).unpack('C*'))
72
+ FFI::MemoryPointer.new(:lpwstr, domain_length_ptr.read_dword) do |domain_ptr|
73
+ if LookupAccountNameW(system_name_ptr, account_name_ptr,
74
+ sid_ptr, sid_length_ptr,
75
+ domain_ptr, domain_length_ptr, name_use_enum_ptr) == FFI::WIN32_FALSE
76
+ raise Puppet::Util::Windows::Error.new(_('Failed to call LookupAccountNameW with account: %{account_name}') % { account_name: account_name} )
77
+ end
78
+
79
+ # with a SID returned, loop back through lookup_account_sid to retrieve official name
80
+ # necessary when accounts like . or '' are passed in
81
+ return lookup_account_sid(
82
+ system_name,
83
+ sid_ptr.read_bytes(sid_length_ptr.read_dword).unpack('C*'))
84
84
  end
85
85
  end
86
86
  end
@@ -95,7 +95,7 @@ module Puppet::Util::Windows::SID
95
95
  def self.lookup_account_sid(system_name = nil, sid_bytes)
96
96
  system_name_ptr = FFI::Pointer::NULL
97
97
  if (sid_bytes.nil? || (!sid_bytes.is_a? Array) || (sid_bytes.length == 0))
98
- #TRANSLATORS `lookup_account_sid` is a variable name and should not be translated
98
+ # TRANSLATORS `lookup_account_sid` is a variable name and should not be translated
99
99
  raise Puppet::Util::Windows::Error.new(_('Byte array for lookup_account_sid must not be nil and must be at least 1 byte long'))
100
100
  end
101
101
 
@@ -109,7 +109,6 @@ module Puppet::Util::Windows::SID
109
109
  FFI::MemoryPointer.new(:dword, 1) do |name_length_ptr|
110
110
  FFI::MemoryPointer.new(:dword, 1) do |domain_length_ptr|
111
111
  FFI::MemoryPointer.new(:uint32, 1) do |name_use_enum_ptr|
112
-
113
112
  sid_ptr.write_array_of_uchar(sid_bytes)
114
113
 
115
114
  if Puppet::Util::Windows::SID.IsValidSid(sid_ptr) == FFI::WIN32_FALSE
@@ -117,7 +116,7 @@ module Puppet::Util::Windows::SID
117
116
  end
118
117
 
119
118
  success = LookupAccountSidW(system_name_ptr, sid_ptr, FFI::Pointer::NULL, name_length_ptr,
120
- FFI::Pointer::NULL, domain_length_ptr, name_use_enum_ptr)
119
+ FFI::Pointer::NULL, domain_length_ptr, name_use_enum_ptr)
121
120
  last_error = FFI.errno
122
121
 
123
122
  if (success == FFI::WIN32_FALSE && last_error != ERROR_INSUFFICIENT_BUFFER)
@@ -127,8 +126,8 @@ module Puppet::Util::Windows::SID
127
126
  FFI::MemoryPointer.new(:lpwstr, name_length_ptr.read_dword) do |name_ptr|
128
127
  FFI::MemoryPointer.new(:lpwstr, domain_length_ptr.read_dword) do |domain_ptr|
129
128
  if LookupAccountSidW(system_name_ptr, sid_ptr, name_ptr, name_length_ptr,
130
- domain_ptr, domain_length_ptr, name_use_enum_ptr) == FFI::WIN32_FALSE
131
- raise Puppet::Util::Windows::Error.new(_('Failed to call LookupAccountSidW with bytes: %{sid_bytes}') % { sid_bytes: sid_bytes} )
129
+ domain_ptr, domain_length_ptr, name_use_enum_ptr) == FFI::WIN32_FALSE
130
+ raise Puppet::Util::Windows::Error.new(_('Failed to call LookupAccountSidW with bytes: %{sid_bytes}') % { sid_bytes: sid_bytes} )
132
131
  end
133
132
 
134
133
  return new(
@@ -151,6 +150,7 @@ module Puppet::Util::Windows::SID
151
150
  # Sanitize the given account name for lookup to avoid known issues
152
151
  def self.sanitize_account_name(account_name)
153
152
  return account_name unless account_name.start_with?('APPLICATION PACKAGE AUTHORITY\\')
153
+
154
154
  account_name.split('\\').last
155
155
  end
156
156
  private_class_method :sanitize_account_name
@@ -183,7 +183,7 @@ module Puppet::Util::Windows::SID
183
183
  # );
184
184
  ffi_lib :advapi32
185
185
  attach_function_private :LookupAccountNameW,
186
- [:lpcwstr, :lpcwstr, :pointer, :lpdword, :lpwstr, :lpdword, :pointer], :win32_bool
186
+ [:lpcwstr, :lpcwstr, :pointer, :lpdword, :lpwstr, :lpdword, :pointer], :win32_bool
187
187
 
188
188
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379166(v=vs.85).aspx
189
189
  # BOOL WINAPI LookupAccountSid(
@@ -197,6 +197,6 @@ module Puppet::Util::Windows::SID
197
197
  # );
198
198
  ffi_lib :advapi32
199
199
  attach_function_private :LookupAccountSidW,
200
- [:lpcwstr, :pointer, :lpwstr, :lpdword, :lpwstr, :lpdword, :pointer], :win32_bool
200
+ [:lpcwstr, :pointer, :lpwstr, :lpdword, :lpwstr, :lpdword, :pointer], :win32_bool
201
201
  end
202
202
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative '../../../puppet/util/windows/monkey_patches/process'
3
4
  require_relative '../../../puppet/ffi/windows'
4
5
 
@@ -46,6 +47,7 @@ module Puppet::Util::Windows::Process
46
47
  if GetExitCodeProcess(handle, exit_status_ptr) == FFI::WIN32_FALSE
47
48
  raise Puppet::Util::Windows::Error.new(_("Failed to get child process exit code"))
48
49
  end
50
+
49
51
  exit_status = exit_status_ptr.read_dword
50
52
 
51
53
  # $CHILD_STATUS is not set when calling win32/process Process.create
@@ -134,8 +136,8 @@ module Puppet::Util::Windows::Process
134
136
  result = QueryFullProcessImageNameW(phandle, use_win32_path_format, exe_name_ptr, exe_name_length_ptr)
135
137
  if result == FFI::WIN32_FALSE
136
138
  raise Puppet::Util::Windows::Error.new(
137
- "QueryFullProcessImageNameW(phandle, #{use_win32_path_format}, " +
138
- "exe_name_ptr, #{max_chars}")
139
+ "QueryFullProcessImageNameW(phandle, #{use_win32_path_format}, " +
140
+ "exe_name_ptr, #{max_chars}")
139
141
  end
140
142
  image_name = exe_name_ptr.read_wide_string(exe_name_length_ptr.read_dword)
141
143
  end
@@ -153,7 +155,7 @@ module Puppet::Util::Windows::Process
153
155
  wide_string(system_name),
154
156
  wide_string(name.to_s),
155
157
  luid_ptr
156
- )
158
+ )
157
159
 
158
160
  if result == FFI::WIN32_FALSE
159
161
  raise Puppet::Util::Windows::Error.new(
@@ -182,7 +184,7 @@ module Puppet::Util::Windows::Process
182
184
  # re-call API with properly sized buffer for all results
183
185
  FFI::MemoryPointer.new(return_length) do |token_information_buf|
184
186
  result = GetTokenInformation(token_handle, token_information,
185
- token_information_buf, return_length, return_length_ptr)
187
+ token_information_buf, return_length, return_length_ptr)
186
188
 
187
189
  if result == FFI::WIN32_FALSE
188
190
  raise Puppet::Util::Windows::Error.new(
@@ -208,7 +210,7 @@ module Puppet::Util::Windows::Process
208
210
 
209
211
  # extract each instance of LUID_AND_ATTRIBUTES
210
212
  0.upto(privileges[:count] - 1) do |i|
211
- privileges[:privileges] << LUID_AND_ATTRIBUTES.new(privilege_ptr[i])
213
+ privileges[:privileges] << LUID_AND_ATTRIBUTES.new(privilege_ptr[i])
212
214
  end
213
215
 
214
216
  privileges
@@ -361,5 +363,4 @@ module Puppet::Util::Windows::Process
361
363
  windows_major_version >= 6
362
364
  end
363
365
  module_function :supports_elevated_security?
364
-
365
366
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative '../../../puppet/util/windows'
3
4
 
4
5
  module Puppet::Util::Windows
@@ -63,7 +64,7 @@ module Puppet::Util::Windows
63
64
 
64
65
  def values(key)
65
66
  vals = {}
66
- each_value(key) { |subkey, type, data| vals[subkey] = data }
67
+ each_value(key) { |subkey, _type, data| vals[subkey] = data }
67
68
  vals
68
69
  end
69
70
 
@@ -124,9 +125,9 @@ module Puppet::Util::Windows
124
125
 
125
126
  # RegEnumKeyEx cannot be called twice to properly size the buffer
126
127
  result = RegEnumKeyExW(key.hkey, index,
127
- subkey_ptr, subkey_length_ptr,
128
- FFI::Pointer::NULL, FFI::Pointer::NULL,
129
- FFI::Pointer::NULL, filetime_ptr)
128
+ subkey_ptr, subkey_length_ptr,
129
+ FFI::Pointer::NULL, FFI::Pointer::NULL,
130
+ FFI::Pointer::NULL, filetime_ptr)
130
131
 
131
132
  break if result == ERROR_NO_MORE_ITEMS
132
133
 
@@ -157,9 +158,9 @@ module Puppet::Util::Windows
157
158
  subkey_length_ptr.write_dword(max_value_length)
158
159
 
159
160
  result = RegEnumValueW(key.hkey, index,
160
- subkey_ptr, subkey_length_ptr,
161
- FFI::Pointer::NULL, FFI::Pointer::NULL,
162
- FFI::Pointer::NULL, FFI::Pointer::NULL
161
+ subkey_ptr, subkey_length_ptr,
162
+ FFI::Pointer::NULL, FFI::Pointer::NULL,
163
+ FFI::Pointer::NULL, FFI::Pointer::NULL
163
164
  )
164
165
 
165
166
  break if result == ERROR_NO_MORE_ITEMS
@@ -184,14 +185,13 @@ module Puppet::Util::Windows
184
185
 
185
186
  FFI::MemoryPointer.new(:dword) do |max_subkey_name_length_ptr|
186
187
  FFI::MemoryPointer.new(:dword) do |max_value_name_length_ptr|
187
-
188
188
  status = RegQueryInfoKeyW(key.hkey,
189
- FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL,
190
- FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL,
191
- max_subkey_name_length_ptr, FFI::MemoryPointer::NULL,
192
- FFI::MemoryPointer::NULL, max_value_name_length_ptr,
193
- FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL,
194
- FFI::MemoryPointer::NULL
189
+ FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL,
190
+ FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL,
191
+ max_subkey_name_length_ptr, FFI::MemoryPointer::NULL,
192
+ FFI::MemoryPointer::NULL, max_value_name_length_ptr,
193
+ FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL,
194
+ FFI::MemoryPointer::NULL
195
195
  )
196
196
 
197
197
  if status != FFI::ERROR_SUCCESS
@@ -239,24 +239,25 @@ module Puppet::Util::Windows
239
239
  string_length = (byte_length / FFI.type_size(:wchar)) - 1 if byte_length > 0
240
240
 
241
241
  begin
242
- case type
243
- when Win32::Registry::REG_SZ, Win32::Registry::REG_EXPAND_SZ
244
- result = [ type, data_ptr.read_wide_string(string_length, Encoding::UTF_8, true) ]
245
- when Win32::Registry::REG_MULTI_SZ
246
- result = [ type, data_ptr.read_wide_string(string_length).split(/\0/) ]
247
- when Win32::Registry::REG_BINARY
248
- result = [ type, data_ptr.read_bytes(byte_length) ]
249
- when Win32::Registry::REG_DWORD
250
- result = [ type, data_ptr.read_dword ]
251
- when Win32::Registry::REG_DWORD_BIG_ENDIAN
252
- result = [ type, data_ptr.order(:big).read_dword ]
253
- when Win32::Registry::REG_QWORD
254
- result = [ type, data_ptr.read_qword ]
255
- else
256
- raise TypeError, _("Type %{type} is not supported.") % { type: type }
257
- end
242
+ result = case type
243
+ when Win32::Registry::REG_SZ, Win32::Registry::REG_EXPAND_SZ
244
+ [ type, data_ptr.read_wide_string(string_length, Encoding::UTF_8, true) ]
245
+ when Win32::Registry::REG_MULTI_SZ
246
+ [ type, data_ptr.read_wide_string(string_length).split(/\0/) ]
247
+ when Win32::Registry::REG_BINARY
248
+ [ type, data_ptr.read_bytes(byte_length) ]
249
+ when Win32::Registry::REG_DWORD
250
+ [ type, data_ptr.read_dword ]
251
+ when Win32::Registry::REG_DWORD_BIG_ENDIAN
252
+ [ type, data_ptr.order(:big).read_dword ]
253
+ when Win32::Registry::REG_QWORD
254
+ [ type, data_ptr.read_qword ]
255
+ else
256
+ raise TypeError, _("Type %{type} is not supported.") % { type: type }
257
+ end
258
258
  rescue IndexError => ex
259
259
  raise if (ex.message !~ /^Memory access .* is out of bounds$/i)
260
+
260
261
  parent_key_name = key.parent ? "#{key.parent.keyname}\\" : ""
261
262
  Puppet.warning _("A value in the registry key %{parent_key_name}%{key} is corrupt or invalid") % { parent_key_name: parent_key_name, key: key.keyname }
262
263
  end
@@ -269,13 +270,13 @@ module Puppet::Util::Windows
269
270
  FFI::MemoryPointer.new(:dword) do |type_ptr|
270
271
  FFI::MemoryPointer.new(:dword) do |length_ptr|
271
272
  result = RegQueryValueExW(key.hkey, name_ptr,
272
- FFI::Pointer::NULL, type_ptr,
273
- FFI::Pointer::NULL, length_ptr)
273
+ FFI::Pointer::NULL, type_ptr,
274
+ FFI::Pointer::NULL, length_ptr)
274
275
 
275
276
  FFI::MemoryPointer.new(:byte, length_ptr.read_dword) do |buffer_ptr|
276
277
  result = RegQueryValueExW(key.hkey, name_ptr,
277
- FFI::Pointer::NULL, type_ptr,
278
- buffer_ptr, length_ptr)
278
+ FFI::Pointer::NULL, type_ptr,
279
+ buffer_ptr, length_ptr)
279
280
 
280
281
  if result != FFI::ERROR_SUCCESS
281
282
  # buffer is raw bytes, *not* chars - less a NULL terminator
@@ -336,7 +337,7 @@ module Puppet::Util::Windows
336
337
  # );
337
338
  ffi_lib :advapi32
338
339
  attach_function_private :RegEnumKeyExW,
339
- [:handle, :dword, :lpwstr, :lpdword, :lpdword, :lpwstr, :lpdword, :pointer], :win32_long
340
+ [:handle, :dword, :lpwstr, :lpdword, :lpdword, :lpwstr, :lpdword, :pointer], :win32_long
340
341
 
341
342
  # https://msdn.microsoft.com/en-us/library/windows/desktop/ms724865(v=vs.85).aspx
342
343
  # LONG WINAPI RegEnumValue(
@@ -351,7 +352,7 @@ module Puppet::Util::Windows
351
352
  # );
352
353
  ffi_lib :advapi32
353
354
  attach_function_private :RegEnumValueW,
354
- [:handle, :dword, :lpwstr, :lpdword, :lpdword, :lpdword, :lpbyte, :lpdword], :win32_long
355
+ [:handle, :dword, :lpwstr, :lpdword, :lpdword, :lpdword, :lpbyte, :lpdword], :win32_long
355
356
 
356
357
  # https://msdn.microsoft.com/en-us/library/windows/desktop/ms724911(v=vs.85).aspx
357
358
  # LONG WINAPI RegQueryValueExW(
@@ -364,7 +365,7 @@ module Puppet::Util::Windows
364
365
  # );
365
366
  ffi_lib :advapi32
366
367
  attach_function_private :RegQueryValueExW,
367
- [:handle, :lpcwstr, :lpdword, :lpdword, :lpbyte, :lpdword], :win32_long
368
+ [:handle, :lpcwstr, :lpdword, :lpdword, :lpbyte, :lpdword], :win32_long
368
369
 
369
370
  # LONG WINAPI RegDeleteValue(
370
371
  # _In_ HKEY hKey,
@@ -372,7 +373,7 @@ module Puppet::Util::Windows
372
373
  # );
373
374
  ffi_lib :advapi32
374
375
  attach_function_private :RegDeleteValueW,
375
- [:handle, :lpcwstr], :win32_long
376
+ [:handle, :lpcwstr], :win32_long
376
377
 
377
378
  # LONG WINAPI RegDeleteKeyEx(
378
379
  # _In_ HKEY hKey,
@@ -382,7 +383,7 @@ module Puppet::Util::Windows
382
383
  # );
383
384
  ffi_lib :advapi32
384
385
  attach_function_private :RegDeleteKeyExW,
385
- [:handle, :lpcwstr, :win32_ulong, :dword], :win32_long
386
+ [:handle, :lpcwstr, :win32_ulong, :dword], :win32_long
386
387
 
387
388
  # https://msdn.microsoft.com/en-us/library/windows/desktop/ms724902(v=vs.85).aspx
388
389
  # LONG WINAPI RegQueryInfoKey(
@@ -401,7 +402,8 @@ module Puppet::Util::Windows
401
402
  # );
402
403
  ffi_lib :advapi32
403
404
  attach_function_private :RegQueryInfoKeyW,
404
- [:handle, :lpwstr, :lpdword, :lpdword, :lpdword, :lpdword, :lpdword,
405
- :lpdword, :lpdword, :lpdword, :lpdword, :pointer], :win32_long
405
+ [:handle, :lpwstr, :lpdword, :lpdword, :lpdword,
406
+ :lpdword, :lpdword, :lpdword, :lpdword, :lpdword,
407
+ :lpdword, :pointer], :win32_long
406
408
  end
407
409
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative '../../../puppet/util/windows'
3
4
  require_relative '../../../puppet/ssl/openssl_loader'
4
5
  require 'ffi'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # This class maps POSIX owner, group, and modes to the Windows
3
4
  # security model, and back.
4
5
  #
@@ -86,7 +87,7 @@ module Puppet::Util::Windows::Security
86
87
  S_IRWXG = 0000070
87
88
  S_IRWXO = 0000007
88
89
  S_ISVTX = 0001000
89
- S_IEXTRA = 02000000 # represents an extra ace
90
+ S_IEXTRA = 02000000 # represents an extra ace
90
91
  S_ISYSTEM_MISSING = 04000000
91
92
 
92
93
  # constants that are missing from Windows::Security
@@ -160,7 +161,7 @@ module Puppet::Util::Windows::Security
160
161
  get_security_descriptor(path).group
161
162
  end
162
163
 
163
- FILE_PERSISTENT_ACLS = 0x00000008
164
+ FILE_PERSISTENT_ACLS = 0x00000008
164
165
 
165
166
  def supports_acl?(path)
166
167
  supported = false
@@ -170,10 +171,11 @@ module Puppet::Util::Windows::Security
170
171
 
171
172
  FFI::MemoryPointer.new(:pointer, 1) do |flags_ptr|
172
173
  if GetVolumeInformationW(wide_string(root), FFI::Pointer::NULL, 0,
173
- FFI::Pointer::NULL, FFI::Pointer::NULL,
174
- flags_ptr, FFI::Pointer::NULL, 0) == FFI::WIN32_FALSE
174
+ FFI::Pointer::NULL, FFI::Pointer::NULL,
175
+ flags_ptr, FFI::Pointer::NULL, 0) == FFI::WIN32_FALSE
175
176
  raise Puppet::Util::Windows::Error.new(_("Failed to get volume information"))
176
177
  end
178
+
177
179
  supported = flags_ptr.read_dword & FILE_PERSISTENT_ACLS == FILE_PERSISTENT_ACLS
178
180
  end
179
181
 
@@ -237,10 +239,10 @@ module Puppet::Util::Windows::Security
237
239
  if (ace.mask & FILE::FILE_APPEND_DATA).nonzero?
238
240
  mode |= S_ISVTX
239
241
  end
240
- when well_known_app_packages_sid
241
- when well_known_system_sid
242
+ when well_known_app_packages_sid, well_known_system_sid
243
+ # do nothing
242
244
  else
243
- #puts "Warning, unable to map SID into POSIX mode: #{ace.sid}"
245
+ # puts "Warning, unable to map SID into POSIX mode: #{ace.sid}"
244
246
  mode |= S_IEXTRA
245
247
  end
246
248
 
@@ -251,11 +253,11 @@ module Puppet::Util::Windows::Security
251
253
  # if owner and group the same, then user and group modes are the OR of both
252
254
  if sd.owner == sd.group
253
255
  mode |= ((mode & S_IRWXG) << 3) | ((mode & S_IRWXU) >> 3)
254
- #puts "owner: #{sd.group}, 0x#{ace.mask.to_s(16)}, #{mode.to_s(8)}"
256
+ # puts "owner: #{sd.group}, 0x#{ace.mask.to_s(16)}, #{mode.to_s(8)}"
255
257
  end
256
258
  end
257
259
 
258
- #puts "get_mode: #{mode.to_s(8)}"
260
+ # puts "get_mode: #{mode.to_s(8)}"
259
261
  mode
260
262
  end
261
263
 
@@ -337,13 +339,13 @@ module Puppet::Util::Windows::Security
337
339
  # If owner and group are both SYSTEM but group is unmanaged the control rights of system will be set to FullControl by
338
340
  # the unmanaged group, so there is no need for the warning
339
341
  if managing_owner && (!isownergroup || managing_group)
340
- #TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
342
+ # TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
341
343
  Puppet.warning _("Setting control rights for %{path} owner SYSTEM to less than Full Control rights. Setting SYSTEM rights to less than Full Control may have unintented consequences for operations on this file") % { path: path }
342
344
  elsif managing_owner && isownergroup
343
- #TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
345
+ # TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
344
346
  Puppet.debug { _("%{path} owner and group both set to user SYSTEM, but group is not managed directly: SYSTEM user rights will be set to FullControl by group") % { path: path } }
345
347
  else
346
- #TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
348
+ # TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
347
349
  Puppet.debug { _("An attempt to set mode %{mode} on item %{path} would result in the owner, SYSTEM, to have less than Full Control rights. This attempt has been corrected to Full Control") % { mode: mode.to_s(8), path: path } }
348
350
  owner_allow = FILE::FILE_ALL_ACCESS
349
351
  end
@@ -353,13 +355,13 @@ module Puppet::Util::Windows::Security
353
355
  # If owner and group are both SYSTEM but owner is unmanaged the control rights of system will be set to FullControl by
354
356
  # the unmanaged owner, so there is no need for the warning.
355
357
  if managing_group && (!isownergroup || managing_owner)
356
- #TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
358
+ # TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
357
359
  Puppet.warning _("Setting control rights for %{path} group SYSTEM to less than Full Control rights. Setting SYSTEM rights to less than Full Control may have unintented consequences for operations on this file") % { path: path }
358
360
  elsif managing_group && isownergroup
359
- #TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
361
+ # TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
360
362
  Puppet.debug { _("%{path} owner and group both set to user SYSTEM, but owner is not managed directly: SYSTEM user rights will be set to FullControl by owner") % { path: path } }
361
363
  else
362
- #TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
364
+ # TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
363
365
  Puppet.debug { _("An attempt to set mode %{mode} on item %{path} would result in the group, SYSTEM, to have less than Full Control rights. This attempt has been corrected to Full Control") % { mode: mode.to_s(8), path: path } }
364
366
  group_allow = FILE::FILE_ALL_ACCESS
365
367
  end
@@ -424,7 +426,7 @@ module Puppet::Util::Windows::Security
424
426
  nil
425
427
  end
426
428
 
427
- ACL_REVISION = 2
429
+ ACL_REVISION = 2
428
430
 
429
431
  def add_access_allowed_ace(acl, mask, sid, inherit = nil)
430
432
  inherit ||= NO_INHERITANCE
@@ -476,12 +478,11 @@ module Puppet::Util::Windows::Security
476
478
 
477
479
  0.upto(ace_count - 1) do |i|
478
480
  FFI::MemoryPointer.new(:pointer, 1) do |ace_ptr|
479
-
480
481
  next if GetAce(dacl_ptr, i, ace_ptr) == FFI::WIN32_FALSE
481
482
 
482
483
  # ACE structures vary depending on the type. We are only concerned with
483
484
  # ACCESS_ALLOWED_ACE and ACCESS_DENIED_ACEs, which have the same layout
484
- ace = GENERIC_ACCESS_ACE.new(ace_ptr.get_pointer(0)) #deref LPVOID *
485
+ ace = GENERIC_ACCESS_ACE.new(ace_ptr.get_pointer(0)) # deref LPVOID *
485
486
 
486
487
  ace_type = ace[:Header][:AceType]
487
488
  if ace_type != Puppet::Util::Windows::AccessControlEntry::ACCESS_ALLOWED_ACE_TYPE &&
@@ -511,13 +512,13 @@ module Puppet::Util::Windows::Security
511
512
  # block with the opened file HANDLE.
512
513
  def open_file(path, access, &block)
513
514
  handle = CreateFileW(
514
- wide_string(path),
515
- access,
516
- FILE::FILE_SHARE_READ | FILE::FILE_SHARE_WRITE,
517
- FFI::Pointer::NULL, # security_attributes
518
- FILE::OPEN_EXISTING,
519
- FILE::FILE_FLAG_OPEN_REPARSE_POINT | FILE::FILE_FLAG_BACKUP_SEMANTICS,
520
- FFI::Pointer::NULL_HANDLE) # template
515
+ wide_string(path),
516
+ access,
517
+ FILE::FILE_SHARE_READ | FILE::FILE_SHARE_WRITE,
518
+ FFI::Pointer::NULL, # security_attributes
519
+ FILE::OPEN_EXISTING,
520
+ FILE::FILE_FLAG_OPEN_REPARSE_POINT | FILE::FILE_FLAG_BACKUP_SEMANTICS,
521
+ FFI::Pointer::NULL_HANDLE) # template
521
522
 
522
523
  if handle == Puppet::Util::Windows::File::INVALID_HANDLE_VALUE
523
524
  raise Puppet::Util::Windows::Error.new(_("Failed to open '%{path}'") % { path: path })
@@ -565,8 +566,8 @@ module Puppet::Util::Windows::Security
565
566
  # size is correct given we only have 1 LUID, otherwise would be:
566
567
  # [:PrivilegeCount].size + [:PrivilegeCount] * LUID_AND_ATTRIBUTES.size
567
568
  if AdjustTokenPrivileges(token, FFI::WIN32_FALSE,
568
- token_privileges, token_privileges.size,
569
- FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL) == FFI::WIN32_FALSE
569
+ token_privileges, token_privileges.size,
570
+ FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL) == FFI::WIN32_FALSE
570
571
  raise Puppet::Util::Windows::Error.new(_("Failed to adjust process privileges"))
571
572
  end
572
573
  end
@@ -587,7 +588,6 @@ module Puppet::Util::Windows::Security
587
588
  FFI::MemoryPointer.new(:pointer, 1) do |group_sid_ptr_ptr|
588
589
  FFI::MemoryPointer.new(:pointer, 1) do |dacl_ptr_ptr|
589
590
  FFI::MemoryPointer.new(:pointer, 1) do |sd_ptr_ptr|
590
-
591
591
  rv = GetSecurityInfo(
592
592
  handle,
593
593
  :SE_FILE_OBJECT,
@@ -595,8 +595,8 @@ module Puppet::Util::Windows::Security
595
595
  owner_sid_ptr_ptr,
596
596
  group_sid_ptr_ptr,
597
597
  dacl_ptr_ptr,
598
- FFI::Pointer::NULL, #sacl
599
- sd_ptr_ptr) #sec desc
598
+ FFI::Pointer::NULL, # sacl
599
+ sd_ptr_ptr) # sec desc
600
600
  raise Puppet::Util::Windows::Error.new(_("Failed to get security information")) if rv != FFI::ERROR_SUCCESS
601
601
 
602
602
  # these 2 convenience params are not freed since they point inside sd_ptr
@@ -606,7 +606,6 @@ module Puppet::Util::Windows::Security
606
606
  FFI::MemoryPointer.new(:word, 1) do |control|
607
607
  FFI::MemoryPointer.new(:dword, 1) do |revision|
608
608
  sd_ptr_ptr.read_win32_local_pointer do |sd_ptr|
609
-
610
609
  if GetSecurityDescriptorControl(sd_ptr, control, revision) == FFI::WIN32_FALSE
611
610
  raise Puppet::Util::Windows::Error.new(_("Failed to get security descriptor control"))
612
611
  end
@@ -656,10 +655,10 @@ module Puppet::Util::Windows::Security
656
655
  sd.dacl.each do |ace|
657
656
  case ace.type
658
657
  when Puppet::Util::Windows::AccessControlEntry::ACCESS_ALLOWED_ACE_TYPE
659
- #puts "ace: allow, sid #{Puppet::Util::Windows::SID.sid_to_name(ace.sid)}, mask 0x#{ace.mask.to_s(16)}"
658
+ # puts "ace: allow, sid #{Puppet::Util::Windows::SID.sid_to_name(ace.sid)}, mask 0x#{ace.mask.to_s(16)}"
660
659
  add_access_allowed_ace(acl_ptr, ace.mask, ace.sid, ace.flags)
661
660
  when Puppet::Util::Windows::AccessControlEntry::ACCESS_DENIED_ACE_TYPE
662
- #puts "ace: deny, sid #{Puppet::Util::Windows::SID.sid_to_name(ace.sid)}, mask 0x#{ace.mask.to_s(16)}"
661
+ # puts "ace: deny, sid #{Puppet::Util::Windows::SID.sid_to_name(ace.sid)}, mask 0x#{ace.mask.to_s(16)}"
663
662
  add_access_denied_ace(acl_ptr, ace.mask, ace.sid, ace.flags)
664
663
  else
665
664
  raise "We should never get here"
@@ -704,7 +703,7 @@ module Puppet::Util::Windows::Security
704
703
  # );
705
704
  ffi_lib :kernel32
706
705
  attach_function_private :CreateFileW,
707
- [:lpcwstr, :dword, :dword, :pointer, :dword, :dword, :handle], :handle
706
+ [:lpcwstr, :dword, :dword, :pointer, :dword, :dword, :handle], :handle
708
707
 
709
708
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v=vs.85).aspx
710
709
  # BOOL WINAPI GetVolumeInformation(
@@ -719,7 +718,7 @@ module Puppet::Util::Windows::Security
719
718
  # );
720
719
  ffi_lib :kernel32
721
720
  attach_function_private :GetVolumeInformationW,
722
- [:lpcwstr, :lpwstr, :dword, :lpdword, :lpdword, :lpdword, :lpwstr, :dword], :win32_bool
721
+ [:lpcwstr, :lpwstr, :dword, :lpdword, :lpdword, :lpdword, :lpwstr, :dword], :win32_bool
723
722
 
724
723
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374951(v=vs.85).aspx
725
724
  # BOOL WINAPI AddAccessAllowedAceEx(
@@ -731,7 +730,7 @@ module Puppet::Util::Windows::Security
731
730
  # );
732
731
  ffi_lib :advapi32
733
732
  attach_function_private :AddAccessAllowedAceEx,
734
- [:pointer, :dword, :dword, :dword, :pointer], :win32_bool
733
+ [:pointer, :dword, :dword, :dword, :pointer], :win32_bool
735
734
 
736
735
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374964(v=vs.85).aspx
737
736
  # BOOL WINAPI AddAccessDeniedAceEx(
@@ -743,7 +742,7 @@ module Puppet::Util::Windows::Security
743
742
  # );
744
743
  ffi_lib :advapi32
745
744
  attach_function_private :AddAccessDeniedAceEx,
746
- [:pointer, :dword, :dword, :dword, :pointer], :win32_bool
745
+ [:pointer, :dword, :dword, :dword, :pointer], :win32_bool
747
746
 
748
747
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374931(v=vs.85).aspx
749
748
  # typedef struct _ACL {
@@ -813,7 +812,7 @@ module Puppet::Util::Windows::Security
813
812
  # );
814
813
  ffi_lib :advapi32
815
814
  attach_function_private :GetAce,
816
- [:pointer, :dword, :pointer], :win32_bool
815
+ [:pointer, :dword, :pointer], :win32_bool
817
816
 
818
817
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa375202(v=vs.85).aspx
819
818
  # BOOL WINAPI AdjustTokenPrivileges(
@@ -826,7 +825,7 @@ module Puppet::Util::Windows::Security
826
825
  # );
827
826
  ffi_lib :advapi32
828
827
  attach_function_private :AdjustTokenPrivileges,
829
- [:handle, :win32_bool, :pointer, :dword, :pointer, :pdword], :win32_bool
828
+ [:handle, :win32_bool, :pointer, :dword, :pointer, :pdword], :win32_bool
830
829
 
831
830
  # https://msdn.microsoft.com/en-us/library/windows/hardware/ff556610(v=vs.85).aspx
832
831
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379561(v=vs.85).aspx
@@ -839,7 +838,7 @@ module Puppet::Util::Windows::Security
839
838
  # );
840
839
  ffi_lib :advapi32
841
840
  attach_function_private :GetSecurityDescriptorControl,
842
- [:pointer, :lpword, :lpdword], :win32_bool
841
+ [:pointer, :lpword, :lpdword], :win32_bool
843
842
 
844
843
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa378853(v=vs.85).aspx
845
844
  # BOOL WINAPI InitializeAcl(
@@ -849,7 +848,7 @@ module Puppet::Util::Windows::Security
849
848
  # );
850
849
  ffi_lib :advapi32
851
850
  attach_function_private :InitializeAcl,
852
- [:pointer, :dword, :dword], :win32_bool
851
+ [:pointer, :dword, :dword], :win32_bool
853
852
 
854
853
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379142(v=vs.85).aspx
855
854
  # BOOL WINAPI IsValidAcl(
@@ -857,7 +856,7 @@ module Puppet::Util::Windows::Security
857
856
  # );
858
857
  ffi_lib :advapi32
859
858
  attach_function_private :IsValidAcl,
860
- [:pointer], :win32_bool
859
+ [:pointer], :win32_bool
861
860
 
862
861
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379593(v=vs.85).aspx
863
862
  SE_OBJECT_TYPE = enum(
@@ -889,7 +888,7 @@ module Puppet::Util::Windows::Security
889
888
  # );
890
889
  ffi_lib :advapi32
891
890
  attach_function_private :GetSecurityInfo,
892
- [:handle, SE_OBJECT_TYPE, :dword, :pointer, :pointer, :pointer, :pointer, :pointer], :dword
891
+ [:handle, SE_OBJECT_TYPE, :dword, :pointer, :pointer, :pointer, :pointer, :pointer], :dword
893
892
 
894
893
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379588(v=vs.85).aspx
895
894
  # DWORD WINAPI SetSecurityInfo(
@@ -904,5 +903,5 @@ module Puppet::Util::Windows::Security
904
903
  ffi_lib :advapi32
905
904
  # TODO: SECURITY_INFORMATION is actually a bitmask the size of a DWORD
906
905
  attach_function_private :SetSecurityInfo,
907
- [:handle, SE_OBJECT_TYPE, :dword, :pointer, :pointer, :pointer, :pointer], :dword
906
+ [:handle, SE_OBJECT_TYPE, :dword, :pointer, :pointer, :pointer, :pointer], :dword
908
907
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Windows Security Descriptor
3
4
  #
4
5
  # Represents a security descriptor that can be applied to any Windows securable