puppet 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +2 -2
  3. data/CONTRIBUTING.md +6 -6
  4. data/LICENSE +1 -1
  5. data/README.md +8 -9
  6. data/conf/auth.conf +2 -2
  7. data/ext/README.environment +1 -1
  8. data/ext/build_defaults.yaml +1 -1
  9. data/ext/debian/README.source +1 -1
  10. data/ext/debian/control +1 -1
  11. data/ext/debian/copyright +4 -4
  12. data/ext/debian/puppetmaster.README.debian +11 -9
  13. data/ext/emacs/puppet-mode.el +1 -1
  14. data/ext/envpuppet +2 -2
  15. data/ext/ips/puppetagent.xml +1 -1
  16. data/ext/ips/puppetmaster.xml +1 -1
  17. data/ext/project_data.yaml +8 -0
  18. data/ext/puppet-test +3 -3
  19. data/ext/rack/example-passenger-vhost.conf +1 -1
  20. data/ext/redhat/puppet.spec.erb +2 -2
  21. data/ext/regexp_nodes/regexp_nodes.rb +1 -1
  22. data/ext/solaris/pkginfo +1 -1
  23. data/ext/solaris/smf/puppet.xml +1 -1
  24. data/ext/suse/puppet.spec +2 -2
  25. data/ext/upload_facts.rb +1 -1
  26. data/ext/windows/puppet_interactive.bat +6 -0
  27. data/ext/windows/puppet_shell.bat +9 -0
  28. data/ext/windows/run_puppet_interactive.bat +9 -0
  29. data/ext/yaml_nodes.rb +1 -1
  30. data/install.rb +30 -20
  31. data/lib/hiera/scope.rb +1 -1
  32. data/lib/puppet/agent.rb +1 -1
  33. data/lib/puppet/application/agent.rb +4 -2
  34. data/lib/puppet/application/apply.rb +7 -4
  35. data/lib/puppet/application/cert.rb +1 -1
  36. data/lib/puppet/application/device.rb +1 -1
  37. data/lib/puppet/application/filebucket.rb +1 -1
  38. data/lib/puppet/application/inspect.rb +1 -1
  39. data/lib/puppet/application/lookup.rb +45 -47
  40. data/lib/puppet/application/master.rb +2 -2
  41. data/lib/puppet/application/resource.rb +1 -1
  42. data/lib/puppet/configurer.rb +100 -22
  43. data/lib/puppet/data_providers/hiera_config.rb +28 -3
  44. data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
  45. data/lib/puppet/data_providers/hiera_support.rb +1 -1
  46. data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
  47. data/lib/puppet/data_providers/lookup_adapter.rb +73 -26
  48. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
  49. data/lib/puppet/defaults.rb +69 -22
  50. data/lib/puppet/environments.rb +3 -1
  51. data/lib/puppet/face/config.rb +1 -1
  52. data/lib/puppet/face/epp.rb +1 -1
  53. data/lib/puppet/face/help/man.erb +1 -1
  54. data/lib/puppet/face/module/install.rb +6 -6
  55. data/lib/puppet/face/parser.rb +12 -9
  56. data/lib/puppet/face/status.rb +2 -1
  57. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  58. data/lib/puppet/feature/telnet.rb +9 -0
  59. data/lib/puppet/file_serving/http_metadata.rb +46 -0
  60. data/lib/puppet/file_serving/metadata.rb +18 -2
  61. data/lib/puppet/file_serving/terminus_selector.rb +2 -0
  62. data/lib/puppet/file_system/file_impl.rb +2 -2
  63. data/lib/puppet/file_system/memory_impl.rb +1 -1
  64. data/lib/puppet/file_system/uniquefile.rb +1 -1
  65. data/lib/puppet/file_system.rb +2 -2
  66. data/lib/puppet/forge/repository.rb +1 -31
  67. data/lib/puppet/forge.rb +1 -1
  68. data/lib/puppet/functions/assert_type.rb +9 -9
  69. data/lib/puppet/functions/each.rb +5 -13
  70. data/lib/puppet/functions/filter.rb +5 -14
  71. data/lib/puppet/functions/lookup.rb +126 -150
  72. data/lib/puppet/functions/map.rb +6 -14
  73. data/lib/puppet/functions/match.rb +1 -0
  74. data/lib/puppet/functions/reduce.rb +5 -13
  75. data/lib/puppet/functions/reverse_each.rb +82 -0
  76. data/lib/puppet/functions/scanf.rb +15 -18
  77. data/lib/puppet/functions/slice.rb +22 -36
  78. data/lib/puppet/functions/split.rb +2 -2
  79. data/lib/puppet/functions/step.rb +88 -0
  80. data/lib/puppet/functions/type.rb +70 -0
  81. data/lib/puppet/functions.rb +45 -6
  82. data/lib/puppet/graph/rb_tree_map.rb +1 -1
  83. data/lib/puppet/indirector/catalog/compiler.rb +188 -5
  84. data/lib/puppet/indirector/facts/facter.rb +2 -13
  85. data/lib/puppet/indirector/file_content/http.rb +15 -0
  86. data/lib/puppet/indirector/file_metadata/http.rb +27 -0
  87. data/lib/puppet/indirector/generic_http.rb +16 -0
  88. data/lib/puppet/indirector/hiera.rb +3 -1
  89. data/lib/puppet/indirector/indirection.rb +6 -2
  90. data/lib/puppet/indirector/json.rb +2 -2
  91. data/lib/puppet/indirector/node/exec.rb +1 -1
  92. data/lib/puppet/indirector/node/ldap.rb +1 -1
  93. data/lib/puppet/indirector/rest.rb +2 -1
  94. data/lib/puppet/info_service/class_information_service.rb +13 -12
  95. data/lib/puppet/loaders.rb +1 -0
  96. data/lib/puppet/module.rb +6 -2
  97. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
  98. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
  99. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
  100. data/lib/puppet/module_tool/tar/mini.rb +3 -3
  101. data/lib/puppet/network/http/pool.rb +9 -0
  102. data/lib/puppet/node/environment.rb +11 -2
  103. data/lib/puppet/node.rb +11 -2
  104. data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
  105. data/lib/puppet/parser/compiler.rb +4 -11
  106. data/lib/puppet/parser/environment_compiler.rb +0 -1
  107. data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
  108. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  109. data/lib/puppet/parser/functions/lookup.rb +128 -149
  110. data/lib/puppet/parser/functions/map.rb +1 -1
  111. data/lib/puppet/parser/functions/match.rb +1 -0
  112. data/lib/puppet/parser/functions/scanf.rb +15 -26
  113. data/lib/puppet/parser/functions/slice.rb +17 -24
  114. data/lib/puppet/parser/functions/split.rb +1 -1
  115. data/lib/puppet/parser/functions.rb +28 -16
  116. data/lib/puppet/parser/resource.rb +19 -17
  117. data/lib/puppet/parser/scope.rb +176 -5
  118. data/lib/puppet/plugins/data_providers/data_provider.rb +56 -14
  119. data/lib/puppet/pops/adaptable.rb +4 -1
  120. data/lib/puppet/pops/adapters.rb +80 -12
  121. data/lib/puppet/pops/binder/binder.rb +21 -17
  122. data/lib/puppet/pops/binder/binder_issues.rb +8 -6
  123. data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
  124. data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
  125. data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
  126. data/lib/puppet/pops/binder/bindings_model.rb +49 -47
  127. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
  128. data/lib/puppet/pops/binder/injector.rb +53 -48
  129. data/lib/puppet/pops/binder/key_factory.rb +10 -6
  130. data/lib/puppet/pops/binder/producers.rb +67 -62
  131. data/lib/puppet/pops/evaluator/access_operator.rb +98 -96
  132. data/lib/puppet/pops/evaluator/closure.rb +122 -106
  133. data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -14
  134. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
  135. data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
  136. data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
  137. data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
  138. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
  139. data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
  140. data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
  141. data/lib/puppet/pops/evaluator/runtime3_support.rb +47 -42
  142. data/lib/puppet/pops/functions/function.rb +6 -2
  143. data/lib/puppet/pops/issue_reporter.rb +6 -4
  144. data/lib/puppet/pops/issues.rb +50 -11
  145. data/lib/puppet/pops/loader/base_loader.rb +1 -1
  146. data/lib/puppet/pops/loader/loader.rb +1 -1
  147. data/lib/puppet/pops/loader/loader_paths.rb +15 -0
  148. data/lib/puppet/pops/loader/module_loaders.rb +17 -13
  149. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +18 -13
  150. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
  151. data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
  152. data/lib/puppet/pops/loaders.rb +51 -9
  153. data/lib/puppet/pops/lookup/explainer.rb +73 -3
  154. data/lib/puppet/pops/lookup/invocation.rb +21 -19
  155. data/lib/puppet/pops/lookup.rb +17 -12
  156. data/lib/puppet/pops/merge_strategy.rb +16 -19
  157. data/lib/puppet/pops/model/factory.rb +179 -157
  158. data/lib/puppet/pops/model/model.rb +17 -8
  159. data/lib/puppet/pops/model/model_label_provider.rb +14 -7
  160. data/lib/puppet/pops/model/model_meta.rb +17 -0
  161. data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
  162. data/lib/puppet/pops/parser/egrammar.ra +38 -14
  163. data/lib/puppet/pops/parser/eparser.rb +1353 -1276
  164. data/lib/puppet/pops/parser/epp_support.rb +11 -7
  165. data/lib/puppet/pops/parser/evaluating_parser.rb +17 -13
  166. data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
  167. data/lib/puppet/pops/parser/lexer2.rb +428 -403
  168. data/lib/puppet/pops/parser/lexer_support.rb +85 -7
  169. data/lib/puppet/pops/parser/locator.rb +21 -0
  170. data/lib/puppet/pops/parser/parser_support.rb +19 -16
  171. data/lib/puppet/pops/parser/slurp_support.rb +16 -8
  172. data/lib/puppet/pops/types/class_loader.rb +23 -19
  173. data/lib/puppet/pops/types/enumeration.rb +9 -26
  174. data/lib/puppet/pops/types/iterable.rb +308 -0
  175. data/lib/puppet/pops/types/recursion_guard.rb +82 -0
  176. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  177. data/lib/puppet/pops/types/type_asserter.rb +10 -9
  178. data/lib/puppet/pops/types/type_calculator.rb +140 -387
  179. data/lib/puppet/pops/types/type_factory.rb +91 -57
  180. data/lib/puppet/pops/types/type_formatter.rb +334 -0
  181. data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
  182. data/lib/puppet/pops/types/type_parser.rb +159 -112
  183. data/lib/puppet/pops/types/types.rb +2057 -1253
  184. data/lib/puppet/pops/utils.rb +11 -10
  185. data/lib/puppet/pops/validation/checker4_0.rb +115 -63
  186. data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
  187. data/lib/puppet/pops/validation.rb +11 -9
  188. data/lib/puppet/pops.rb +0 -8
  189. data/lib/puppet/provider/aixobject.rb +1 -1
  190. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  191. data/lib/puppet/provider/cron/crontab.rb +1 -1
  192. data/lib/puppet/provider/exec/windows.rb +1 -1
  193. data/lib/puppet/provider/group/windows_adsi.rb +2 -2
  194. data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
  195. data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
  196. data/lib/puppet/provider/package/appdmg.rb +3 -2
  197. data/lib/puppet/provider/package/dnf.rb +1 -1
  198. data/lib/puppet/provider/package/pip.rb +16 -9
  199. data/lib/puppet/provider/package/pip3.rb +1 -1
  200. data/lib/puppet/provider/package/pkg.rb +1 -1
  201. data/lib/puppet/provider/package/pkgdmg.rb +3 -2
  202. data/lib/puppet/provider/package/pkgng.rb +13 -4
  203. data/lib/puppet/provider/package/rpm.rb +0 -1
  204. data/lib/puppet/provider/package/windows.rb +1 -1
  205. data/lib/puppet/provider/package/yum.rb +2 -2
  206. data/lib/puppet/provider/package/zypper.rb +19 -0
  207. data/lib/puppet/provider/service/debian.rb +7 -20
  208. data/lib/puppet/provider/service/init.rb +7 -0
  209. data/lib/puppet/provider/service/launchd.rb +6 -12
  210. data/lib/puppet/provider/service/systemd.rb +9 -2
  211. data/lib/puppet/provider/sshkey/parsed.rb +1 -1
  212. data/lib/puppet/provider/user/aix.rb +1 -1
  213. data/lib/puppet/provider/user/directoryservice.rb +33 -58
  214. data/lib/puppet/provider/user/windows_adsi.rb +2 -2
  215. data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
  216. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  217. data/lib/puppet/provider/zpool/zpool.rb +1 -1
  218. data/lib/puppet/reference/configuration.rb +1 -1
  219. data/lib/puppet/reference/providers.rb +1 -1
  220. data/lib/puppet/resource/capability_finder.rb +20 -13
  221. data/lib/puppet/resource/catalog.rb +60 -3
  222. data/lib/puppet/resource/status.rb +11 -2
  223. data/lib/puppet/resource/type.rb +33 -42
  224. data/lib/puppet/resource.rb +15 -12
  225. data/lib/puppet/settings/config_file.rb +1 -1
  226. data/lib/puppet/settings/environment_conf.rb +13 -5
  227. data/lib/puppet/settings.rb +1 -1
  228. data/lib/puppet/ssl/certificate_factory.rb +3 -3
  229. data/lib/puppet/ssl/certificate_request.rb +4 -4
  230. data/lib/puppet/ssl/certificate_signer.rb +1 -1
  231. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  232. data/lib/puppet/test/test_helper.rb +16 -4
  233. data/lib/puppet/transaction/additional_resource_generator.rb +23 -5
  234. data/lib/puppet/transaction/report.rb +31 -1
  235. data/lib/puppet/transaction/resource_harness.rb +0 -25
  236. data/lib/puppet/transaction.rb +15 -2
  237. data/lib/puppet/type/augeas.rb +1 -1
  238. data/lib/puppet/type/cron.rb +12 -12
  239. data/lib/puppet/type/file/checksum_value.rb +53 -0
  240. data/lib/puppet/type/file/content.rb +26 -111
  241. data/lib/puppet/type/file/data_sync.rb +84 -0
  242. data/lib/puppet/type/file/ensure.rb +17 -14
  243. data/lib/puppet/type/file/selcontext.rb +1 -1
  244. data/lib/puppet/type/file/source.rb +103 -18
  245. data/lib/puppet/type/file.rb +91 -39
  246. data/lib/puppet/type/filebucket.rb +1 -1
  247. data/lib/puppet/type/group.rb +6 -2
  248. data/lib/puppet/type/interface.rb +8 -3
  249. data/lib/puppet/type/macauthorization.rb +1 -1
  250. data/lib/puppet/type/package.rb +6 -0
  251. data/lib/puppet/type/schedule.rb +1 -1
  252. data/lib/puppet/type/stage.rb +1 -1
  253. data/lib/puppet/type/user.rb +19 -17
  254. data/lib/puppet/type/yumrepo.rb +20 -0
  255. data/lib/puppet/type.rb +11 -11
  256. data/lib/puppet/util/autoload.rb +16 -11
  257. data/lib/puppet/util/checksums.rb +74 -31
  258. data/lib/puppet/util/execution.rb +1 -1
  259. data/lib/puppet/util/http_proxy.rb +72 -0
  260. data/lib/puppet/util/log.rb +2 -0
  261. data/lib/puppet/util/logging.rb +43 -1
  262. data/lib/puppet/util/monkey_patches.rb +2 -2
  263. data/lib/puppet/util/multi_match.rb +51 -0
  264. data/lib/puppet/util/network_device/cisco/device.rb +10 -2
  265. data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
  266. data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
  267. data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
  268. data/lib/puppet/util/plist.rb +130 -0
  269. data/lib/puppet/util/resource_template.rb +1 -1
  270. data/lib/puppet/util/run_mode.rb +2 -2
  271. data/lib/puppet/util/skip_tags.rb +9 -0
  272. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  273. data/lib/puppet/util/windows/access_control_list.rb +3 -3
  274. data/lib/puppet/util/windows/adsi.rb +65 -28
  275. data/lib/puppet/util/windows/api_types.rb +24 -18
  276. data/lib/puppet/util/windows/com.rb +3 -3
  277. data/lib/puppet/util/windows/error.rb +1 -1
  278. data/lib/puppet/util/windows/file.rb +8 -8
  279. data/lib/puppet/util/windows/principal.rb +190 -0
  280. data/lib/puppet/util/windows/process.rb +78 -11
  281. data/lib/puppet/util/windows/registry.rb +22 -16
  282. data/lib/puppet/util/windows/root_certs.rb +5 -5
  283. data/lib/puppet/util/windows/security.rb +33 -35
  284. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  285. data/lib/puppet/util/windows/sid.rb +84 -15
  286. data/lib/puppet/util/windows/taskscheduler.rb +15 -15
  287. data/lib/puppet/util/windows/user.rb +10 -10
  288. data/lib/puppet/util/windows.rb +4 -0
  289. data/lib/puppet/util.rb +109 -22
  290. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
  291. data/lib/puppet/vendor/pathspec/LICENSE +2 -2
  292. data/lib/puppet/vendor/pathspec/README.md +1 -1
  293. data/lib/puppet/vendor/rgen/README.rdoc +1 -1
  294. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
  295. data/lib/puppet/version.rb +1 -1
  296. data/lib/puppet.rb +17 -0
  297. data/lib/semver.rb +17 -1
  298. data/man/man5/puppet.conf.5 +12 -12
  299. data/man/man8/extlookup2hiera.8 +1 -1
  300. data/man/man8/puppet-agent.8 +2 -2
  301. data/man/man8/puppet-apply.8 +2 -2
  302. data/man/man8/puppet-ca.8 +2 -2
  303. data/man/man8/puppet-catalog.8 +2 -2
  304. data/man/man8/puppet-cert.8 +2 -2
  305. data/man/man8/puppet-certificate.8 +2 -2
  306. data/man/man8/puppet-certificate_request.8 +2 -2
  307. data/man/man8/puppet-certificate_revocation_list.8 +2 -2
  308. data/man/man8/puppet-config.8 +3 -3
  309. data/man/man8/puppet-describe.8 +1 -1
  310. data/man/man8/puppet-device.8 +1 -1
  311. data/man/man8/puppet-doc.8 +1 -1
  312. data/man/man8/puppet-epp.8 +2 -2
  313. data/man/man8/puppet-facts.8 +2 -2
  314. data/man/man8/puppet-file.8 +2 -2
  315. data/man/man8/puppet-filebucket.8 +2 -2
  316. data/man/man8/puppet-help.8 +2 -2
  317. data/man/man8/puppet-inspect.8 +2 -2
  318. data/man/man8/puppet-key.8 +2 -2
  319. data/man/man8/puppet-man.8 +2 -2
  320. data/man/man8/puppet-master.8 +2 -2
  321. data/man/man8/puppet-module.8 +9 -9
  322. data/man/man8/puppet-node.8 +2 -2
  323. data/man/man8/puppet-parser.8 +2 -2
  324. data/man/man8/puppet-plugin.8 +2 -2
  325. data/man/man8/puppet-report.8 +2 -2
  326. data/man/man8/puppet-resource.8 +2 -2
  327. data/man/man8/puppet-resource_type.8 +2 -2
  328. data/man/man8/puppet-status.8 +3 -3
  329. data/man/man8/puppet.8 +1 -1
  330. data/spec/fixtures/module.tar.gz +0 -0
  331. data/spec/fixtures/unit/application/environments/production/data/common.yaml +4 -0
  332. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
  333. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
  334. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
  335. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
  336. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
  337. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
  338. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
  339. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
  340. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
  341. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
  342. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
  343. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
  344. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
  345. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
  346. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
  347. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
  348. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
  349. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
  350. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
  351. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
  352. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
  353. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
  354. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
  355. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
  356. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
  357. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
  358. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
  359. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
  360. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
  361. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
  362. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
  363. data/spec/fixtures/unit/module/trailing-comma.json +1 -1
  364. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
  365. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
  366. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
  367. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
  368. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
  369. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
  370. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
  371. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
  372. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
  373. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
  374. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
  375. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
  376. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
  377. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
  378. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
  379. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
  380. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
  381. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
  382. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
  383. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
  384. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
  385. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
  386. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
  387. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
  388. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
  389. data/spec/integration/defaults_spec.rb +14 -2
  390. data/spec/integration/file_system/uniquefile_spec.rb +29 -0
  391. data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
  392. data/spec/integration/node/environment_spec.rb +13 -0
  393. data/spec/integration/parser/collection_spec.rb +8 -0
  394. data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
  395. data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
  396. data/spec/integration/parser/undef_param_spec.rb +8 -0
  397. data/spec/integration/provider/yumrepo_spec.rb +1 -1
  398. data/spec/integration/test/test_helper_spec.rb +28 -0
  399. data/spec/integration/transaction/report_spec.rb +16 -0
  400. data/spec/integration/transaction_spec.rb +11 -0
  401. data/spec/integration/type/file_spec.rb +194 -4
  402. data/spec/integration/type/package_spec.rb +5 -1
  403. data/spec/integration/type/tidy_spec.rb +21 -9
  404. data/spec/integration/util/execution_spec.rb +22 -0
  405. data/spec/integration/util/windows/principal_spec.rb +201 -0
  406. data/spec/integration/util/windows/process_spec.rb +31 -0
  407. data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
  408. data/spec/integration/util/windows/security_spec.rb +8 -8
  409. data/spec/integration/util/windows/user_spec.rb +1 -1
  410. data/spec/integration/util_spec.rb +49 -27
  411. data/spec/lib/puppet_spec/compiler.rb +17 -0
  412. data/spec/lib/puppet_spec/files.rb +2 -2
  413. data/spec/lib/puppet_spec/pops.rb +13 -0
  414. data/spec/shared_behaviours/iterative_functions.rb +1 -1
  415. data/spec/shared_contexts/types_setup.rb +96 -0
  416. data/spec/unit/agent_spec.rb +1 -0
  417. data/spec/unit/application/agent_spec.rb +10 -0
  418. data/spec/unit/application/apply_spec.rb +9 -0
  419. data/spec/unit/application/lookup_spec.rb +138 -28
  420. data/spec/unit/configurer/downloader_spec.rb +5 -5
  421. data/spec/unit/configurer_spec.rb +271 -39
  422. data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
  423. data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
  424. data/spec/unit/defaults_spec.rb +15 -0
  425. data/spec/unit/environments_spec.rb +24 -4
  426. data/spec/unit/face/epp_face_spec.rb +2 -2
  427. data/spec/unit/face/parser_spec.rb +43 -2
  428. data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
  429. data/spec/unit/file_serving/metadata_spec.rb +50 -0
  430. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
  431. data/spec/unit/file_system_spec.rb +26 -0
  432. data/spec/unit/functions/assert_type_spec.rb +36 -2
  433. data/spec/unit/functions/defined_spec.rb +2 -2
  434. data/spec/unit/functions/epp_spec.rb +17 -9
  435. data/spec/unit/functions/inline_epp_spec.rb +4 -4
  436. data/spec/unit/functions/lookup_spec.rb +88 -16
  437. data/spec/unit/functions/regsubst_spec.rb +1 -1
  438. data/spec/unit/functions/reverse_each_spec.rb +108 -0
  439. data/spec/unit/functions/step_spec.rb +113 -0
  440. data/spec/unit/functions/type_spec.rb +35 -0
  441. data/spec/unit/functions4_spec.rb +62 -6
  442. data/spec/unit/hiera/scope_spec.rb +5 -2
  443. data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
  444. data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
  445. data/spec/unit/indirector/indirection_spec.rb +1 -1
  446. data/spec/unit/indirector/json_spec.rb +1 -1
  447. data/spec/unit/info_service_spec.rb +94 -32
  448. data/spec/unit/module_spec.rb +14 -0
  449. data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
  450. data/spec/unit/network/authstore_spec.rb +1 -1
  451. data/spec/unit/network/http/connection_spec.rb +1 -0
  452. data/spec/unit/network/http/pool_spec.rb +30 -0
  453. data/spec/unit/node_spec.rb +8 -0
  454. data/spec/unit/parser/compiler_spec.rb +16 -18
  455. data/spec/unit/parser/scope_spec.rb +28 -11
  456. data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
  457. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
  458. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
  459. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
  460. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
  461. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
  462. data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
  463. data/spec/unit/pops/loaders/loaders_spec.rb +127 -2
  464. data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
  465. data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
  466. data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
  467. data/spec/unit/pops/parser/parser_spec.rb +10 -0
  468. data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
  469. data/spec/unit/pops/types/iterable_spec.rb +262 -0
  470. data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
  471. data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
  472. data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
  473. data/spec/unit/pops/types/type_calculator_spec.rb +275 -390
  474. data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
  475. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
  476. data/spec/unit/pops/types/type_parser_spec.rb +58 -13
  477. data/spec/unit/pops/types/types_spec.rb +241 -0
  478. data/spec/unit/pops/validator/validator_spec.rb +159 -15
  479. data/spec/unit/provider/cron/parsed_spec.rb +1 -0
  480. data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
  481. data/spec/unit/provider/macauthorization_spec.rb +5 -2
  482. data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
  483. data/spec/unit/provider/package/appdmg_spec.rb +3 -3
  484. data/spec/unit/provider/package/dnf_spec.rb +16 -0
  485. data/spec/unit/provider/package/pip3_spec.rb +60 -42
  486. data/spec/unit/provider/package/pip_spec.rb +88 -47
  487. data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
  488. data/spec/unit/provider/package/pkgng_spec.rb +4 -2
  489. data/spec/unit/provider/package/rpm_spec.rb +2 -25
  490. data/spec/unit/provider/package/yum_spec.rb +12 -1
  491. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  492. data/spec/unit/provider/service/debian_spec.rb +6 -24
  493. data/spec/unit/provider/service/init_spec.rb +11 -1
  494. data/spec/unit/provider/service/launchd_spec.rb +18 -25
  495. data/spec/unit/provider/service/systemd_spec.rb +25 -12
  496. data/spec/unit/provider/service/upstart_spec.rb +57 -0
  497. data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
  498. data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
  499. data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
  500. data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
  501. data/spec/unit/resource/capability_finder_spec.rb +28 -15
  502. data/spec/unit/resource/catalog_spec.rb +33 -1
  503. data/spec/unit/resource/type_spec.rb +149 -7
  504. data/spec/unit/resource_spec.rb +99 -50
  505. data/spec/unit/settings/environment_conf_spec.rb +18 -1
  506. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  507. data/spec/unit/transaction/report_spec.rb +27 -0
  508. data/spec/unit/transaction/resource_harness_spec.rb +0 -47
  509. data/spec/unit/transaction_spec.rb +5 -0
  510. data/spec/unit/type/file/checksum_spec.rb +6 -0
  511. data/spec/unit/type/file/checksum_value_spec.rb +286 -0
  512. data/spec/unit/type/file/content_spec.rb +12 -193
  513. data/spec/unit/type/file/source_spec.rb +211 -119
  514. data/spec/unit/type/file_spec.rb +133 -34
  515. data/spec/unit/type/interface_spec.rb +32 -0
  516. data/spec/unit/type/macauthorization_spec.rb +4 -1
  517. data/spec/unit/type/yumrepo_spec.rb +2 -2
  518. data/spec/unit/util/filetype_spec.rb +1 -1
  519. data/spec/unit/util/http_proxy_spec.rb +2 -2
  520. data/spec/unit/util/log/destinations_spec.rb +0 -2
  521. data/spec/unit/util/logging_spec.rb +69 -0
  522. data/spec/unit/util/multi_match_spec.rb +39 -0
  523. data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
  524. data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
  525. data/spec/unit/util/plist_spec.rb +110 -0
  526. data/spec/unit/util/resource_template_spec.rb +2 -2
  527. data/spec/unit/util/run_mode_spec.rb +27 -3
  528. data/spec/unit/util/windows/adsi_spec.rb +46 -38
  529. data/spec/unit/util/windows/api_types_spec.rb +42 -0
  530. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
  531. data/spec/unit/util/windows/sid_spec.rb +48 -11
  532. data/spec/unit/util_spec.rb +123 -13
  533. data/tasks/cfpropertylist.rake +15 -0
  534. metadata +3342 -3195
  535. data/lib/puppet/vendor/load_plist.rb +0 -1
  536. data/lib/puppet/vendor/plist/CHANGELOG +0 -82
  537. data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
  538. data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
  539. data/lib/puppet/vendor/plist/README +0 -36
  540. data/lib/puppet/vendor/plist/Rakefile +0 -144
  541. data/lib/puppet/vendor/plist/docs/USAGE +0 -104
  542. data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
  543. data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
  544. data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
  545. data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
  546. data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
  547. data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
  548. data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
  549. data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
  550. data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
  551. data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
  552. data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
  553. data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
  554. data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
  555. data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
  556. data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
  557. data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
  558. data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
  559. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
  560. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
@@ -41,7 +41,7 @@
41
41
  # must be running with elevated privileges.
42
42
  # * A file/dir can be deleted by anyone with the DELETE access right
43
43
  # OR by anyone that has the FILE_DELETE_CHILD access right for the
44
- # parent. See http://support.microsoft.com/kb/238018. But on Unix,
44
+ # parent. See https://support.microsoft.com/kb/238018. But on Unix,
45
45
  # the user must have write access to the file/dir AND execute access
46
46
  # to all of the parent path components.
47
47
  # * Many access control entries are inherited from parent directories,
@@ -65,8 +65,6 @@ require 'puppet/util/windows'
65
65
  require 'pathname'
66
66
  require 'ffi'
67
67
 
68
- require 'win32/security'
69
-
70
68
  module Puppet::Util::Windows::Security
71
69
  include Puppet::Util::Windows::String
72
70
 
@@ -199,9 +197,9 @@ module Puppet::Util::Windows::Security
199
197
  def get_mode(path)
200
198
  return unless supports_acl?(path)
201
199
 
202
- well_known_world_sid = Win32::Security::SID::Everyone
203
- well_known_nobody_sid = Win32::Security::SID::Nobody
204
- well_known_system_sid = Win32::Security::SID::LocalSystem
200
+ well_known_world_sid = Puppet::Util::Windows::SID::Everyone
201
+ well_known_nobody_sid = Puppet::Util::Windows::SID::Nobody
202
+ well_known_system_sid = Puppet::Util::Windows::SID::LocalSystem
205
203
 
206
204
  mode = S_ISYSTEM_MISSING
207
205
 
@@ -278,9 +276,9 @@ module Puppet::Util::Windows::Security
278
276
  # that they do not have read and write access to.
279
277
  def set_mode(mode, path, protected = true)
280
278
  sd = get_security_descriptor(path)
281
- well_known_world_sid = Win32::Security::SID::Everyone
282
- well_known_nobody_sid = Win32::Security::SID::Nobody
283
- well_known_system_sid = Win32::Security::SID::LocalSystem
279
+ well_known_world_sid = Puppet::Util::Windows::SID::Everyone
280
+ well_known_nobody_sid = Puppet::Util::Windows::SID::Nobody
281
+ well_known_system_sid = Puppet::Util::Windows::SID::LocalSystem
284
282
 
285
283
  owner_allow = FILE::STANDARD_RIGHTS_ALL |
286
284
  FILE::FILE_READ_ATTRIBUTES |
@@ -361,12 +359,12 @@ module Puppet::Util::Windows::Security
361
359
  inherit_only = Puppet::Util::Windows::AccessControlEntry::INHERIT_ONLY_ACE
362
360
  if isdir
363
361
  inherit = inherit_only | Puppet::Util::Windows::AccessControlEntry::CONTAINER_INHERIT_ACE
364
- dacl.allow(Win32::Security::SID::CreatorOwner, owner_allow, inherit)
365
- dacl.allow(Win32::Security::SID::CreatorGroup, group_allow, inherit)
362
+ dacl.allow(Puppet::Util::Windows::SID::CreatorOwner, owner_allow, inherit)
363
+ dacl.allow(Puppet::Util::Windows::SID::CreatorGroup, group_allow, inherit)
366
364
 
367
365
  inherit = inherit_only | Puppet::Util::Windows::AccessControlEntry::OBJECT_INHERIT_ACE
368
- dacl.allow(Win32::Security::SID::CreatorOwner, owner_allow & ~FILE::FILE_EXECUTE, inherit)
369
- dacl.allow(Win32::Security::SID::CreatorGroup, group_allow & ~FILE::FILE_EXECUTE, inherit)
366
+ dacl.allow(Puppet::Util::Windows::SID::CreatorOwner, owner_allow & ~FILE::FILE_EXECUTE, inherit)
367
+ dacl.allow(Puppet::Util::Windows::SID::CreatorGroup, group_allow & ~FILE::FILE_EXECUTE, inherit)
370
368
  end
371
369
 
372
370
  new_sd = Puppet::Util::Windows::SecurityDescriptor.new(sd.owner, sd.group, dacl, protected)
@@ -579,7 +577,7 @@ module Puppet::Util::Windows::Security
579
577
  end
580
578
 
581
579
  def get_max_generic_acl_size(ace_count)
582
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa378853(v=vs.85).aspx
580
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa378853(v=vs.85).aspx
583
581
  # To calculate the initial size of an ACL, add the following together, and then align the result to the nearest DWORD:
584
582
  # * Size of the ACL structure.
585
583
  # * Size of each ACE structure that the ACL is to contain minus the SidStart member (DWORD) of the ACE.
@@ -643,7 +641,7 @@ module Puppet::Util::Windows::Security
643
641
 
644
642
  ffi_convention :stdcall
645
643
 
646
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
644
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
647
645
  # HANDLE WINAPI CreateFile(
648
646
  # _In_ LPCTSTR lpFileName,
649
647
  # _In_ DWORD dwDesiredAccess,
@@ -657,7 +655,7 @@ module Puppet::Util::Windows::Security
657
655
  attach_function_private :CreateFileW,
658
656
  [:lpcwstr, :dword, :dword, :pointer, :dword, :dword, :handle], :handle
659
657
 
660
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v=vs.85).aspx
658
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v=vs.85).aspx
661
659
  # BOOL WINAPI GetVolumeInformation(
662
660
  # _In_opt_ LPCTSTR lpRootPathName,
663
661
  # _Out_opt_ LPTSTR lpVolumeNameBuffer,
@@ -672,7 +670,7 @@ module Puppet::Util::Windows::Security
672
670
  attach_function_private :GetVolumeInformationW,
673
671
  [:lpcwstr, :lpwstr, :dword, :lpdword, :lpdword, :lpdword, :lpwstr, :dword], :win32_bool
674
672
 
675
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa374951(v=vs.85).aspx
673
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374951(v=vs.85).aspx
676
674
  # BOOL WINAPI AddAccessAllowedAceEx(
677
675
  # _Inout_ PACL pAcl,
678
676
  # _In_ DWORD dwAceRevision,
@@ -684,7 +682,7 @@ module Puppet::Util::Windows::Security
684
682
  attach_function_private :AddAccessAllowedAceEx,
685
683
  [:pointer, :dword, :dword, :dword, :pointer], :win32_bool
686
684
 
687
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa374964(v=vs.85).aspx
685
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374964(v=vs.85).aspx
688
686
  # BOOL WINAPI AddAccessDeniedAceEx(
689
687
  # _Inout_ PACL pAcl,
690
688
  # _In_ DWORD dwAceRevision,
@@ -696,7 +694,7 @@ module Puppet::Util::Windows::Security
696
694
  attach_function_private :AddAccessDeniedAceEx,
697
695
  [:pointer, :dword, :dword, :dword, :pointer], :win32_bool
698
696
 
699
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa374931(v=vs.85).aspx
697
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374931(v=vs.85).aspx
700
698
  # typedef struct _ACL {
701
699
  # BYTE AclRevision;
702
700
  # BYTE Sbz1;
@@ -712,9 +710,9 @@ module Puppet::Util::Windows::Security
712
710
  :Sbz2, :word
713
711
  end
714
712
 
715
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa374912(v=vs.85).aspx
713
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374912(v=vs.85).aspx
716
714
  # ACE types
717
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa374919(v=vs.85).aspx
715
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374919(v=vs.85).aspx
718
716
  # typedef struct _ACE_HEADER {
719
717
  # BYTE AceType;
720
718
  # BYTE AceFlags;
@@ -726,17 +724,17 @@ module Puppet::Util::Windows::Security
726
724
  :AceSize, :word
727
725
  end
728
726
 
729
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa374892(v=vs.85).aspx
727
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374892(v=vs.85).aspx
730
728
  # ACCESS_MASK
731
729
 
732
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa374847(v=vs.85).aspx
730
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374847(v=vs.85).aspx
733
731
  # typedef struct _ACCESS_ALLOWED_ACE {
734
732
  # ACE_HEADER Header;
735
733
  # ACCESS_MASK Mask;
736
734
  # DWORD SidStart;
737
735
  # } ACCESS_ALLOWED_ACE, *PACCESS_ALLOWED_ACE;
738
736
  #
739
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa374879(v=vs.85).aspx
737
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa374879(v=vs.85).aspx
740
738
  # typedef struct _ACCESS_DENIED_ACE {
741
739
  # ACE_HEADER Header;
742
740
  # ACCESS_MASK Mask;
@@ -751,12 +749,12 @@ module Puppet::Util::Windows::Security
751
749
  :SidStart, :dword
752
750
  end
753
751
 
754
- # http://stackoverflow.com/a/1792930
752
+ # https://stackoverflow.com/a/1792930
755
753
  MAXIMUM_SID_BYTES_LENGTH = 68
756
754
  MAXIMUM_GENERIC_ACE_SIZE = GENERIC_ACCESS_ACE.offset_of(:SidStart) +
757
755
  MAXIMUM_SID_BYTES_LENGTH
758
756
 
759
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa446634(v=vs.85).aspx
757
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa446634(v=vs.85).aspx
760
758
  # BOOL WINAPI GetAce(
761
759
  # _In_ PACL pAcl,
762
760
  # _In_ DWORD dwAceIndex,
@@ -766,7 +764,7 @@ module Puppet::Util::Windows::Security
766
764
  attach_function_private :GetAce,
767
765
  [:pointer, :dword, :pointer], :win32_bool
768
766
 
769
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa375202(v=vs.85).aspx
767
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa375202(v=vs.85).aspx
770
768
  # BOOL WINAPI AdjustTokenPrivileges(
771
769
  # _In_ HANDLE TokenHandle,
772
770
  # _In_ BOOL DisableAllPrivileges,
@@ -779,9 +777,9 @@ module Puppet::Util::Windows::Security
779
777
  attach_function_private :AdjustTokenPrivileges,
780
778
  [:handle, :win32_bool, :pointer, :dword, :pointer, :pdword], :win32_bool
781
779
 
782
- # http://msdn.microsoft.com/en-us/library/windows/hardware/ff556610(v=vs.85).aspx
783
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa379561(v=vs.85).aspx
784
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa446647(v=vs.85).aspx
780
+ # https://msdn.microsoft.com/en-us/library/windows/hardware/ff556610(v=vs.85).aspx
781
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379561(v=vs.85).aspx
782
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa446647(v=vs.85).aspx
785
783
  # typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
786
784
  # BOOL WINAPI GetSecurityDescriptorControl(
787
785
  # _In_ PSECURITY_DESCRIPTOR pSecurityDescriptor,
@@ -792,7 +790,7 @@ module Puppet::Util::Windows::Security
792
790
  attach_function_private :GetSecurityDescriptorControl,
793
791
  [:pointer, :lpword, :lpdword], :win32_bool
794
792
 
795
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa378853(v=vs.85).aspx
793
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa378853(v=vs.85).aspx
796
794
  # BOOL WINAPI InitializeAcl(
797
795
  # _Out_ PACL pAcl,
798
796
  # _In_ DWORD nAclLength,
@@ -802,7 +800,7 @@ module Puppet::Util::Windows::Security
802
800
  attach_function_private :InitializeAcl,
803
801
  [:pointer, :dword, :dword], :win32_bool
804
802
 
805
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa379142(v=vs.85).aspx
803
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379142(v=vs.85).aspx
806
804
  # BOOL WINAPI IsValidAcl(
807
805
  # _In_ PACL pAcl
808
806
  # );
@@ -810,7 +808,7 @@ module Puppet::Util::Windows::Security
810
808
  attach_function_private :IsValidAcl,
811
809
  [:pointer], :win32_bool
812
810
 
813
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa379593(v=vs.85).aspx
811
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379593(v=vs.85).aspx
814
812
  SE_OBJECT_TYPE = enum(
815
813
  :SE_UNKNOWN_OBJECT_TYPE, 0,
816
814
  :SE_FILE_OBJECT,
@@ -827,7 +825,7 @@ module Puppet::Util::Windows::Security
827
825
  :SE_REGISTRY_WOW64_32KEY
828
826
  )
829
827
 
830
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa446654(v=vs.85).aspx
828
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa446654(v=vs.85).aspx
831
829
  # DWORD WINAPI GetSecurityInfo(
832
830
  # _In_ HANDLE handle,
833
831
  # _In_ SE_OBJECT_TYPE ObjectType,
@@ -842,7 +840,7 @@ module Puppet::Util::Windows::Security
842
840
  attach_function_private :GetSecurityInfo,
843
841
  [:handle, SE_OBJECT_TYPE, :dword, :pointer, :pointer, :pointer, :pointer, :pointer], :dword
844
842
 
845
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa379588(v=vs.85).aspx
843
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379588(v=vs.85).aspx
846
844
  # DWORD WINAPI SetSecurityInfo(
847
845
  # _In_ HANDLE handle,
848
846
  # _In_ SE_OBJECT_TYPE ObjectType,
@@ -5,7 +5,7 @@
5
5
  # flags, DACL, and SACL. The SACL is not currently supported, though it has the
6
6
  # same layout as a DACL.
7
7
  #
8
- # @see http://msdn.microsoft.com/en-us/library/windows/desktop/aa379563(v=vs.85).aspx
8
+ # @see https://msdn.microsoft.com/en-us/library/windows/desktop/aa379563(v=vs.85).aspx
9
9
  # @api private
10
10
  class Puppet::Util::Windows::SecurityDescriptor
11
11
  require 'puppet/util/windows/security'
@@ -9,6 +9,44 @@ module Puppet::Util::Windows
9
9
  ERROR_NONE_MAPPED = 1332
10
10
  ERROR_INVALID_SID_STRUCTURE = 1337
11
11
 
12
+ # Well Known SIDs
13
+ Null = 'S-1-0'
14
+ Nobody = 'S-1-0-0'
15
+ World = 'S-1-1'
16
+ Everyone = 'S-1-1-0'
17
+ Local = 'S-1-2'
18
+ Creator = 'S-1-3'
19
+ CreatorOwner = 'S-1-3-0'
20
+ CreatorGroup = 'S-1-3-1'
21
+ CreatorOwnerServer = 'S-1-3-2'
22
+ CreatorGroupServer = 'S-1-3-3'
23
+ NonUnique = 'S-1-4'
24
+ Nt = 'S-1-5'
25
+ Dialup = 'S-1-5-1'
26
+ Network = 'S-1-5-2'
27
+ Batch = 'S-1-5-3'
28
+ Interactive = 'S-1-5-4'
29
+ Service = 'S-1-5-6'
30
+ Anonymous = 'S-1-5-7'
31
+ Proxy = 'S-1-5-8'
32
+ EnterpriseDomainControllers = 'S-1-5-9'
33
+ PrincipalSelf = 'S-1-5-10'
34
+ AuthenticatedUsers = 'S-1-5-11'
35
+ RestrictedCode = 'S-1-5-12'
36
+ TerminalServerUsers = 'S-1-5-13'
37
+ LocalSystem = 'S-1-5-18'
38
+ NtLocal = 'S-1-5-19'
39
+ NtNetwork = 'S-1-5-20'
40
+ BuiltinAdministrators = 'S-1-5-32-544'
41
+ BuiltinUsers = 'S-1-5-32-545'
42
+ Guests = 'S-1-5-32-546'
43
+ PowerUsers = 'S-1-5-32-547'
44
+ AccountOperators = 'S-1-5-32-548'
45
+ ServerOperators = 'S-1-5-32-549'
46
+ PrintOperators = 'S-1-5-32-550'
47
+ BackupOperators = 'S-1-5-32-551'
48
+ Replicators = 'S-1-5-32-552'
49
+
12
50
  # Convert an account name, e.g. 'Administrators' into a SID string,
13
51
  # e.g. 'S-1-5-32-544'. The name can be specified as 'Administrators',
14
52
  # 'BUILTIN\Administrators', or 'S-1-5-32-544', and will return the
@@ -16,7 +54,7 @@ module Puppet::Util::Windows
16
54
  def name_to_sid(name)
17
55
  sid = name_to_sid_object(name)
18
56
 
19
- sid ? sid.to_s : nil
57
+ sid ? sid.sid : nil
20
58
  end
21
59
  module_function :name_to_sid
22
60
 
@@ -24,14 +62,22 @@ module Puppet::Util::Windows
24
62
  # e.g. 'S-1-5-32-544'. The name can be specified as 'Administrators',
25
63
  # 'BUILTIN\Administrators', or 'S-1-5-32-544', and will return the
26
64
  # SID object. Returns nil if the account doesn't exist.
65
+ # This method returns a SID::Principal with the account, domain, SID, etc
27
66
  def name_to_sid_object(name)
28
67
  # Apparently, we accept a symbol..
29
68
  name = name.to_s.strip if name
30
69
 
31
- # if it's in SID string form, convert to user
32
- parsed_sid = Win32::Security::SID.string_to_sid(name) rescue nil
70
+ # if name is a SID string, convert it to raw bytes for use with lookup_account_sid
71
+ raw_sid_bytes = nil
72
+ begin
73
+ string_to_sid_ptr(name) do |sid_ptr|
74
+ valid = ! sid_ptr.nil? && ! sid_ptr.null?
75
+ raw_sid_bytes = sid_ptr.read_array_of_uchar(get_length_sid(sid_ptr))
76
+ end
77
+ rescue
78
+ end
33
79
 
34
- parsed_sid ? Win32::Security::SID.new(parsed_sid) : Win32::Security::SID.new(name)
80
+ raw_sid_bytes ? Principal.lookup_account_sid(raw_sid_bytes) : Principal.lookup_account_name(name)
35
81
  rescue
36
82
  nil
37
83
  end
@@ -41,12 +87,13 @@ module Puppet::Util::Windows
41
87
  # e.g. [1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0] is the representation for
42
88
  # S-1-5-18, the local 'SYSTEM' account.
43
89
  # Raises an Error for nil or non-array input.
90
+ # This method returns a SID::Principal with the account, domain, SID, etc
44
91
  def octet_string_to_sid_object(bytes)
45
92
  if !bytes || !bytes.respond_to?('pack') || bytes.empty?
46
93
  raise Puppet::Util::Windows::Error.new("Octet string must be an array of bytes")
47
94
  end
48
95
 
49
- Win32::Security::SID.new(bytes.pack('C*'))
96
+ Principal.lookup_account_sid(bytes)
50
97
  end
51
98
  module_function :octet_string_to_sid_object
52
99
 
@@ -54,24 +101,29 @@ module Puppet::Util::Windows
54
101
  # e.g. 'BUILTIN\Administrators'. Returns nil if an account
55
102
  # for that SID does not exist.
56
103
  def sid_to_name(value)
57
- sid = Win32::Security::SID.new(Win32::Security::SID.string_to_sid(value))
58
104
 
59
- if sid.domain and sid.domain.length > 0
60
- "#{sid.domain}\\#{sid.account}"
61
- else
62
- sid.account
105
+ sid_bytes = []
106
+ begin
107
+ string_to_sid_ptr(value) do |ptr|
108
+ valid = ! ptr.nil? && ! ptr.null?
109
+ sid_bytes = ptr.read_array_of_uchar(get_length_sid(ptr))
110
+ end
111
+ rescue Puppet::Util::Windows::Error => e
112
+ raise if e.code != ERROR_INVALID_SID_STRUCTURE
63
113
  end
114
+
115
+ Principal.lookup_account_sid(sid_bytes).domain_account
64
116
  rescue
65
117
  nil
66
118
  end
67
119
  module_function :sid_to_name
68
120
 
69
- # http://stackoverflow.com/a/1792930 - 68 bytes, 184 characters in a string
121
+ # https://stackoverflow.com/a/1792930 - 68 bytes, 184 characters in a string
70
122
  MAXIMUM_SID_STRING_LENGTH = 184
71
123
 
72
124
  # Convert a SID pointer to a SID string, e.g. "S-1-5-32-544".
73
125
  def sid_ptr_to_string(psid)
74
- if ! psid.instance_of?(FFI::Pointer) || IsValidSid(psid) == FFI::WIN32_FALSE
126
+ if ! psid.kind_of?(FFI::Pointer) || IsValidSid(psid) == FFI::WIN32_FALSE
75
127
  raise Puppet::Util::Windows::Error.new("Invalid SID")
76
128
  end
77
129
 
@@ -131,9 +183,19 @@ module Puppet::Util::Windows
131
183
  end
132
184
  module_function :valid_sid?
133
185
 
186
+ def get_length_sid(sid_ptr)
187
+ # MSDN states IsValidSid should be called on pointer first
188
+ if ! sid_ptr.kind_of?(FFI::Pointer) || IsValidSid(sid_ptr) == FFI::WIN32_FALSE
189
+ raise Puppet::Util::Windows::Error.new("Invalid SID")
190
+ end
191
+
192
+ GetLengthSid(sid_ptr)
193
+ end
194
+ module_function :get_length_sid
195
+
134
196
  ffi_convention :stdcall
135
197
 
136
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa379151(v=vs.85).aspx
198
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379151(v=vs.85).aspx
137
199
  # BOOL WINAPI IsValidSid(
138
200
  # _In_ PSID pSid
139
201
  # );
@@ -141,7 +203,7 @@ module Puppet::Util::Windows
141
203
  attach_function_private :IsValidSid,
142
204
  [:pointer], :win32_bool
143
205
 
144
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa376399(v=vs.85).aspx
206
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa376399(v=vs.85).aspx
145
207
  # BOOL ConvertSidToStringSid(
146
208
  # _In_ PSID Sid,
147
209
  # _Out_ LPTSTR *StringSid
@@ -150,7 +212,7 @@ module Puppet::Util::Windows
150
212
  attach_function_private :ConvertSidToStringSidW,
151
213
  [:pointer, :pointer], :win32_bool
152
214
 
153
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa376402(v=vs.85).aspx
215
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa376402(v=vs.85).aspx
154
216
  # BOOL WINAPI ConvertStringSidToSid(
155
217
  # _In_ LPCTSTR StringSid,
156
218
  # _Out_ PSID *Sid
@@ -158,5 +220,12 @@ module Puppet::Util::Windows
158
220
  ffi_lib :advapi32
159
221
  attach_function_private :ConvertStringSidToSidW,
160
222
  [:lpcwstr, :pointer], :win32_bool
223
+
224
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa446642(v=vs.85).aspx
225
+ # DWORD WINAPI GetLengthSid(
226
+ # _In_ PSID pSid
227
+ # );
228
+ ffi_lib :advapi32
229
+ attach_function_private :GetLengthSid, [:pointer], :dword
161
230
  end
162
231
  end
@@ -84,7 +84,7 @@ module Win32
84
84
  SCHED_S_TASK_HAS_NOT_RUN = 0x00041303
85
85
  SCHED_S_TASK_NOT_SCHEDULED = 0x00041305
86
86
  # HRESULT error codes
87
- # http://blogs.msdn.com/b/eldar/archive/2007/04/03/a-lot-of-hresult-codes.aspx
87
+ # https://blogs.msdn.com/b/eldar/archive/2007/04/03/a-lot-of-hresult-codes.aspx
88
88
  # in Ruby, an 0x8XXXXXXX style HRESULT can be resolved to 2s complement
89
89
  # by using "0x8XXXXXXX".to_i(16) - - 0x100000000
90
90
  SCHED_E_ACCOUNT_INFORMATION_NOT_SET = -2147216625 # 0x8004130F
@@ -1002,7 +1002,7 @@ module Win32
1002
1002
 
1003
1003
  public
1004
1004
 
1005
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa381811(v=vs.85).aspx
1005
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa381811(v=vs.85).aspx
1006
1006
  ITaskScheduler = com::Interface[com::IUnknown,
1007
1007
  FFI::WIN32::GUID['148BD527-A2AB-11CE-B11F-00AA00530503'],
1008
1008
 
@@ -1025,7 +1025,7 @@ module Win32
1025
1025
  TaskScheduler = com::Factory[ITaskScheduler,
1026
1026
  FFI::WIN32::GUID['148BD52A-A2AB-11CE-B11F-00AA00530503']]
1027
1027
 
1028
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa380706(v=vs.85).aspx
1028
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa380706(v=vs.85).aspx
1029
1029
  IEnumWorkItems = com::Interface[com::IUnknown,
1030
1030
  FFI::WIN32::GUID['148BD528-A2AB-11CE-B11F-00AA00530503'],
1031
1031
 
@@ -1039,7 +1039,7 @@ module Win32
1039
1039
 
1040
1040
  EnumWorkItems = com::Instance[IEnumWorkItems]
1041
1041
 
1042
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa381216(v=vs.85).aspx
1042
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa381216(v=vs.85).aspx
1043
1043
  IScheduledWorkItem = com::Interface[com::IUnknown,
1044
1044
  FFI::WIN32::GUID['a6b952f0-a4b1-11d0-997d-00aa006887ec'],
1045
1045
 
@@ -1091,7 +1091,7 @@ module Win32
1091
1091
  GetAccountInformation: [[:pointer], :hresult]
1092
1092
  ]
1093
1093
 
1094
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa381311(v=vs.85).aspx
1094
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa381311(v=vs.85).aspx
1095
1095
  ITask = com::Interface[IScheduledWorkItem,
1096
1096
  FFI::WIN32::GUID['148BD524-A2AB-11CE-B11F-00AA00530503'],
1097
1097
 
@@ -1117,14 +1117,14 @@ module Win32
1117
1117
 
1118
1118
  Task = com::Instance[ITask]
1119
1119
 
1120
- # http://msdn.microsoft.com/en-us/library/windows/desktop/ms688695(v=vs.85).aspx
1120
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/ms688695(v=vs.85).aspx
1121
1121
  IPersist = com::Interface[com::IUnknown,
1122
1122
  FFI::WIN32::GUID['0000010c-0000-0000-c000-000000000046'],
1123
1123
  # CLSID *
1124
1124
  GetClassID: [[:pointer], :hresult]
1125
1125
  ]
1126
1126
 
1127
- # http://msdn.microsoft.com/en-us/library/windows/desktop/ms687223(v=vs.85).aspx
1127
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/ms687223(v=vs.85).aspx
1128
1128
  IPersistFile = com::Interface[IPersist,
1129
1129
  FFI::WIN32::GUID['0000010b-0000-0000-C000-000000000046'],
1130
1130
 
@@ -1138,7 +1138,7 @@ module Win32
1138
1138
 
1139
1139
  PersistFile = com::Instance[IPersistFile]
1140
1140
 
1141
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa381864(v=vs.85).aspx
1141
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa381864(v=vs.85).aspx
1142
1142
  ITaskTrigger = com::Interface[com::IUnknown,
1143
1143
  FFI::WIN32::GUID['148BD52B-A2AB-11CE-B11F-00AA00530503'],
1144
1144
 
@@ -1149,7 +1149,7 @@ module Win32
1149
1149
 
1150
1150
  TaskTrigger = com::Instance[ITaskTrigger]
1151
1151
 
1152
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa383620(v=vs.85).aspx
1152
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa383620(v=vs.85).aspx
1153
1153
  # The TASK_TRIGGER_TYPE field of the TASK_TRIGGER structure determines
1154
1154
  # which member of the TRIGGER_TYPE_UNION field to use.
1155
1155
  TASK_TRIGGER_TYPE = enum(
@@ -1163,31 +1163,31 @@ module Win32
1163
1163
  :TASK_EVENT_TRIGGER_AT_LOGON, 7 # Ignore the Type field
1164
1164
  )
1165
1165
 
1166
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa446857(v=vs.85).aspx
1166
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa446857(v=vs.85).aspx
1167
1167
  class DAILY < FFI::Struct
1168
1168
  layout :DaysInterval, :word
1169
1169
  end
1170
1170
 
1171
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa384014(v=vs.85).aspx
1171
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa384014(v=vs.85).aspx
1172
1172
  class WEEKLY < FFI::Struct
1173
1173
  layout :WeeksInterval, :word,
1174
1174
  :rgfDaysOfTheWeek, :word
1175
1175
  end
1176
1176
 
1177
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
1177
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
1178
1178
  class MONTHLYDATE < FFI::Struct
1179
1179
  layout :rgfDays, :dword,
1180
1180
  :rgfMonths, :word
1181
1181
  end
1182
1182
 
1183
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
1183
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
1184
1184
  class MONTHLYDOW < FFI::Struct
1185
1185
  layout :wWhichWeek, :word,
1186
1186
  :rgfDaysOfTheWeek, :word,
1187
1187
  :rgfMonths, :word
1188
1188
  end
1189
1189
 
1190
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa384002(v=vs.85).aspx
1190
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa384002(v=vs.85).aspx
1191
1191
  class TRIGGER_TYPE_UNION < FFI::Union
1192
1192
  layout :Daily, DAILY,
1193
1193
  :Weekly, WEEKLY,
@@ -1195,7 +1195,7 @@ module Win32
1195
1195
  :MonthlyDOW, MONTHLYDOW
1196
1196
  end
1197
1197
 
1198
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa383618(v=vs.85).aspx
1198
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa383618(v=vs.85).aspx
1199
1199
  class TASK_TRIGGER < FFI::Struct
1200
1200
  layout :cbTriggerSize, :word, # Structure size.
1201
1201
  :Reserved1, :word, # Reserved. Must be zero.
@@ -19,7 +19,7 @@ module Puppet::Util::Windows::User
19
19
  module_function :admin?
20
20
 
21
21
 
22
- # http://msdn.microsoft.com/en-us/library/windows/desktop/ee207397(v=vs.85).aspx
22
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/ee207397(v=vs.85).aspx
23
23
  SECURITY_MAX_SID_SIZE = 68
24
24
 
25
25
  def check_token_membership
@@ -43,7 +43,7 @@ module Puppet::Util::Windows::User
43
43
  end
44
44
 
45
45
  # Is administrators SID enabled in calling thread's access token?
46
- is_admin = ismember_pointer.read_win32_bool != FFI::WIN32_FALSE
46
+ is_admin = ismember_pointer.read_win32_bool
47
47
  end
48
48
  end
49
49
 
@@ -106,7 +106,7 @@ module Puppet::Util::Windows::User
106
106
 
107
107
  ffi_convention :stdcall
108
108
 
109
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v=vs.85).aspx
109
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v=vs.85).aspx
110
110
  # BOOL LogonUser(
111
111
  # _In_ LPTSTR lpszUsername,
112
112
  # _In_opt_ LPTSTR lpszDomain,
@@ -119,7 +119,7 @@ module Puppet::Util::Windows::User
119
119
  attach_function_private :LogonUserW,
120
120
  [:lpwstr, :lpwstr, :lpwstr, :dword, :dword, :phandle], :win32_bool
121
121
 
122
- # http://msdn.microsoft.com/en-us/library/windows/desktop/bb773378(v=vs.85).aspx
122
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/bb773378(v=vs.85).aspx
123
123
  # typedef struct _PROFILEINFO {
124
124
  # DWORD dwSize;
125
125
  # DWORD dwFlags;
@@ -143,7 +143,7 @@ module Puppet::Util::Windows::User
143
143
  :hProfile, :handle
144
144
  end
145
145
 
146
- # http://msdn.microsoft.com/en-us/library/windows/desktop/bb762281(v=vs.85).aspx
146
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/bb762281(v=vs.85).aspx
147
147
  # BOOL WINAPI LoadUserProfile(
148
148
  # _In_ HANDLE hToken,
149
149
  # _Inout_ LPPROFILEINFO lpProfileInfo
@@ -152,7 +152,7 @@ module Puppet::Util::Windows::User
152
152
  attach_function_private :LoadUserProfileW,
153
153
  [:handle, :pointer], :win32_bool
154
154
 
155
- # http://msdn.microsoft.com/en-us/library/windows/desktop/bb762282(v=vs.85).aspx
155
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/bb762282(v=vs.85).aspx
156
156
  # BOOL WINAPI UnloadUserProfile(
157
157
  # _In_ HANDLE hToken,
158
158
  # _In_ HANDLE hProfile
@@ -161,7 +161,7 @@ module Puppet::Util::Windows::User
161
161
  attach_function_private :UnloadUserProfile,
162
162
  [:handle, :handle], :win32_bool
163
163
 
164
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa376389(v=vs.85).aspx
164
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa376389(v=vs.85).aspx
165
165
  # BOOL WINAPI CheckTokenMembership(
166
166
  # _In_opt_ HANDLE TokenHandle,
167
167
  # _In_ PSID SidToCheck,
@@ -171,7 +171,7 @@ module Puppet::Util::Windows::User
171
171
  attach_function_private :CheckTokenMembership,
172
172
  [:handle, :pointer, :pbool], :win32_bool
173
173
 
174
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa379650(v=vs.85).aspx
174
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379650(v=vs.85).aspx
175
175
  WELL_KNOWN_SID_TYPE = enum(
176
176
  :WinNullSid , 0,
177
177
  :WinWorldSid , 1,
@@ -270,7 +270,7 @@ module Puppet::Util::Windows::User
270
270
  :WinCapabilityRemovableStorageSid , 94
271
271
  )
272
272
 
273
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa446585(v=vs.85).aspx
273
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa446585(v=vs.85).aspx
274
274
  # BOOL WINAPI CreateWellKnownSid(
275
275
  # _In_ WELL_KNOWN_SID_TYPE WellKnownSidType,
276
276
  # _In_opt_ PSID DomainSid,
@@ -281,7 +281,7 @@ module Puppet::Util::Windows::User
281
281
  attach_function_private :CreateWellKnownSid,
282
282
  [WELL_KNOWN_SID_TYPE, :pointer, :pointer, :lpdword], :win32_bool
283
283
 
284
- # http://msdn.microsoft.com/en-us/library/windows/desktop/aa379151(v=vs.85).aspx
284
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379151(v=vs.85).aspx
285
285
  # BOOL WINAPI IsValidSid(
286
286
  # _In_ PSID pSid
287
287
  # );
@@ -6,6 +6,9 @@ module Puppet::Util::Windows
6
6
  end
7
7
  module Registry
8
8
  end
9
+ module SID
10
+ class Principal; end
11
+ end
9
12
 
10
13
  if Puppet::Util::Platform.windows?
11
14
  # these reference platform specific gems
@@ -14,6 +17,7 @@ module Puppet::Util::Windows
14
17
  require 'puppet/util/windows/error'
15
18
  require 'puppet/util/windows/com'
16
19
  require 'puppet/util/windows/sid'
20
+ require 'puppet/util/windows/principal'
17
21
  require 'puppet/util/windows/file'
18
22
  require 'puppet/util/windows/security'
19
23
  require 'puppet/util/windows/user'