puppet 6.29.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (811) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/CONTRIBUTING.md +5 -5
  4. data/Gemfile +5 -7
  5. data/Gemfile.lock +52 -143
  6. data/README.md +5 -5
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/README.environment +8 -0
  9. data/ext/build_defaults.yaml +1 -1
  10. data/ext/dbfix.sql +132 -0
  11. data/ext/debian/README.Debian +8 -0
  12. data/ext/debian/README.source +2 -0
  13. data/ext/debian/TODO.Debian +1 -0
  14. data/ext/debian/changelog.erb +1122 -0
  15. data/ext/debian/compat +1 -0
  16. data/ext/debian/control +144 -0
  17. data/ext/debian/copyright +339 -0
  18. data/ext/debian/docs +1 -0
  19. data/ext/debian/fileserver.conf +41 -0
  20. data/ext/debian/puppet-common.dirs +13 -0
  21. data/ext/debian/puppet-common.install +3 -0
  22. data/ext/debian/puppet-common.lintian-overrides +5 -0
  23. data/ext/debian/puppet-common.manpages +28 -0
  24. data/ext/debian/puppet-common.postinst +35 -0
  25. data/ext/debian/puppet-common.postrm +33 -0
  26. data/ext/debian/puppet-el.dirs +1 -0
  27. data/ext/debian/puppet-el.emacsen-install +25 -0
  28. data/ext/debian/puppet-el.emacsen-remove +11 -0
  29. data/ext/debian/puppet-el.emacsen-startup +9 -0
  30. data/ext/debian/puppet-el.install +1 -0
  31. data/ext/debian/puppet-testsuite.install +2 -0
  32. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  33. data/ext/debian/puppet.lintian-overrides +3 -0
  34. data/ext/debian/puppet.logrotate +20 -0
  35. data/ext/debian/puppet.postinst +20 -0
  36. data/ext/debian/puppet.postrm +20 -0
  37. data/ext/debian/puppet.preinst +20 -0
  38. data/ext/debian/puppetmaster-common.install +2 -0
  39. data/ext/debian/puppetmaster-common.manpages +2 -0
  40. data/ext/debian/puppetmaster-common.postinst +6 -0
  41. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  42. data/ext/debian/puppetmaster-passenger.postinst +162 -0
  43. data/ext/debian/puppetmaster-passenger.postrm +61 -0
  44. data/ext/debian/puppetmaster.README.debian +17 -0
  45. data/ext/debian/puppetmaster.default +14 -0
  46. data/ext/debian/puppetmaster.init +137 -0
  47. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  48. data/ext/debian/puppetmaster.postinst +20 -0
  49. data/ext/debian/puppetmaster.postrm +5 -0
  50. data/ext/debian/puppetmaster.preinst +22 -0
  51. data/ext/debian/rules +132 -0
  52. data/ext/debian/source/format +1 -0
  53. data/ext/debian/source/options +1 -0
  54. data/ext/debian/vim-puppet.README.Debian +13 -0
  55. data/ext/debian/vim-puppet.dirs +5 -0
  56. data/ext/debian/vim-puppet.yaml +7 -0
  57. data/ext/debian/watch +2 -0
  58. data/ext/freebsd/puppetd +26 -0
  59. data/ext/freebsd/puppetmasterd +26 -0
  60. data/ext/gentoo/conf.d/puppet +5 -0
  61. data/ext/gentoo/conf.d/puppetmaster +12 -0
  62. data/ext/gentoo/init.d/puppet +38 -0
  63. data/ext/gentoo/init.d/puppetmaster +51 -0
  64. data/ext/gentoo/puppet/fileserver.conf +41 -0
  65. data/ext/ips/puppet-agent +44 -0
  66. data/ext/ips/puppet-master +44 -0
  67. data/ext/ips/puppet.p5m.erb +12 -0
  68. data/ext/ips/puppetagent.xml +42 -0
  69. data/ext/ips/puppetmaster.xml +42 -0
  70. data/ext/ips/rules +19 -0
  71. data/ext/ips/transforms +34 -0
  72. data/ext/ldap/puppet.schema +24 -0
  73. data/ext/logcheck/puppet +23 -0
  74. data/{examples → ext}/nagios/check_puppet.rb +2 -2
  75. data/ext/osx/file_mapping.yaml +28 -0
  76. data/ext/osx/postflight.erb +109 -0
  77. data/ext/osx/preflight.erb +52 -0
  78. data/ext/osx/prototype.plist.erb +38 -0
  79. data/ext/osx/puppet.plist +0 -2
  80. data/ext/project_data.yaml +2 -16
  81. data/ext/redhat/fileserver.conf +41 -0
  82. data/ext/redhat/logrotate +21 -0
  83. data/ext/redhat/puppet.spec.erb +841 -0
  84. data/ext/redhat/server.init +128 -0
  85. data/ext/redhat/server.sysconfig +13 -0
  86. data/{examples/enc → ext}/regexp_nodes/classes/databases +0 -0
  87. data/{examples/enc → ext}/regexp_nodes/classes/webservers +0 -0
  88. data/{examples/enc → ext}/regexp_nodes/environment/development +0 -0
  89. data/{examples/enc → ext}/regexp_nodes/parameters/service/prod +0 -0
  90. data/{examples/enc → ext}/regexp_nodes/parameters/service/qa +0 -0
  91. data/{examples/enc → ext}/regexp_nodes/parameters/service/sandbox +0 -0
  92. data/{examples/enc → ext}/regexp_nodes/regexp_nodes.rb +0 -0
  93. data/ext/solaris/pkginfo +6 -0
  94. data/ext/solaris/smf/puppetd.xml +77 -0
  95. data/ext/solaris/smf/puppetmasterd.xml +77 -0
  96. data/ext/solaris/smf/svc-puppetd +71 -0
  97. data/ext/solaris/smf/svc-puppetmasterd +67 -0
  98. data/ext/suse/puppet.spec +310 -0
  99. data/ext/suse/server.init +173 -0
  100. data/ext/windows/service/daemon.rb +6 -5
  101. data/ext/yaml_nodes.rb +105 -0
  102. data/install.rb +21 -17
  103. data/lib/puppet/agent.rb +11 -47
  104. data/lib/puppet/application/agent.rb +16 -18
  105. data/lib/puppet/application/apply.rb +4 -24
  106. data/lib/puppet/application/device.rb +100 -106
  107. data/lib/puppet/application/filebucket.rb +13 -10
  108. data/lib/puppet/application/lookup.rb +24 -74
  109. data/lib/puppet/application/resource.rb +16 -32
  110. data/lib/puppet/application/script.rb +0 -2
  111. data/lib/puppet/application/ssl.rb +1 -13
  112. data/lib/puppet/application.rb +178 -108
  113. data/lib/puppet/application_support.rb +0 -7
  114. data/lib/puppet/concurrent/thread_local_singleton.rb +3 -6
  115. data/lib/puppet/configurer/downloader.rb +1 -2
  116. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  117. data/lib/puppet/configurer.rb +86 -183
  118. data/lib/puppet/confine/variable.rb +1 -1
  119. data/lib/puppet/defaults.rb +130 -244
  120. data/lib/puppet/environments.rb +82 -146
  121. data/lib/puppet/face/facts.rb +5 -103
  122. data/lib/puppet/face/generate.rb +0 -2
  123. data/lib/puppet/face/help/action.erb +0 -1
  124. data/lib/puppet/face/help/face.erb +0 -1
  125. data/lib/puppet/face/help.rb +1 -1
  126. data/lib/puppet/face/node/clean.rb +0 -11
  127. data/lib/puppet/face/plugin.rb +5 -8
  128. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  129. data/lib/puppet/ffi/windows/constants.rb +404 -0
  130. data/lib/puppet/ffi/windows/functions.rb +628 -0
  131. data/lib/puppet/ffi/windows/structs.rb +338 -0
  132. data/lib/puppet/ffi/windows.rb +12 -0
  133. data/lib/puppet/file_serving/configuration/parser.rb +3 -34
  134. data/lib/puppet/file_serving/configuration.rb +0 -8
  135. data/lib/puppet/file_serving/fileset.rb +2 -14
  136. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  137. data/lib/puppet/file_serving/metadata.rb +0 -3
  138. data/lib/puppet/file_serving/mount/file.rb +4 -4
  139. data/lib/puppet/file_serving/mount.rb +1 -2
  140. data/lib/puppet/file_system/file_impl.rb +8 -10
  141. data/lib/puppet/file_system/jruby.rb +1 -1
  142. data/lib/puppet/file_system/memory_file.rb +1 -8
  143. data/lib/puppet/file_system/windows.rb +6 -8
  144. data/lib/puppet/file_system.rb +1 -1
  145. data/lib/puppet/forge/repository.rb +0 -1
  146. data/lib/puppet/forge.rb +4 -4
  147. data/lib/puppet/functions/all.rb +1 -1
  148. data/lib/puppet/functions/camelcase.rb +1 -1
  149. data/lib/puppet/functions/capitalize.rb +2 -2
  150. data/lib/puppet/functions/downcase.rb +2 -2
  151. data/lib/puppet/functions/empty.rb +0 -8
  152. data/lib/puppet/functions/find_template.rb +2 -2
  153. data/lib/puppet/functions/get.rb +5 -5
  154. data/lib/puppet/functions/group_by.rb +5 -13
  155. data/lib/puppet/functions/lest.rb +1 -1
  156. data/lib/puppet/functions/new.rb +100 -100
  157. data/lib/puppet/functions/next.rb +1 -18
  158. data/lib/puppet/functions/partition.rb +4 -12
  159. data/lib/puppet/functions/require.rb +5 -5
  160. data/lib/puppet/functions/sort.rb +3 -3
  161. data/lib/puppet/functions/strftime.rb +0 -1
  162. data/lib/puppet/functions/tree_each.rb +10 -7
  163. data/lib/puppet/functions/type.rb +4 -4
  164. data/lib/puppet/functions/unwrap.rb +2 -17
  165. data/lib/puppet/functions/upcase.rb +2 -2
  166. data/lib/puppet/functions/versioncmp.rb +2 -6
  167. data/lib/puppet/generate/models/type/type.rb +4 -1
  168. data/lib/puppet/generate/type.rb +0 -9
  169. data/lib/puppet/http/client.rb +167 -137
  170. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  171. data/lib/puppet/http/errors.rb +16 -0
  172. data/lib/puppet/http/external_client.rb +5 -7
  173. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  174. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  175. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  176. data/lib/puppet/http/proxy.rb +137 -0
  177. data/lib/puppet/http/redirector.rb +4 -17
  178. data/lib/puppet/http/resolver/server_list.rb +10 -25
  179. data/lib/puppet/http/resolver/settings.rb +4 -7
  180. data/lib/puppet/http/resolver/srv.rb +7 -11
  181. data/lib/puppet/http/resolver.rb +5 -15
  182. data/lib/puppet/http/response.rb +36 -54
  183. data/lib/puppet/http/response_converter.rb +24 -0
  184. data/lib/puppet/http/response_net_http.rb +42 -0
  185. data/lib/puppet/http/retry_after_handler.rb +4 -13
  186. data/lib/puppet/http/service/ca.rb +11 -22
  187. data/lib/puppet/http/service/compiler.rb +23 -144
  188. data/lib/puppet/http/service/file_server.rb +19 -29
  189. data/lib/puppet/http/service/puppetserver.rb +26 -12
  190. data/lib/puppet/http/service/report.rb +8 -10
  191. data/lib/puppet/http/service.rb +12 -26
  192. data/lib/puppet/http/session.rb +11 -20
  193. data/lib/puppet/{network/http → http}/site.rb +1 -2
  194. data/lib/puppet/http.rb +22 -13
  195. data/lib/puppet/indirector/catalog/compiler.rb +6 -25
  196. data/lib/puppet/indirector/catalog/rest.rb +2 -5
  197. data/lib/puppet/indirector/facts/facter.rb +6 -6
  198. data/lib/puppet/indirector/facts/rest.rb +3 -22
  199. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  200. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  201. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  202. data/lib/puppet/indirector/file_server.rb +1 -8
  203. data/lib/puppet/indirector/generic_http.rb +0 -11
  204. data/lib/puppet/indirector/indirection.rb +1 -1
  205. data/lib/puppet/indirector/node/rest.rb +2 -4
  206. data/lib/puppet/indirector/report/rest.rb +3 -8
  207. data/lib/puppet/indirector/request.rb +0 -101
  208. data/lib/puppet/indirector/resource/ral.rb +1 -6
  209. data/lib/puppet/indirector/rest.rb +12 -263
  210. data/lib/puppet/indirector/terminus.rb +0 -4
  211. data/lib/puppet/interface/documentation.rb +0 -1
  212. data/lib/puppet/module/plan.rb +1 -0
  213. data/lib/puppet/module/task.rb +1 -1
  214. data/lib/puppet/module.rb +0 -1
  215. data/lib/puppet/module_tool/applications/installer.rb +2 -56
  216. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  217. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  218. data/lib/puppet/module_tool/applications.rb +0 -1
  219. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  220. data/lib/puppet/network/authconfig.rb +2 -96
  221. data/lib/puppet/network/authorization.rb +13 -35
  222. data/lib/puppet/network/formats.rb +0 -67
  223. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  224. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  225. data/lib/puppet/network/http/connection.rb +247 -316
  226. data/lib/puppet/network/http/handler.rb +0 -1
  227. data/lib/puppet/network/http.rb +3 -3
  228. data/lib/puppet/network/http_pool.rb +16 -34
  229. data/lib/puppet/node/environment.rb +11 -10
  230. data/lib/puppet/node.rb +2 -31
  231. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  232. data/lib/puppet/pal/pal_impl.rb +4 -2
  233. data/lib/puppet/parser/ast/leaf.rb +2 -3
  234. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  235. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  236. data/lib/puppet/parser/compiler.rb +0 -198
  237. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  238. data/lib/puppet/parser/resource.rb +1 -70
  239. data/lib/puppet/parser/scope.rb +0 -1
  240. data/lib/puppet/parser/templatewrapper.rb +1 -2
  241. data/lib/puppet/pops/evaluator/closure.rb +5 -7
  242. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  243. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  244. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -4
  245. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  246. data/lib/puppet/pops/issues.rb +0 -5
  247. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  248. data/lib/puppet/pops/lookup/lookup_adapter.rb +2 -3
  249. data/lib/puppet/pops/model/ast.pp +0 -42
  250. data/lib/puppet/pops/model/ast.rb +0 -291
  251. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  252. data/lib/puppet/pops/model/factory.rb +1 -47
  253. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  254. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  255. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  256. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  257. data/lib/puppet/pops/parser/egrammar.ra +0 -58
  258. data/lib/puppet/pops/parser/eparser.rb +1685 -1896
  259. data/lib/puppet/pops/parser/lexer2.rb +91 -92
  260. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  261. data/lib/puppet/pops/parser/slurp_support.rb +0 -1
  262. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  263. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  264. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  265. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  266. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  267. data/lib/puppet/pops/types/type_formatter.rb +3 -4
  268. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  269. data/lib/puppet/pops/types/type_parser.rb +0 -4
  270. data/lib/puppet/pops/types/types.rb +1 -2
  271. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  272. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  273. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  274. data/lib/puppet/property/list.rb +1 -1
  275. data/lib/puppet/provider/aix_object.rb +1 -1
  276. data/lib/puppet/provider/exec/posix.rb +4 -16
  277. data/lib/puppet/provider/group/groupadd.rb +10 -18
  278. data/lib/puppet/provider/nameservice.rb +0 -18
  279. data/lib/puppet/provider/package/apt.rb +2 -34
  280. data/lib/puppet/provider/package/aptitude.rb +0 -6
  281. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  282. data/lib/puppet/provider/package/dpkg.rb +0 -10
  283. data/lib/puppet/provider/package/gem.rb +23 -3
  284. data/lib/puppet/provider/package/nim.rb +6 -11
  285. data/lib/puppet/provider/package/pip.rb +3 -16
  286. data/lib/puppet/provider/package/pkg.rb +2 -23
  287. data/lib/puppet/provider/package/portage.rb +1 -1
  288. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  289. data/lib/puppet/provider/package/puppetserver_gem.rb +17 -8
  290. data/lib/puppet/provider/package/windows/exe_package.rb +1 -30
  291. data/lib/puppet/provider/package/windows/package.rb +1 -2
  292. data/lib/puppet/provider/package/windows.rb +1 -14
  293. data/lib/puppet/provider/package/yum.rb +1 -1
  294. data/lib/puppet/provider/parsedfile.rb +0 -3
  295. data/lib/puppet/provider/service/base.rb +1 -1
  296. data/lib/puppet/provider/service/debian.rb +0 -2
  297. data/lib/puppet/provider/service/init.rb +9 -10
  298. data/lib/puppet/provider/service/launchd.rb +2 -2
  299. data/lib/puppet/provider/service/redhat.rb +1 -1
  300. data/lib/puppet/provider/service/smf.rb +194 -76
  301. data/lib/puppet/provider/service/systemd.rb +6 -16
  302. data/lib/puppet/provider/service/upstart.rb +5 -5
  303. data/lib/puppet/provider/service/windows.rb +0 -38
  304. data/lib/puppet/provider/user/aix.rb +3 -46
  305. data/lib/puppet/provider/user/directoryservice.rb +11 -39
  306. data/lib/puppet/provider/user/useradd.rb +24 -134
  307. data/lib/puppet/provider.rb +1 -14
  308. data/lib/puppet/reference/configuration.rb +8 -7
  309. data/lib/puppet/reference/indirection.rb +1 -1
  310. data/lib/puppet/reference/providers.rb +2 -2
  311. data/lib/puppet/resource/catalog.rb +2 -15
  312. data/lib/puppet/resource/type.rb +3 -119
  313. data/lib/puppet/resource/type_collection.rb +3 -49
  314. data/lib/puppet/resource.rb +6 -127
  315. data/lib/puppet/runtime.rb +2 -13
  316. data/lib/puppet/settings/environment_conf.rb +0 -1
  317. data/lib/puppet/settings/integer_setting.rb +17 -0
  318. data/lib/puppet/settings/port_setting.rb +15 -0
  319. data/lib/puppet/settings/priority_setting.rb +5 -4
  320. data/lib/puppet/settings.rb +82 -98
  321. data/lib/puppet/ssl/base.rb +3 -5
  322. data/lib/puppet/ssl/certificate.rb +0 -6
  323. data/lib/puppet/ssl/certificate_request.rb +1 -12
  324. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  325. data/lib/puppet/ssl/oids.rb +3 -1
  326. data/lib/puppet/ssl/ssl_provider.rb +36 -75
  327. data/lib/puppet/ssl/state_machine.rb +20 -14
  328. data/lib/puppet/ssl/verifier.rb +2 -6
  329. data/lib/puppet/ssl.rb +10 -6
  330. data/lib/puppet/test/test_helper.rb +2 -7
  331. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  332. data/lib/puppet/transaction/persistence.rb +1 -21
  333. data/lib/puppet/transaction/report.rb +3 -19
  334. data/lib/puppet/transaction.rb +1 -7
  335. data/lib/puppet/type/exec.rb +6 -36
  336. data/lib/puppet/type/file/checksum.rb +1 -1
  337. data/lib/puppet/type/file/data_sync.rb +1 -1
  338. data/lib/puppet/type/file/mode.rb +0 -6
  339. data/lib/puppet/type/file/selcontext.rb +1 -1
  340. data/lib/puppet/type/file/source.rb +1 -1
  341. data/lib/puppet/type/file.rb +12 -32
  342. data/lib/puppet/type/filebucket.rb +4 -4
  343. data/lib/puppet/type/group.rb +1 -0
  344. data/lib/puppet/type/package.rb +8 -16
  345. data/lib/puppet/type/resources.rb +1 -1
  346. data/lib/puppet/type/service.rb +41 -26
  347. data/lib/puppet/type/tidy.rb +3 -22
  348. data/lib/puppet/type/user.rb +13 -35
  349. data/lib/puppet/type.rb +1 -77
  350. data/lib/puppet/util/autoload.rb +8 -1
  351. data/lib/puppet/util/command_line.rb +1 -1
  352. data/lib/puppet/util/execution.rb +0 -11
  353. data/lib/puppet/util/filetype.rb +2 -2
  354. data/lib/puppet/util/http_proxy.rb +2 -215
  355. data/lib/puppet/util/json.rb +0 -20
  356. data/lib/puppet/util/log.rb +4 -8
  357. data/lib/puppet/util/logging.rb +25 -1
  358. data/lib/puppet/util/monkey_patches.rb +2 -59
  359. data/lib/puppet/util/package.rb +16 -25
  360. data/lib/puppet/util/pidlock.rb +1 -1
  361. data/lib/puppet/util/posix.rb +5 -54
  362. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  363. data/lib/puppet/util/rdoc.rb +0 -7
  364. data/lib/puppet/util/retry_action.rb +1 -1
  365. data/lib/puppet/util/run_mode.rb +9 -1
  366. data/lib/puppet/util/selinux.rb +4 -30
  367. data/lib/puppet/util/suidmanager.rb +2 -1
  368. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  369. data/lib/puppet/util/tagging.rb +0 -1
  370. data/lib/puppet/util/windows/adsi.rb +0 -46
  371. data/lib/puppet/util/windows/daemon.rb +360 -0
  372. data/lib/puppet/util/windows/error.rb +1 -0
  373. data/lib/puppet/util/windows/eventlog.rb +4 -9
  374. data/lib/puppet/util/windows/file.rb +8 -242
  375. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  376. data/lib/puppet/util/windows/principal.rb +2 -9
  377. data/lib/puppet/util/windows/process.rb +4 -226
  378. data/lib/puppet/util/windows/service.rb +11 -457
  379. data/lib/puppet/util/windows/sid.rb +2 -6
  380. data/lib/puppet/util/windows/string.rb +12 -13
  381. data/lib/puppet/util/windows/user.rb +2 -0
  382. data/lib/puppet/util/windows.rb +3 -11
  383. data/lib/puppet/util/yaml.rb +1 -42
  384. data/lib/puppet/util.rb +5 -5
  385. data/lib/puppet/vendor/require_vendored.rb +0 -1
  386. data/lib/puppet/version.rb +1 -1
  387. data/lib/puppet/x509/cert_provider.rb +29 -1
  388. data/lib/puppet/x509.rb +5 -1
  389. data/lib/puppet.rb +34 -27
  390. data/locales/puppet.pot +9633 -5
  391. data/man/man5/puppet.conf.5 +286 -401
  392. data/man/man8/puppet-agent.8 +2 -5
  393. data/man/man8/puppet-apply.8 +2 -2
  394. data/man/man8/puppet-catalog.8 +9 -9
  395. data/man/man8/puppet-config.8 +1 -1
  396. data/man/man8/puppet-describe.8 +1 -1
  397. data/man/man8/puppet-device.8 +2 -2
  398. data/man/man8/puppet-doc.8 +1 -1
  399. data/man/man8/puppet-epp.8 +1 -1
  400. data/man/man8/puppet-facts.8 +8 -51
  401. data/man/man8/puppet-filebucket.8 +4 -4
  402. data/man/man8/puppet-generate.8 +1 -1
  403. data/man/man8/puppet-help.8 +1 -1
  404. data/man/man8/puppet-lookup.8 +6 -9
  405. data/man/man8/puppet-module.8 +3 -60
  406. data/man/man8/puppet-node.8 +5 -5
  407. data/man/man8/puppet-parser.8 +1 -1
  408. data/man/man8/puppet-plugin.8 +1 -1
  409. data/man/man8/puppet-report.8 +5 -5
  410. data/man/man8/puppet-resource.8 +1 -1
  411. data/man/man8/puppet-script.8 +2 -2
  412. data/man/man8/puppet-ssl.8 +1 -5
  413. data/man/man8/puppet.8 +2 -2
  414. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  415. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  416. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  417. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  418. data/spec/fixtures/ssl/ca.pem +35 -57
  419. data/spec/fixtures/ssl/crl.pem +18 -28
  420. data/spec/fixtures/ssl/ec-key.pem +11 -11
  421. data/spec/fixtures/ssl/ec.pem +24 -33
  422. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  423. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  424. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  425. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  426. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  427. data/spec/fixtures/ssl/intermediate.pem +36 -57
  428. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  429. data/spec/fixtures/ssl/pluto.pem +30 -52
  430. data/spec/fixtures/ssl/request-key.pem +57 -107
  431. data/spec/fixtures/ssl/request.pem +26 -47
  432. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  433. data/spec/fixtures/ssl/revoked.pem +30 -52
  434. data/spec/fixtures/ssl/signed-key.pem +57 -107
  435. data/spec/fixtures/ssl/signed.pem +30 -52
  436. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  437. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  438. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  439. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  440. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  441. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  442. data/spec/fixtures/unit/forge/bacula.json +1 -1
  443. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  444. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  445. data/spec/integration/application/agent_spec.rb +50 -406
  446. data/spec/integration/application/apply_spec.rb +1 -20
  447. data/spec/integration/application/filebucket_spec.rb +16 -32
  448. data/spec/integration/application/help_spec.rb +2 -0
  449. data/spec/integration/application/lookup_spec.rb +50 -81
  450. data/spec/integration/application/module_spec.rb +0 -21
  451. data/spec/integration/application/plugin_spec.rb +24 -2
  452. data/spec/integration/configurer_spec.rb +2 -18
  453. data/spec/integration/defaults_spec.rb +14 -3
  454. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  455. data/spec/integration/http/client_spec.rb +4 -63
  456. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  457. data/spec/integration/indirector/facts/facter_spec.rb +39 -93
  458. data/spec/integration/network/http_pool_spec.rb +3 -21
  459. data/spec/integration/parser/catalog_spec.rb +0 -38
  460. data/spec/integration/parser/node_spec.rb +0 -9
  461. data/spec/integration/parser/pcore_resource_spec.rb +0 -47
  462. data/spec/integration/resource/type_collection_spec.rb +6 -2
  463. data/spec/integration/transaction/report_spec.rb +1 -1
  464. data/spec/integration/transaction_spec.rb +9 -4
  465. data/spec/integration/type/exec_spec.rb +45 -70
  466. data/spec/integration/type/file_spec.rb +7 -6
  467. data/spec/integration/type/package_spec.rb +6 -6
  468. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  469. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  470. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  471. data/spec/integration/util/windows/principal_spec.rb +0 -21
  472. data/spec/integration/util/windows/process_spec.rb +9 -1
  473. data/spec/integration/util/windows/registry_spec.rb +10 -6
  474. data/spec/integration/util/windows/security_spec.rb +1 -1
  475. data/spec/lib/matchers/include.rb +27 -0
  476. data/spec/lib/matchers/include_spec.rb +32 -0
  477. data/spec/lib/puppet/test_ca.rb +2 -7
  478. data/spec/lib/puppet_spec/https.rb +1 -1
  479. data/spec/lib/puppet_spec/modules.rb +2 -13
  480. data/spec/lib/puppet_spec/puppetserver.rb +3 -55
  481. data/spec/lib/puppet_spec/settings.rb +1 -1
  482. data/spec/shared_behaviours/documentation_on_faces.rb +2 -0
  483. data/spec/spec_helper.rb +17 -13
  484. data/spec/unit/agent_spec.rb +8 -38
  485. data/spec/unit/application/agent_spec.rb +19 -33
  486. data/spec/unit/application/apply_spec.rb +56 -76
  487. data/spec/unit/application/facts_spec.rb +12 -456
  488. data/spec/unit/application/filebucket_spec.rb +43 -39
  489. data/spec/unit/application/lookup_spec.rb +10 -131
  490. data/spec/unit/application/resource_spec.rb +0 -29
  491. data/spec/unit/application/ssl_spec.rb +2 -25
  492. data/spec/unit/application_spec.rb +9 -51
  493. data/spec/unit/certificate_factory_spec.rb +1 -1
  494. data/spec/unit/configurer/downloader_spec.rb +6 -8
  495. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  496. data/spec/unit/configurer_spec.rb +68 -327
  497. data/spec/unit/confine/feature_spec.rb +1 -1
  498. data/spec/unit/confine_spec.rb +2 -8
  499. data/spec/unit/context/trusted_information_spec.rb +2 -6
  500. data/spec/unit/daemon_spec.rb +11 -2
  501. data/spec/unit/defaults_spec.rb +68 -55
  502. data/spec/unit/environments_spec.rb +68 -408
  503. data/spec/unit/face/generate_spec.rb +0 -64
  504. data/spec/unit/face/node_spec.rb +11 -0
  505. data/spec/unit/face/plugin_spec.rb +73 -33
  506. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  507. data/spec/unit/file_bucket/file_spec.rb +1 -1
  508. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -41
  509. data/spec/unit/file_serving/configuration_spec.rb +10 -26
  510. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  511. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  512. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  513. data/spec/unit/file_system_spec.rb +4 -56
  514. data/spec/unit/forge/module_release_spec.rb +10 -5
  515. data/spec/unit/functions/assert_type_spec.rb +1 -1
  516. data/spec/unit/functions/camelcase_spec.rb +1 -1
  517. data/spec/unit/functions/capitalize_spec.rb +1 -1
  518. data/spec/unit/functions/downcase_spec.rb +1 -1
  519. data/spec/unit/functions/empty_spec.rb +0 -10
  520. data/spec/unit/functions/logging_spec.rb +0 -1
  521. data/spec/unit/functions/lookup_spec.rb +0 -64
  522. data/spec/unit/functions/unwrap_spec.rb +0 -8
  523. data/spec/unit/functions/upcase_spec.rb +1 -1
  524. data/spec/unit/functions/versioncmp_spec.rb +4 -40
  525. data/spec/unit/functions4_spec.rb +2 -2
  526. data/spec/unit/gettext/config_spec.rb +0 -12
  527. data/spec/unit/http/client_spec.rb +8 -84
  528. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  529. data/spec/unit/http/external_client_spec.rb +4 -4
  530. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  531. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  532. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  533. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  534. data/spec/unit/http/resolver_spec.rb +13 -13
  535. data/spec/unit/http/service/compiler_spec.rb +0 -193
  536. data/spec/unit/http/service/file_server_spec.rb +3 -3
  537. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  538. data/spec/unit/http/service_spec.rb +0 -1
  539. data/spec/unit/http/session_spec.rb +16 -14
  540. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  541. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -101
  542. data/spec/unit/indirector/catalog/rest_spec.rb +0 -8
  543. data/spec/unit/indirector/face_spec.rb +1 -0
  544. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  545. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  546. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  547. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  548. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  549. data/spec/unit/indirector/file_server_spec.rb +1 -15
  550. data/spec/unit/indirector/indirection_spec.rb +15 -18
  551. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  552. data/spec/unit/indirector/request_spec.rb +0 -264
  553. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  554. data/spec/unit/indirector/rest_spec.rb +98 -752
  555. data/spec/unit/indirector/store_configs_spec.rb +7 -0
  556. data/spec/unit/indirector_spec.rb +2 -2
  557. data/spec/unit/interface/action_spec.rb +9 -0
  558. data/spec/unit/module_spec.rb +1 -15
  559. data/spec/unit/module_tool/applications/installer_spec.rb +0 -105
  560. data/spec/unit/network/authconfig_spec.rb +2 -129
  561. data/spec/unit/network/authorization_spec.rb +2 -55
  562. data/spec/unit/network/formats_spec.rb +4 -51
  563. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  564. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  565. data/spec/unit/network/http/api_spec.rb +10 -0
  566. data/spec/unit/network/http/connection_spec.rb +19 -41
  567. data/spec/unit/network/http/handler_spec.rb +0 -1
  568. data/spec/unit/network/http_pool_spec.rb +0 -4
  569. data/spec/unit/node/environment_spec.rb +33 -21
  570. data/spec/unit/node_spec.rb +2 -60
  571. data/spec/unit/parser/compiler_spec.rb +19 -3
  572. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  573. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  574. data/spec/unit/parser/resource_spec.rb +8 -14
  575. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  576. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  577. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  578. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  579. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  580. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  581. data/spec/unit/pops/parser/parse_containers_spec.rb +13 -2
  582. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  583. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  584. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  585. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -5
  586. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  587. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  588. data/spec/unit/pops/types/type_calculator_spec.rb +6 -12
  589. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  590. data/spec/unit/pops/validator/validator_spec.rb +61 -51
  591. data/spec/unit/pops/visitor_spec.rb +1 -1
  592. data/spec/unit/property_spec.rb +0 -1
  593. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  594. data/spec/unit/provider/nameservice_spec.rb +64 -122
  595. data/spec/unit/provider/package/apt_spec.rb +23 -28
  596. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  597. data/spec/unit/provider/package/base_spec.rb +5 -6
  598. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  599. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  600. data/spec/unit/provider/package/gem_spec.rb +33 -1
  601. data/spec/unit/provider/package/nim_spec.rb +0 -42
  602. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  603. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  604. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  605. data/spec/unit/provider/package/pip_spec.rb +12 -44
  606. data/spec/unit/provider/package/pkg_spec.rb +4 -29
  607. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  608. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -3
  609. data/spec/unit/provider/package/puppetserver_gem_spec.rb +3 -3
  610. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -17
  611. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  612. data/spec/unit/provider/service/gentoo_spec.rb +5 -6
  613. data/spec/unit/provider/service/init_spec.rb +9 -16
  614. data/spec/unit/provider/service/launchd_spec.rb +0 -11
  615. data/spec/unit/provider/service/openwrt_spec.rb +29 -23
  616. data/spec/unit/provider/service/redhat_spec.rb +2 -3
  617. data/spec/unit/provider/service/smf_spec.rb +401 -165
  618. data/spec/unit/provider/service/systemd_spec.rb +9 -54
  619. data/spec/unit/provider/service/windows_spec.rb +0 -203
  620. data/spec/unit/provider/user/aix_spec.rb +0 -105
  621. data/spec/unit/provider/user/directoryservice_spec.rb +36 -68
  622. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  623. data/spec/unit/provider/user/pw_spec.rb +0 -2
  624. data/spec/unit/provider/user/useradd_spec.rb +5 -114
  625. data/spec/unit/provider_spec.rb +12 -22
  626. data/spec/unit/puppet_spec.rb +4 -12
  627. data/spec/unit/resource/catalog_spec.rb +2 -15
  628. data/spec/unit/resource/type_collection_spec.rb +2 -22
  629. data/spec/unit/resource/type_spec.rb +1 -1
  630. data/spec/unit/resource_spec.rb +12 -125
  631. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  632. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  633. data/spec/unit/settings/port_setting_spec.rb +31 -0
  634. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  635. data/spec/unit/settings_spec.rb +79 -110
  636. data/spec/unit/ssl/base_spec.rb +37 -3
  637. data/spec/unit/ssl/certificate_request_spec.rb +21 -45
  638. data/spec/unit/ssl/certificate_spec.rb +2 -11
  639. data/spec/unit/ssl/ssl_provider_spec.rb +3 -80
  640. data/spec/unit/ssl/state_machine_spec.rb +5 -21
  641. data/spec/unit/ssl/verifier_spec.rb +0 -21
  642. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  643. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  644. data/spec/unit/transaction/persistence_spec.rb +0 -51
  645. data/spec/unit/transaction/report_spec.rb +0 -2
  646. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  647. data/spec/unit/transaction_spec.rb +55 -96
  648. data/spec/unit/type/exec_spec.rb +29 -76
  649. data/spec/unit/type/file/checksum_spec.rb +6 -6
  650. data/spec/unit/type/file/content_spec.rb +2 -1
  651. data/spec/unit/type/file/ensure_spec.rb +1 -1
  652. data/spec/unit/type/file/mode_spec.rb +1 -1
  653. data/spec/unit/type/file/selinux_spec.rb +5 -3
  654. data/spec/unit/type/file/source_spec.rb +4 -5
  655. data/spec/unit/type/file_spec.rb +18 -6
  656. data/spec/unit/type/group_spec.rb +6 -13
  657. data/spec/unit/type/package_spec.rb +1 -1
  658. data/spec/unit/type/resources_spec.rb +7 -7
  659. data/spec/unit/type/service_spec.rb +189 -87
  660. data/spec/unit/type/tidy_spec.rb +8 -24
  661. data/spec/unit/type_spec.rb +24 -4
  662. data/spec/unit/util/at_fork_spec.rb +2 -2
  663. data/spec/unit/util/autoload_spec.rb +1 -5
  664. data/spec/unit/util/backups_spec.rb +2 -3
  665. data/spec/unit/util/execution_spec.rb +11 -44
  666. data/spec/unit/util/inifile_spec.rb +14 -6
  667. data/spec/unit/util/log_spec.rb +7 -8
  668. data/spec/unit/util/logging_spec.rb +3 -5
  669. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  670. data/spec/unit/util/posix_spec.rb +15 -363
  671. data/spec/unit/util/run_mode_spec.rb +21 -121
  672. data/spec/unit/util/selinux_spec.rb +68 -163
  673. data/spec/unit/util/storage_spec.rb +1 -3
  674. data/spec/unit/util/suidmanager_spec.rb +41 -44
  675. data/spec/unit/util/windows/sid_spec.rb +0 -41
  676. data/spec/unit/util/windows/string_spec.rb +1 -3
  677. data/spec/unit/util/yaml_spec.rb +13 -92
  678. data/spec/unit/util_spec.rb +6 -31
  679. data/tasks/generate_cert_fixtures.rake +7 -17
  680. data/tasks/parallel.rake +3 -3
  681. metadata +138 -239
  682. data/conf/auth.conf +0 -150
  683. data/ext/README.md +0 -13
  684. data/lib/puppet/application/cert.rb +0 -76
  685. data/lib/puppet/application/key.rb +0 -4
  686. data/lib/puppet/application/man.rb +0 -4
  687. data/lib/puppet/application/status.rb +0 -4
  688. data/lib/puppet/face/key.rb +0 -16
  689. data/lib/puppet/face/man.rb +0 -145
  690. data/lib/puppet/face/module/build.rb +0 -14
  691. data/lib/puppet/face/module/generate.rb +0 -14
  692. data/lib/puppet/face/module/search.rb +0 -103
  693. data/lib/puppet/face/status.rb +0 -51
  694. data/lib/puppet/facter_impl.rb +0 -96
  695. data/lib/puppet/ffi/posix/constants.rb +0 -14
  696. data/lib/puppet/ffi/posix/functions.rb +0 -24
  697. data/lib/puppet/ffi/posix.rb +0 -10
  698. data/lib/puppet/file_serving/mount/scripts.rb +0 -24
  699. data/lib/puppet/indirector/certificate/file.rb +0 -9
  700. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  701. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  702. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  703. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  704. data/lib/puppet/indirector/file_content/http.rb +0 -22
  705. data/lib/puppet/indirector/key/file.rb +0 -46
  706. data/lib/puppet/indirector/key/memory.rb +0 -7
  707. data/lib/puppet/indirector/ssl_file.rb +0 -162
  708. data/lib/puppet/indirector/status/local.rb +0 -12
  709. data/lib/puppet/indirector/status/rest.rb +0 -27
  710. data/lib/puppet/indirector/status.rb +0 -3
  711. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  712. data/lib/puppet/network/auth_config_parser.rb +0 -90
  713. data/lib/puppet/network/authstore.rb +0 -283
  714. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  715. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  716. data/lib/puppet/network/http/base_pool.rb +0 -36
  717. data/lib/puppet/network/http/compression.rb +0 -127
  718. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  719. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  720. data/lib/puppet/network/rest_controller.rb +0 -2
  721. data/lib/puppet/network/rights.rb +0 -210
  722. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  723. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  724. data/lib/puppet/parser/environment_compiler.rb +0 -202
  725. data/lib/puppet/pops/types/enumeration.rb +0 -16
  726. data/lib/puppet/resource/capability_finder.rb +0 -154
  727. data/lib/puppet/rest/errors.rb +0 -15
  728. data/lib/puppet/rest/response.rb +0 -35
  729. data/lib/puppet/rest/route.rb +0 -85
  730. data/lib/puppet/rest/routes.rb +0 -135
  731. data/lib/puppet/settings/alias_setting.rb +0 -37
  732. data/lib/puppet/ssl/host.rb +0 -505
  733. data/lib/puppet/ssl/key.rb +0 -61
  734. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  735. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  736. data/lib/puppet/ssl/validator.rb +0 -61
  737. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  738. data/lib/puppet/status.rb +0 -40
  739. data/lib/puppet/util/connection.rb +0 -88
  740. data/lib/puppet/util/fact_dif.rb +0 -81
  741. data/lib/puppet/util/ssl.rb +0 -83
  742. data/lib/puppet/util/windows/api_types.rb +0 -309
  743. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  744. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  745. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  746. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  747. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  748. data/lib/puppet/vendor/pathspec/README.md +0 -53
  749. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  750. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  751. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  752. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  753. data/man/man8/puppet-key.8 +0 -126
  754. data/man/man8/puppet-man.8 +0 -76
  755. data/man/man8/puppet-status.8 +0 -108
  756. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  757. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  758. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  759. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  760. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  761. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  762. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  763. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  764. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  765. data/spec/fixtures/ssl/oid-key.pem +0 -117
  766. data/spec/fixtures/ssl/oid.pem +0 -69
  767. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  768. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  769. data/spec/integration/application/resource_spec.rb +0 -68
  770. data/spec/integration/application/ssl_spec.rb +0 -20
  771. data/spec/integration/l10n/compiler_spec.rb +0 -37
  772. data/spec/integration/network/authconfig_spec.rb +0 -256
  773. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  774. data/spec/shared_contexts/l10n.rb +0 -32
  775. data/spec/unit/application/man_spec.rb +0 -52
  776. data/spec/unit/capability_spec.rb +0 -414
  777. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  778. data/spec/unit/face/key_spec.rb +0 -9
  779. data/spec/unit/face/module/search_spec.rb +0 -231
  780. data/spec/unit/face/status_spec.rb +0 -9
  781. data/spec/unit/facter_impl_spec.rb +0 -31
  782. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  783. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  784. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  785. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  786. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  787. data/spec/unit/indirector/key/file_spec.rb +0 -78
  788. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  789. data/spec/unit/indirector/status/local_spec.rb +0 -10
  790. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  791. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  792. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  793. data/spec/unit/network/authstore_spec.rb +0 -407
  794. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  795. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  796. data/spec/unit/network/http/compression_spec.rb +0 -240
  797. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  798. data/spec/unit/network/http_spec.rb +0 -9
  799. data/spec/unit/network/rights_spec.rb +0 -439
  800. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  801. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  802. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  803. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  804. data/spec/unit/rest/route_spec.rb +0 -132
  805. data/spec/unit/ssl/host_spec.rb +0 -645
  806. data/spec/unit/ssl/key_spec.rb +0 -173
  807. data/spec/unit/ssl/validator_spec.rb +0 -278
  808. data/spec/unit/status_spec.rb +0 -45
  809. data/spec/unit/util/json_spec.rb +0 -126
  810. data/spec/unit/util/ssl_spec.rb +0 -91
  811. data/spec/unit/util/windows_spec.rb +0 -23
@@ -0,0 +1,360 @@
1
+ require 'puppet/ffi/windows'
2
+
3
+ module Puppet::Util::Windows
4
+
5
+ # The Daemon class, based on the chef/win32-service implementation
6
+ class Daemon
7
+ include Puppet::FFI::Windows::Constants
8
+ extend Puppet::FFI::Windows::Constants
9
+
10
+ include Puppet::FFI::Windows::Structs
11
+ extend Puppet::FFI::Windows::Structs
12
+
13
+ include Puppet::FFI::Windows::Functions
14
+ extend Puppet::FFI::Windows::Functions
15
+
16
+ # Service is not running
17
+ STOPPED = SERVICE_STOPPED
18
+
19
+ # Service has received a start signal but is not yet running
20
+ START_PENDING = SERVICE_START_PENDING
21
+
22
+ # Service has received a stop signal but is not yet stopped
23
+ STOP_PENDING = SERVICE_STOP_PENDING
24
+
25
+ # Service is running
26
+ RUNNING = SERVICE_RUNNING
27
+
28
+ # Service has received a signal to resume but is not yet running
29
+ CONTINUE_PENDING = SERVICE_CONTINUE_PENDING
30
+
31
+ # Service has received a signal to pause but is not yet paused
32
+ PAUSE_PENDING = SERVICE_PAUSE_PENDING
33
+
34
+ # Service is paused
35
+ PAUSED = SERVICE_PAUSED
36
+
37
+ # Service controls
38
+
39
+ # Notifies service that it should stop
40
+ CONTROL_STOP = SERVICE_CONTROL_STOP
41
+
42
+ # Notifies service that it should pause
43
+ CONTROL_PAUSE = SERVICE_CONTROL_PAUSE
44
+
45
+ # Notifies service that it should resume
46
+ CONTROL_CONTINUE = SERVICE_CONTROL_CONTINUE
47
+
48
+ # Notifies service that it should return its current status information
49
+ CONTROL_INTERROGATE = SERVICE_CONTROL_INTERROGATE
50
+
51
+ # Notifies a service that its parameters have changed
52
+ CONTROL_PARAMCHANGE = SERVICE_CONTROL_PARAMCHANGE
53
+
54
+ # Notifies a service that there is a new component for binding
55
+ CONTROL_NETBINDADD = SERVICE_CONTROL_NETBINDADD
56
+
57
+ # Notifies a service that a component for binding has been removed
58
+ CONTROL_NETBINDREMOVE = SERVICE_CONTROL_NETBINDREMOVE
59
+
60
+ # Notifies a service that a component for binding has been enabled
61
+ CONTROL_NETBINDENABLE = SERVICE_CONTROL_NETBINDENABLE
62
+
63
+ # Notifies a service that a component for binding has been disabled
64
+ CONTROL_NETBINDDISABLE = SERVICE_CONTROL_NETBINDDISABLE
65
+
66
+ IDLE = 0
67
+
68
+ # Misc
69
+ IDLE_CONTROL_CODE = 0
70
+ WAIT_OBJECT_0 = 0
71
+ WAIT_TIMEOUT = 0x00000102
72
+ WAIT_FAILED = 0xFFFFFFFF
73
+ NO_ERROR = 0
74
+
75
+ # Wraps SetServiceStatus.
76
+ SetTheServiceStatus = Proc.new do |dwCurrentState, dwWin32ExitCode, dwCheckPoint, dwWaitHint|
77
+ ss = SERVICE_STATUS.new # Current status of the service.
78
+
79
+ # Disable control requests until the service is started.
80
+ if dwCurrentState == SERVICE_START_PENDING
81
+ ss[:dwControlsAccepted] = 0
82
+ else
83
+ ss[:dwControlsAccepted] =
84
+ SERVICE_ACCEPT_STOP|SERVICE_ACCEPT_SHUTDOWN|
85
+ SERVICE_ACCEPT_PAUSE_CONTINUE|SERVICE_ACCEPT_PARAMCHANGE
86
+ end
87
+
88
+ # Initialize ss structure.
89
+ ss[:dwServiceType] = SERVICE_WIN32_OWN_PROCESS
90
+ ss[:dwServiceSpecificExitCode] = 0
91
+ ss[:dwCurrentState] = dwCurrentState
92
+ ss[:dwWin32ExitCode] = dwWin32ExitCode
93
+ ss[:dwCheckPoint] = dwCheckPoint
94
+ ss[:dwWaitHint] = dwWaitHint
95
+
96
+ @@dwServiceState = dwCurrentState
97
+
98
+ # Send status of the service to the Service Controller.
99
+ if !SetServiceStatus(@@ssh, ss)
100
+ SetEvent(@@hStopEvent)
101
+ end
102
+ end
103
+
104
+ ERROR_CALL_NOT_IMPLEMENTED = 0x78
105
+
106
+ # Handles control signals from the service control manager.
107
+ Service_Ctrl_ex = Proc.new do |dwCtrlCode, dwEventType, lpEventData, lpContext|
108
+ @@waiting_control_code = dwCtrlCode;
109
+ return_value = NO_ERROR
110
+
111
+ begin
112
+ dwState = SERVICE_RUNNING
113
+
114
+ case dwCtrlCode
115
+ when SERVICE_CONTROL_STOP
116
+ dwState = SERVICE_STOP_PENDING
117
+ when SERVICE_CONTROL_SHUTDOWN
118
+ dwState = SERVICE_STOP_PENDING
119
+ when SERVICE_CONTROL_PAUSE
120
+ dwState = SERVICE_PAUSED
121
+ when SERVICE_CONTROL_CONTINUE
122
+ dwState = SERVICE_RUNNING
123
+ #else
124
+ # TODO: Handle other control codes? Retain the current state?
125
+ end
126
+
127
+ # Set the status of the service except on interrogation.
128
+ unless dwCtrlCode == SERVICE_CONTROL_INTERROGATE
129
+ SetTheServiceStatus.call(dwState, NO_ERROR, 0, 0)
130
+ end
131
+
132
+ # Tell service_main thread to stop.
133
+ if dwCtrlCode == SERVICE_CONTROL_STOP || dwCtrlCode == SERVICE_CONTROL_SHUTDOWN
134
+ if SetEvent(@@hStopEvent) == 0
135
+ SetTheServiceStatus.call(SERVICE_STOPPED, FFI.errno, 0, 0)
136
+ end
137
+ end
138
+ rescue
139
+ return_value = ERROR_CALL_NOT_IMPLEMENTED
140
+ end
141
+
142
+ return_value
143
+ end
144
+
145
+ # Called by the service control manager after the call to StartServiceCtrlDispatcher.
146
+ Service_Main = FFI::Function.new(:void, [:ulong, :pointer], :blocking => false) do |dwArgc, lpszArgv|
147
+ begin
148
+ # Obtain the name of the service.
149
+ if lpszArgv.address != 0
150
+ argv = lpszArgv.get_array_of_string(0, dwArgc)
151
+ lpszServiceName = argv[0]
152
+ else
153
+ lpszServiceName = ''
154
+ end
155
+
156
+ # Args passed to Service.start
157
+ if(dwArgc > 1)
158
+ @@Argv = argv[1..-1]
159
+ else
160
+ @@Argv = nil
161
+ end
162
+
163
+ # Register the service ctrl handler.
164
+ @@ssh = RegisterServiceCtrlHandlerExW(
165
+ lpszServiceName,
166
+ Service_Ctrl_ex,
167
+ nil
168
+ )
169
+
170
+ # No service to stop, no service handle to notify, nothing to do but exit.
171
+ break if @@ssh == 0
172
+
173
+ # The service has started.
174
+ SetTheServiceStatus.call(SERVICE_RUNNING, NO_ERROR, 0, 0)
175
+
176
+ SetEvent(@@hStartEvent)
177
+
178
+ # Main loop for the service.
179
+ while(WaitForSingleObject(@@hStopEvent, 1000) != WAIT_OBJECT_0) do
180
+ end
181
+
182
+ # Main loop for the service.
183
+ while(WaitForSingleObject(@@hStopCompletedEvent, 1000) != WAIT_OBJECT_0) do
184
+ end
185
+ ensure
186
+ # Stop the service.
187
+ SetTheServiceStatus.call(SERVICE_STOPPED, NO_ERROR, 0, 0)
188
+ end
189
+ end
190
+
191
+ ThreadProc = FFI::Function.new(:ulong,[:pointer]) do |lpParameter|
192
+ ste = FFI::MemoryPointer.new(SERVICE_TABLE_ENTRYW, 2)
193
+
194
+ s = SERVICE_TABLE_ENTRYW.new(ste[0])
195
+ s[:lpServiceName] = FFI::MemoryPointer.from_string('')
196
+ s[:lpServiceProc] = lpParameter
197
+
198
+ s = SERVICE_TABLE_ENTRYW.new(ste[1])
199
+ s[:lpServiceName] = nil
200
+ s[:lpServiceProc] = nil
201
+
202
+ # No service to step, no service handle, no ruby exceptions, just terminate the thread..
203
+ if !StartServiceCtrlDispatcherW(ste)
204
+ return 1
205
+ end
206
+
207
+ return 0
208
+ end
209
+
210
+ # This is a shortcut for Daemon.new + Daemon#mainloop.
211
+ #
212
+ def self.mainloop
213
+ self.new.mainloop
214
+ end
215
+
216
+ # This is the method that actually puts your code into a loop and allows it
217
+ # to run as a service. The code that is actually run while in the mainloop
218
+ # is what you defined in your own Daemon#service_main method.
219
+ #
220
+ def mainloop
221
+ @@waiting_control_code = IDLE_CONTROL_CODE
222
+ @@dwServiceState = 0
223
+
224
+ # Redirect STDIN, STDOUT and STDERR to the NUL device if they're still
225
+ # associated with a tty. This helps newbs avoid Errno::EBADF errors.
226
+ STDIN.reopen('NUL') if STDIN.isatty
227
+ STDOUT.reopen('NUL') if STDOUT.isatty
228
+ STDERR.reopen('NUL') if STDERR.isatty
229
+
230
+ # Calling init here so that init failures never even tries to start the
231
+ # service. Of course that means that init methods must be very quick
232
+ # because the SCM will be receiving no START_PENDING messages while
233
+ # init's running.
234
+ #
235
+ # TODO: Fix?
236
+ service_init() if respond_to?('service_init')
237
+
238
+ # Create the event to signal the service to start.
239
+ @@hStartEvent = CreateEventW(nil, 1, 0, nil)
240
+
241
+ if @@hStartEvent == 0
242
+ raise SystemCallError.new('CreateEvent', FFI.errno)
243
+ end
244
+
245
+ # Create the event to signal the service to stop.
246
+ @@hStopEvent = CreateEventW(nil, 1, 0, nil)
247
+
248
+ if @@hStopEvent == 0
249
+ raise SystemCallError.new('CreateEvent', FFI.errno)
250
+ end
251
+
252
+ # Create the event to signal the service that stop has completed
253
+ @@hStopCompletedEvent = CreateEventW(nil, 1, 0, nil)
254
+
255
+ if @@hStopCompletedEvent == 0
256
+ raise SystemCallError.new('CreateEvent', FFI.errno)
257
+ end
258
+
259
+ hThread = CreateThread(nil, 0, ThreadProc, Service_Main, 0, nil)
260
+
261
+ if hThread == 0
262
+ raise SystemCallError.new('CreateThread', FFI.errno)
263
+ end
264
+
265
+ events = FFI::MemoryPointer.new(:pointer, 2)
266
+ events.put_pointer(0, FFI::Pointer.new(hThread))
267
+ events.put_pointer(FFI::Pointer.size, FFI::Pointer.new(@@hStartEvent))
268
+
269
+ while ((index = WaitForMultipleObjects(2, events, 0, 1000)) == WAIT_TIMEOUT) do
270
+ end
271
+
272
+ if index == WAIT_FAILED
273
+ raise SystemCallError.new('WaitForMultipleObjects', FFI.errno)
274
+ end
275
+
276
+ # The thread exited, so the show is off.
277
+ if index == WAIT_OBJECT_0
278
+ raise "Service_Main thread exited abnormally"
279
+ end
280
+
281
+ thr = Thread.new do
282
+ begin
283
+ while(WaitForSingleObject(@@hStopEvent, 1000) == WAIT_TIMEOUT)
284
+ # Check to see if anything interesting has been signaled
285
+ case @@waiting_control_code
286
+ when SERVICE_CONTROL_PAUSE
287
+ service_pause() if respond_to?('service_pause')
288
+ when SERVICE_CONTROL_CONTINUE
289
+ service_resume() if respond_to?('service_resume')
290
+ when SERVICE_CONTROL_INTERROGATE
291
+ service_interrogate() if respond_to?('service_interrogate')
292
+ when SERVICE_CONTROL_SHUTDOWN
293
+ service_shutdown() if respond_to?('service_shutdown')
294
+ when SERVICE_CONTROL_PARAMCHANGE
295
+ service_paramchange() if respond_to?('service_paramchange')
296
+ when SERVICE_CONTROL_NETBINDADD
297
+ service_netbindadd() if respond_to?('service_netbindadd')
298
+ when SERVICE_CONTROL_NETBINDREMOVE
299
+ service_netbindremove() if respond_to?('service_netbindremove')
300
+ when SERVICE_CONTROL_NETBINDENABLE
301
+ service_netbindenable() if respond_to?('service_netbindenable')
302
+ when SERVICE_CONTROL_NETBINDDISABLE
303
+ service_netbinddisable() if respond_to?('service_netbinddisable')
304
+ end
305
+ @@waiting_control_code = IDLE_CONTROL_CODE
306
+ end
307
+
308
+ service_stop() if respond_to?('service_stop')
309
+ ensure
310
+ SetEvent(@@hStopCompletedEvent)
311
+ end
312
+ end
313
+
314
+ if respond_to?('service_main')
315
+ service_main(*@@Argv)
316
+ end
317
+
318
+ thr.join
319
+ end
320
+
321
+ # Returns the state of the service (as an constant integer) which can be any
322
+ # of the service status constants, e.g. RUNNING, PAUSED, etc.
323
+ #
324
+ # This method is typically used within your service_main method to setup the
325
+ # loop. For example:
326
+ #
327
+ # class MyDaemon < Daemon
328
+ # def service_main
329
+ # while state == RUNNING || state == PAUSED || state == IDLE
330
+ # # Your main loop here
331
+ # end
332
+ # end
333
+ # end
334
+ #
335
+ # See the Daemon#running? method for an abstraction of the above code.
336
+ #
337
+ def state
338
+ @@dwServiceState
339
+ end
340
+
341
+ #
342
+ # Returns whether or not the service is in a running state, i.e. the service
343
+ # status is either RUNNING, PAUSED or IDLE.
344
+ #
345
+ # This is typically used within your service_main method to setup the main
346
+ # loop. For example:
347
+ #
348
+ # class MyDaemon < Daemon
349
+ # def service_main
350
+ # while running?
351
+ # # Your main loop here
352
+ # end
353
+ # end
354
+ # end
355
+ #
356
+ def running?
357
+ [SERVICE_RUNNING, SERVICE_PAUSED, 0].include?(@@dwServiceState)
358
+ end
359
+ end
360
+ end
@@ -1,4 +1,5 @@
1
1
  require 'puppet/util/windows'
2
+ require 'puppet/error'
2
3
 
3
4
  # represents an error resulting from a Win32 error code
4
5
  class Puppet::Util::Windows::Error < Puppet::Error
@@ -46,8 +46,8 @@ class Puppet::Util::Windows::EventLog
46
46
  end
47
47
 
48
48
  # Report an event to this instance's event log handle. Accepts a string to
49
- # report (:data => <string>) and event type (:event_type => FixNum) and id
50
- # (:event_id => FixNum) as returned by #to_native. The additional arguments to
49
+ # report (:data => <string>) and event type (:event_type => Integer) and id
50
+ # (:event_id => Integer) as returned by #to_native. The additional arguments to
51
51
  # ReportEventW seen in this method aren't exposed - though ReportEventW
52
52
  # technically can accept multiple strings as well as raw binary data to log,
53
53
  # we accept a single string from Puppet::Util::Log
@@ -126,13 +126,8 @@ class Puppet::Util::Windows::EventLog
126
126
  def wide_string(str)
127
127
  # if given a nil string, assume caller wants to pass a nil pointer to win32
128
128
  return nil if str.nil?
129
- # ruby (< 2.1) does not respect multibyte terminators, so it is possible
130
- # for a string to contain a single trailing null byte, followed by garbage
131
- # causing buffer overruns.
132
- #
133
- # See http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=41920&view=revision
134
- newstr = str + "\0".encode(str.encoding)
135
- newstr.encode!('UTF-16LE')
129
+
130
+ str.encode('UTF-16LE')
136
131
  end
137
132
 
138
133
  # Private duplicate of Puppet::Util::Windows::ApiTypes::from_string_to_wide_string
@@ -1,74 +1,15 @@
1
- require 'puppet/util/windows'
1
+ require 'puppet/ffi/windows'
2
2
 
3
3
  module Puppet::Util::Windows::File
4
- require 'ffi'
5
- extend FFI::Library
6
4
  extend Puppet::Util::Windows::String
7
5
 
8
- FILE_ATTRIBUTE_READONLY = 0x00000001
9
-
10
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379607(v=vs.85).aspx
11
- # The right to use the object for synchronization. This enables a thread to
12
- # wait until the object is in the signaled state. Some object types do not
13
- # support this access right.
14
- SYNCHRONIZE = 0x100000
15
- # The right to delete the object.
16
- DELETE = 0x00010000
17
- # The right to read the information in the object's security descriptor, not including the information in the system access control list (SACL).
18
- # READ_CONTROL = 0x00020000
19
- # The right to modify the discretionary access control list (DACL) in the object's security descriptor.
20
- WRITE_DAC = 0x00040000
21
- # The right to change the owner in the object's security descriptor.
22
- WRITE_OWNER = 0x00080000
23
-
24
- # Combines DELETE, READ_CONTROL, WRITE_DAC, and WRITE_OWNER access.
25
- STANDARD_RIGHTS_REQUIRED = 0xf0000
26
- # Currently defined to equal READ_CONTROL.
27
- STANDARD_RIGHTS_READ = 0x20000
28
- # Currently defined to equal READ_CONTROL.
29
- STANDARD_RIGHTS_WRITE = 0x20000
30
- # Currently defined to equal READ_CONTROL.
31
- STANDARD_RIGHTS_EXECUTE = 0x20000
32
- # Combines DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER, and SYNCHRONIZE access.
33
- STANDARD_RIGHTS_ALL = 0x1F0000
34
- SPECIFIC_RIGHTS_ALL = 0xFFFF
35
-
36
- FILE_READ_DATA = 1
37
- FILE_WRITE_DATA = 2
38
- FILE_APPEND_DATA = 4
39
- FILE_READ_EA = 8
40
- FILE_WRITE_EA = 16
41
- FILE_EXECUTE = 32
42
- FILE_DELETE_CHILD = 64
43
- FILE_READ_ATTRIBUTES = 128
44
- FILE_WRITE_ATTRIBUTES = 256
45
-
46
- FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF
47
-
48
- FILE_GENERIC_READ =
49
- STANDARD_RIGHTS_READ |
50
- FILE_READ_DATA |
51
- FILE_READ_ATTRIBUTES |
52
- FILE_READ_EA |
53
- SYNCHRONIZE
54
-
55
- FILE_GENERIC_WRITE =
56
- STANDARD_RIGHTS_WRITE |
57
- FILE_WRITE_DATA |
58
- FILE_WRITE_ATTRIBUTES |
59
- FILE_WRITE_EA |
60
- FILE_APPEND_DATA |
61
- SYNCHRONIZE
62
-
63
- FILE_GENERIC_EXECUTE =
64
- STANDARD_RIGHTS_EXECUTE |
65
- FILE_READ_ATTRIBUTES |
66
- FILE_EXECUTE |
67
- SYNCHRONIZE
68
-
69
- REPLACEFILE_WRITE_THROUGH = 0x1
70
- REPLACEFILE_IGNORE_MERGE_ERRORS = 0x2
71
- REPLACEFILE_IGNORE_ACL_ERRORS = 0x3
6
+ include Puppet::FFI::Windows::Constants
7
+
8
+ extend Puppet::FFI::Windows::Structs
9
+ include Puppet::FFI::Windows::Structs
10
+
11
+ include Puppet::FFI::Windows::Functions
12
+ extend Puppet::FFI::Windows::Functions
72
13
 
73
14
  def replace_file(target, source)
74
15
  target_encoded = wide_string(target.to_s)
@@ -111,7 +52,6 @@ module Puppet::Util::Windows::File
111
52
  end
112
53
  module_function :symlink
113
54
 
114
-
115
55
  def exist?(path)
116
56
  path = path.to_str if path.respond_to?(:to_str) # support WatchedFile
117
57
  path = path.to_s # support String and Pathname
@@ -144,9 +84,6 @@ module Puppet::Util::Windows::File
144
84
  end
145
85
  module_function :exist?
146
86
 
147
-
148
- INVALID_FILE_ATTRIBUTES = 0xFFFFFFFF #define INVALID_FILE_ATTRIBUTES (DWORD (-1))
149
-
150
87
  def get_attributes(file_name, raise_on_invalid = true)
151
88
  result = GetFileAttributesW(wide_string(file_name.to_s))
152
89
  if raise_on_invalid && result == INVALID_FILE_ATTRIBUTES
@@ -199,18 +136,6 @@ module Puppet::Util::Windows::File
199
136
  "#{flags_and_attributes.to_s(8)}, #{template_file_handle})")
200
137
  end
201
138
 
202
- IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
203
- IO_REPARSE_TAG_HSM = 0xC0000004
204
- IO_REPARSE_TAG_HSM2 = 0x80000006
205
- IO_REPARSE_TAG_SIS = 0x80000007
206
- IO_REPARSE_TAG_WIM = 0x80000008
207
- IO_REPARSE_TAG_CSV = 0x80000009
208
- IO_REPARSE_TAG_DFS = 0x8000000A
209
- IO_REPARSE_TAG_SYMLINK = 0xA000000C
210
- IO_REPARSE_TAG_DFSR = 0x80000012
211
- IO_REPARSE_TAG_DEDUP = 0x80000013
212
- IO_REPARSE_TAG_NFS = 0x80000014
213
-
214
139
  def self.get_reparse_point_data(handle, &block)
215
140
  # must be multiple of 1024, min 10240
216
141
  FFI::MemoryPointer.new(MAXIMUM_REPARSE_DATA_BUFFER_SIZE) do |reparse_data_buffer_ptr|
@@ -276,7 +201,6 @@ module Puppet::Util::Windows::File
276
201
  out_buffer
277
202
  end
278
203
 
279
- FILE_ATTRIBUTE_REPARSE_POINT = 0x400
280
204
  def reparse_point?(file_name)
281
205
  attributes = get_attributes(file_name, false)
282
206
 
@@ -291,16 +215,6 @@ module Puppet::Util::Windows::File
291
215
  end
292
216
  module_function :symlink?
293
217
 
294
- GENERIC_READ = 0x80000000
295
- GENERIC_WRITE = 0x40000000
296
- GENERIC_EXECUTE = 0x20000000
297
- GENERIC_ALL = 0x10000000
298
- FILE_SHARE_READ = 1
299
- FILE_SHARE_WRITE = 2
300
- OPEN_EXISTING = 3
301
- FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
302
- FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
303
-
304
218
  def self.open_symlink(link_name)
305
219
  begin
306
220
  yield handle = create_file(
@@ -329,9 +243,6 @@ module Puppet::Util::Windows::File
329
243
  end
330
244
  module_function :readlink
331
245
 
332
- ERROR_FILE_NOT_FOUND = 2
333
- ERROR_PATH_NOT_FOUND = 3
334
-
335
246
  def get_long_pathname(path)
336
247
  converted = ''
337
248
  FFI::Pointer.from_string_to_wide_string(path) do |path_ptr|
@@ -411,9 +322,6 @@ module Puppet::Util::Windows::File
411
322
  end
412
323
  module_function :lstat
413
324
 
414
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa364571(v=vs.85).aspx
415
- FSCTL_GET_REPARSE_POINT = 0x900a8
416
-
417
325
  def self.resolve_symlink(handle)
418
326
  path = nil
419
327
  get_reparse_point_data(handle) do |reparse_data|
@@ -444,146 +352,4 @@ module Puppet::Util::Windows::File
444
352
  symlink
445
353
  end
446
354
  private_class_method :symlink_reparse_point?
447
-
448
- ffi_convention :stdcall
449
-
450
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa365512(v=vs.85).aspx
451
- # BOOL WINAPI ReplaceFile(
452
- # _In_ LPCTSTR lpReplacedFileName,
453
- # _In_ LPCTSTR lpReplacementFileName,
454
- # _In_opt_ LPCTSTR lpBackupFileName,
455
- # _In_ DWORD dwReplaceFlags - 0x1 REPLACEFILE_WRITE_THROUGH,
456
- # 0x2 REPLACEFILE_IGNORE_MERGE_ERRORS,
457
- # 0x4 REPLACEFILE_IGNORE_ACL_ERRORS
458
- # _Reserved_ LPVOID lpExclude,
459
- # _Reserved_ LPVOID lpReserved
460
- # );
461
- ffi_lib :kernel32
462
- attach_function_private :ReplaceFileW,
463
- [:lpcwstr, :lpcwstr, :lpcwstr, :dword, :lpvoid, :lpvoid], :win32_bool
464
-
465
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx
466
- # BOOL WINAPI MoveFileEx(
467
- # _In_ LPCTSTR lpExistingFileName,
468
- # _In_opt_ LPCTSTR lpNewFileName,
469
- # _In_ DWORD dwFlags
470
- # );
471
- ffi_lib :kernel32
472
- attach_function_private :MoveFileExW,
473
- [:lpcwstr, :lpcwstr, :dword], :win32_bool
474
-
475
- # BOOLEAN WINAPI CreateSymbolicLink(
476
- # _In_ LPTSTR lpSymlinkFileName, - symbolic link to be created
477
- # _In_ LPTSTR lpTargetFileName, - name of target for symbolic link
478
- # _In_ DWORD dwFlags - 0x0 target is a file, 0x1 target is a directory
479
- # );
480
- # rescue on Windows < 6.0 so that code doesn't explode
481
- begin
482
- ffi_lib :kernel32
483
- attach_function_private :CreateSymbolicLinkW,
484
- [:lpwstr, :lpwstr, :dword], :boolean
485
- rescue LoadError
486
- end
487
-
488
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa364944(v=vs.85).aspx
489
- # DWORD WINAPI GetFileAttributes(
490
- # _In_ LPCTSTR lpFileName
491
- # );
492
- ffi_lib :kernel32
493
- attach_function_private :GetFileAttributesW,
494
- [:lpcwstr], :dword
495
-
496
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa365535(v=vs.85).aspx
497
- # BOOL WINAPI SetFileAttributes(
498
- # _In_ LPCTSTR lpFileName,
499
- # _In_ DWORD dwFileAttributes
500
- # );
501
- ffi_lib :kernel32
502
- attach_function_private :SetFileAttributesW,
503
- [:lpcwstr, :dword], :win32_bool
504
-
505
- # HANDLE WINAPI CreateFile(
506
- # _In_ LPCTSTR lpFileName,
507
- # _In_ DWORD dwDesiredAccess,
508
- # _In_ DWORD dwShareMode,
509
- # _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
510
- # _In_ DWORD dwCreationDisposition,
511
- # _In_ DWORD dwFlagsAndAttributes,
512
- # _In_opt_ HANDLE hTemplateFile
513
- # );
514
- ffi_lib :kernel32
515
- attach_function_private :CreateFileW,
516
- [:lpcwstr, :dword, :dword, :pointer, :dword, :dword, :handle], :handle
517
-
518
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa363216(v=vs.85).aspx
519
- # BOOL WINAPI DeviceIoControl(
520
- # _In_ HANDLE hDevice,
521
- # _In_ DWORD dwIoControlCode,
522
- # _In_opt_ LPVOID lpInBuffer,
523
- # _In_ DWORD nInBufferSize,
524
- # _Out_opt_ LPVOID lpOutBuffer,
525
- # _In_ DWORD nOutBufferSize,
526
- # _Out_opt_ LPDWORD lpBytesReturned,
527
- # _Inout_opt_ LPOVERLAPPED lpOverlapped
528
- # );
529
- ffi_lib :kernel32
530
- attach_function_private :DeviceIoControl,
531
- [:handle, :dword, :lpvoid, :dword, :lpvoid, :dword, :lpdword, :pointer], :win32_bool
532
-
533
- MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384
534
-
535
- # SYMLINK_REPARSE_DATA_BUFFER
536
- # https://msdn.microsoft.com/en-us/library/cc232006.aspx
537
- # https://msdn.microsoft.com/en-us/library/windows/hardware/ff552012(v=vs.85).aspx
538
- # struct is always MAXIMUM_REPARSE_DATA_BUFFER_SIZE bytes
539
- class SYMLINK_REPARSE_DATA_BUFFER < FFI::Struct
540
- layout :ReparseTag, :win32_ulong,
541
- :ReparseDataLength, :ushort,
542
- :Reserved, :ushort,
543
- :SubstituteNameOffset, :ushort,
544
- :SubstituteNameLength, :ushort,
545
- :PrintNameOffset, :ushort,
546
- :PrintNameLength, :ushort,
547
- :Flags, :win32_ulong,
548
- # max less above fields dword / uint 4 bytes, ushort 2 bytes
549
- # technically a WCHAR buffer, but we care about size in bytes here
550
- :PathBuffer, [:byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE - 20]
551
- end
552
-
553
- # MOUNT_POINT_REPARSE_DATA_BUFFER
554
- # https://msdn.microsoft.com/en-us/library/cc232007.aspx
555
- # https://msdn.microsoft.com/en-us/library/windows/hardware/ff552012(v=vs.85).aspx
556
- # struct is always MAXIMUM_REPARSE_DATA_BUFFER_SIZE bytes
557
- class MOUNT_POINT_REPARSE_DATA_BUFFER < FFI::Struct
558
- layout :ReparseTag, :win32_ulong,
559
- :ReparseDataLength, :ushort,
560
- :Reserved, :ushort,
561
- :SubstituteNameOffset, :ushort,
562
- :SubstituteNameLength, :ushort,
563
- :PrintNameOffset, :ushort,
564
- :PrintNameLength, :ushort,
565
- # max less above fields dword / uint 4 bytes, ushort 2 bytes
566
- # technically a WCHAR buffer, but we care about size in bytes here
567
- :PathBuffer, [:byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE - 16]
568
- end
569
-
570
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa364980(v=vs.85).aspx
571
- # DWORD WINAPI GetLongPathName(
572
- # _In_ LPCTSTR lpszShortPath,
573
- # _Out_ LPTSTR lpszLongPath,
574
- # _In_ DWORD cchBuffer
575
- # );
576
- ffi_lib :kernel32
577
- attach_function_private :GetLongPathNameW,
578
- [:lpcwstr, :lpwstr, :dword], :dword
579
-
580
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa364989(v=vs.85).aspx
581
- # DWORD WINAPI GetShortPathName(
582
- # _In_ LPCTSTR lpszLongPath,
583
- # _Out_ LPTSTR lpszShortPath,
584
- # _In_ DWORD cchBuffer
585
- # );
586
- ffi_lib :kernel32
587
- attach_function_private :GetShortPathNameW,
588
- [:lpcwstr, :lpwstr, :dword], :dword
589
355
  end