puppet 6.26.0-x86-mingw32 → 7.0.0-x86-mingw32

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 (802) 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 +43 -62
  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 +1 -15
  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/application/agent.rb +4 -16
  104. data/lib/puppet/application/apply.rb +4 -24
  105. data/lib/puppet/application/device.rb +100 -106
  106. data/lib/puppet/application/filebucket.rb +13 -10
  107. data/lib/puppet/application/lookup.rb +24 -78
  108. data/lib/puppet/application/resource.rb +16 -32
  109. data/lib/puppet/application/script.rb +0 -2
  110. data/lib/puppet/application/ssl.rb +1 -13
  111. data/lib/puppet/application.rb +178 -108
  112. data/lib/puppet/application_support.rb +0 -7
  113. data/lib/puppet/concurrent/thread_local_singleton.rb +3 -6
  114. data/lib/puppet/configurer/downloader.rb +1 -2
  115. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  116. data/lib/puppet/configurer.rb +86 -179
  117. data/lib/puppet/confine/variable.rb +1 -1
  118. data/lib/puppet/defaults.rb +130 -245
  119. data/lib/puppet/environments.rb +82 -146
  120. data/lib/puppet/face/facts.rb +5 -103
  121. data/lib/puppet/face/generate.rb +0 -2
  122. data/lib/puppet/face/help/action.erb +0 -1
  123. data/lib/puppet/face/help/face.erb +0 -1
  124. data/lib/puppet/face/help.rb +1 -1
  125. data/lib/puppet/face/node/clean.rb +0 -11
  126. data/lib/puppet/face/plugin.rb +5 -8
  127. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  128. data/lib/puppet/ffi/windows/constants.rb +404 -0
  129. data/lib/puppet/ffi/windows/functions.rb +628 -0
  130. data/lib/puppet/ffi/windows/structs.rb +338 -0
  131. data/lib/puppet/ffi/windows.rb +12 -0
  132. data/lib/puppet/file_serving/configuration/parser.rb +3 -34
  133. data/lib/puppet/file_serving/configuration.rb +0 -8
  134. data/lib/puppet/file_serving/fileset.rb +2 -14
  135. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  136. data/lib/puppet/file_serving/metadata.rb +0 -3
  137. data/lib/puppet/file_serving/mount/file.rb +4 -4
  138. data/lib/puppet/file_serving/mount.rb +1 -2
  139. data/lib/puppet/file_system/file_impl.rb +8 -10
  140. data/lib/puppet/file_system/jruby.rb +1 -1
  141. data/lib/puppet/file_system/memory_file.rb +1 -8
  142. data/lib/puppet/file_system/windows.rb +6 -8
  143. data/lib/puppet/file_system.rb +1 -1
  144. data/lib/puppet/forge/repository.rb +0 -1
  145. data/lib/puppet/forge.rb +4 -4
  146. data/lib/puppet/functions/all.rb +1 -1
  147. data/lib/puppet/functions/camelcase.rb +1 -1
  148. data/lib/puppet/functions/capitalize.rb +2 -2
  149. data/lib/puppet/functions/downcase.rb +2 -2
  150. data/lib/puppet/functions/empty.rb +0 -8
  151. data/lib/puppet/functions/find_template.rb +2 -2
  152. data/lib/puppet/functions/get.rb +5 -5
  153. data/lib/puppet/functions/group_by.rb +5 -13
  154. data/lib/puppet/functions/lest.rb +1 -1
  155. data/lib/puppet/functions/new.rb +100 -100
  156. data/lib/puppet/functions/partition.rb +4 -12
  157. data/lib/puppet/functions/require.rb +5 -5
  158. data/lib/puppet/functions/sort.rb +3 -3
  159. data/lib/puppet/functions/strftime.rb +0 -1
  160. data/lib/puppet/functions/tree_each.rb +9 -7
  161. data/lib/puppet/functions/type.rb +4 -4
  162. data/lib/puppet/functions/unwrap.rb +2 -17
  163. data/lib/puppet/functions/upcase.rb +2 -2
  164. data/lib/puppet/functions/versioncmp.rb +2 -6
  165. data/lib/puppet/generate/models/type/type.rb +4 -1
  166. data/lib/puppet/generate/type.rb +0 -9
  167. data/lib/puppet/http/client.rb +165 -115
  168. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  169. data/lib/puppet/http/errors.rb +16 -0
  170. data/lib/puppet/http/external_client.rb +5 -7
  171. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  172. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  173. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  174. data/lib/puppet/http/proxy.rb +137 -0
  175. data/lib/puppet/http/redirector.rb +4 -17
  176. data/lib/puppet/http/resolver/server_list.rb +10 -25
  177. data/lib/puppet/http/resolver/settings.rb +4 -7
  178. data/lib/puppet/http/resolver/srv.rb +7 -11
  179. data/lib/puppet/http/resolver.rb +5 -15
  180. data/lib/puppet/http/response.rb +36 -54
  181. data/lib/puppet/http/response_converter.rb +24 -0
  182. data/lib/puppet/http/response_net_http.rb +42 -0
  183. data/lib/puppet/http/retry_after_handler.rb +4 -13
  184. data/lib/puppet/http/service/ca.rb +11 -22
  185. data/lib/puppet/http/service/compiler.rb +23 -144
  186. data/lib/puppet/http/service/file_server.rb +19 -29
  187. data/lib/puppet/http/service/puppetserver.rb +26 -12
  188. data/lib/puppet/http/service/report.rb +8 -10
  189. data/lib/puppet/http/service.rb +12 -26
  190. data/lib/puppet/http/session.rb +11 -20
  191. data/lib/puppet/{network/http → http}/site.rb +1 -2
  192. data/lib/puppet/http.rb +22 -13
  193. data/lib/puppet/indirector/catalog/compiler.rb +6 -25
  194. data/lib/puppet/indirector/catalog/rest.rb +2 -5
  195. data/lib/puppet/indirector/facts/facter.rb +6 -6
  196. data/lib/puppet/indirector/facts/rest.rb +3 -22
  197. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  198. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  199. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  200. data/lib/puppet/indirector/file_server.rb +1 -8
  201. data/lib/puppet/indirector/generic_http.rb +0 -11
  202. data/lib/puppet/indirector/indirection.rb +1 -1
  203. data/lib/puppet/indirector/node/rest.rb +2 -4
  204. data/lib/puppet/indirector/report/rest.rb +3 -8
  205. data/lib/puppet/indirector/request.rb +0 -101
  206. data/lib/puppet/indirector/resource/ral.rb +1 -6
  207. data/lib/puppet/indirector/rest.rb +12 -263
  208. data/lib/puppet/indirector/terminus.rb +0 -4
  209. data/lib/puppet/interface/documentation.rb +0 -1
  210. data/lib/puppet/module/plan.rb +1 -0
  211. data/lib/puppet/module/task.rb +1 -1
  212. data/lib/puppet/module.rb +0 -1
  213. data/lib/puppet/module_tool/applications/installer.rb +2 -56
  214. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  215. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  216. data/lib/puppet/module_tool/applications.rb +0 -1
  217. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  218. data/lib/puppet/network/authconfig.rb +2 -96
  219. data/lib/puppet/network/authorization.rb +13 -35
  220. data/lib/puppet/network/formats.rb +0 -67
  221. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  222. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  223. data/lib/puppet/network/http/connection.rb +247 -316
  224. data/lib/puppet/network/http/handler.rb +0 -1
  225. data/lib/puppet/network/http.rb +3 -3
  226. data/lib/puppet/network/http_pool.rb +16 -34
  227. data/lib/puppet/node/environment.rb +11 -10
  228. data/lib/puppet/node.rb +2 -31
  229. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  230. data/lib/puppet/pal/pal_impl.rb +4 -2
  231. data/lib/puppet/parser/ast/leaf.rb +2 -3
  232. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  233. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  234. data/lib/puppet/parser/compiler.rb +0 -198
  235. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  236. data/lib/puppet/parser/resource.rb +1 -70
  237. data/lib/puppet/parser/scope.rb +0 -1
  238. data/lib/puppet/parser/templatewrapper.rb +1 -2
  239. data/lib/puppet/pops/evaluator/closure.rb +5 -7
  240. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  241. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  242. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -4
  243. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  244. data/lib/puppet/pops/issues.rb +0 -5
  245. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  246. data/lib/puppet/pops/lookup/lookup_adapter.rb +2 -3
  247. data/lib/puppet/pops/model/ast.pp +0 -42
  248. data/lib/puppet/pops/model/ast.rb +0 -291
  249. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  250. data/lib/puppet/pops/model/factory.rb +1 -47
  251. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  252. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  253. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  254. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  255. data/lib/puppet/pops/parser/egrammar.ra +0 -58
  256. data/lib/puppet/pops/parser/eparser.rb +1685 -1896
  257. data/lib/puppet/pops/parser/lexer2.rb +91 -92
  258. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  259. data/lib/puppet/pops/parser/slurp_support.rb +0 -1
  260. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  261. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  262. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  263. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  264. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  265. data/lib/puppet/pops/types/type_formatter.rb +3 -4
  266. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  267. data/lib/puppet/pops/types/type_parser.rb +0 -4
  268. data/lib/puppet/pops/types/types.rb +1 -2
  269. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  270. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  271. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  272. data/lib/puppet/property/list.rb +1 -1
  273. data/lib/puppet/provider/aix_object.rb +1 -1
  274. data/lib/puppet/provider/exec/posix.rb +4 -16
  275. data/lib/puppet/provider/group/groupadd.rb +10 -18
  276. data/lib/puppet/provider/nameservice.rb +0 -18
  277. data/lib/puppet/provider/package/apt.rb +2 -34
  278. data/lib/puppet/provider/package/aptitude.rb +0 -6
  279. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  280. data/lib/puppet/provider/package/dpkg.rb +0 -10
  281. data/lib/puppet/provider/package/gem.rb +23 -3
  282. data/lib/puppet/provider/package/nim.rb +6 -11
  283. data/lib/puppet/provider/package/pip.rb +3 -16
  284. data/lib/puppet/provider/package/pkg.rb +2 -23
  285. data/lib/puppet/provider/package/portage.rb +1 -1
  286. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  287. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  288. data/lib/puppet/provider/package/yum.rb +1 -1
  289. data/lib/puppet/provider/parsedfile.rb +0 -3
  290. data/lib/puppet/provider/service/base.rb +1 -1
  291. data/lib/puppet/provider/service/debian.rb +0 -2
  292. data/lib/puppet/provider/service/init.rb +9 -10
  293. data/lib/puppet/provider/service/launchd.rb +2 -2
  294. data/lib/puppet/provider/service/redhat.rb +1 -1
  295. data/lib/puppet/provider/service/smf.rb +194 -76
  296. data/lib/puppet/provider/service/systemd.rb +6 -16
  297. data/lib/puppet/provider/service/upstart.rb +5 -5
  298. data/lib/puppet/provider/service/windows.rb +0 -38
  299. data/lib/puppet/provider/user/aix.rb +3 -46
  300. data/lib/puppet/provider/user/directoryservice.rb +11 -34
  301. data/lib/puppet/provider/user/useradd.rb +24 -134
  302. data/lib/puppet/provider.rb +1 -14
  303. data/lib/puppet/reference/configuration.rb +8 -7
  304. data/lib/puppet/reference/indirection.rb +1 -1
  305. data/lib/puppet/reference/providers.rb +2 -2
  306. data/lib/puppet/resource/catalog.rb +2 -15
  307. data/lib/puppet/resource/type.rb +3 -119
  308. data/lib/puppet/resource/type_collection.rb +3 -49
  309. data/lib/puppet/resource.rb +6 -127
  310. data/lib/puppet/runtime.rb +2 -13
  311. data/lib/puppet/settings/environment_conf.rb +0 -1
  312. data/lib/puppet/settings/integer_setting.rb +17 -0
  313. data/lib/puppet/settings/port_setting.rb +15 -0
  314. data/lib/puppet/settings/priority_setting.rb +5 -4
  315. data/lib/puppet/settings.rb +82 -98
  316. data/lib/puppet/ssl/base.rb +3 -5
  317. data/lib/puppet/ssl/certificate.rb +0 -6
  318. data/lib/puppet/ssl/certificate_request.rb +1 -12
  319. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  320. data/lib/puppet/ssl/oids.rb +3 -1
  321. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  322. data/lib/puppet/ssl/state_machine.rb +3 -1
  323. data/lib/puppet/ssl/verifier.rb +2 -6
  324. data/lib/puppet/ssl.rb +10 -6
  325. data/lib/puppet/test/test_helper.rb +2 -7
  326. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  327. data/lib/puppet/transaction/persistence.rb +1 -21
  328. data/lib/puppet/transaction/report.rb +3 -19
  329. data/lib/puppet/transaction.rb +1 -7
  330. data/lib/puppet/type/exec.rb +5 -35
  331. data/lib/puppet/type/file/checksum.rb +1 -1
  332. data/lib/puppet/type/file/data_sync.rb +1 -1
  333. data/lib/puppet/type/file/mode.rb +0 -6
  334. data/lib/puppet/type/file/selcontext.rb +1 -1
  335. data/lib/puppet/type/file/source.rb +1 -1
  336. data/lib/puppet/type/file.rb +12 -32
  337. data/lib/puppet/type/filebucket.rb +4 -4
  338. data/lib/puppet/type/group.rb +1 -0
  339. data/lib/puppet/type/package.rb +8 -16
  340. data/lib/puppet/type/resources.rb +1 -1
  341. data/lib/puppet/type/service.rb +41 -26
  342. data/lib/puppet/type/tidy.rb +3 -22
  343. data/lib/puppet/type/user.rb +13 -32
  344. data/lib/puppet/type.rb +1 -77
  345. data/lib/puppet/util/autoload.rb +8 -1
  346. data/lib/puppet/util/command_line.rb +1 -1
  347. data/lib/puppet/util/execution.rb +0 -11
  348. data/lib/puppet/util/filetype.rb +2 -2
  349. data/lib/puppet/util/http_proxy.rb +2 -215
  350. data/lib/puppet/util/json.rb +0 -20
  351. data/lib/puppet/util/log.rb +4 -8
  352. data/lib/puppet/util/logging.rb +25 -1
  353. data/lib/puppet/util/monkey_patches.rb +0 -59
  354. data/lib/puppet/util/package.rb +16 -25
  355. data/lib/puppet/util/pidlock.rb +1 -1
  356. data/lib/puppet/util/posix.rb +5 -54
  357. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  358. data/lib/puppet/util/rdoc.rb +0 -7
  359. data/lib/puppet/util/retry_action.rb +1 -1
  360. data/lib/puppet/util/run_mode.rb +9 -1
  361. data/lib/puppet/util/selinux.rb +4 -30
  362. data/lib/puppet/util/suidmanager.rb +2 -1
  363. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  364. data/lib/puppet/util/tagging.rb +0 -1
  365. data/lib/puppet/util/windows/adsi.rb +0 -46
  366. data/lib/puppet/util/windows/daemon.rb +360 -0
  367. data/lib/puppet/util/windows/error.rb +1 -0
  368. data/lib/puppet/util/windows/eventlog.rb +4 -9
  369. data/lib/puppet/util/windows/file.rb +8 -242
  370. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  371. data/lib/puppet/util/windows/principal.rb +2 -9
  372. data/lib/puppet/util/windows/process.rb +4 -226
  373. data/lib/puppet/util/windows/service.rb +11 -457
  374. data/lib/puppet/util/windows/sid.rb +2 -6
  375. data/lib/puppet/util/windows/string.rb +12 -13
  376. data/lib/puppet/util/windows/user.rb +2 -0
  377. data/lib/puppet/util/windows.rb +3 -11
  378. data/lib/puppet/util/yaml.rb +1 -42
  379. data/lib/puppet/util.rb +3 -4
  380. data/lib/puppet/vendor/require_vendored.rb +0 -1
  381. data/lib/puppet/version.rb +1 -1
  382. data/lib/puppet/x509/cert_provider.rb +29 -1
  383. data/lib/puppet/x509.rb +5 -1
  384. data/lib/puppet.rb +20 -26
  385. data/locales/puppet.pot +9633 -5
  386. data/man/man5/puppet.conf.5 +286 -401
  387. data/man/man8/puppet-agent.8 +2 -5
  388. data/man/man8/puppet-apply.8 +2 -2
  389. data/man/man8/puppet-catalog.8 +9 -9
  390. data/man/man8/puppet-config.8 +1 -1
  391. data/man/man8/puppet-describe.8 +1 -1
  392. data/man/man8/puppet-device.8 +2 -2
  393. data/man/man8/puppet-doc.8 +1 -1
  394. data/man/man8/puppet-epp.8 +1 -1
  395. data/man/man8/puppet-facts.8 +8 -51
  396. data/man/man8/puppet-filebucket.8 +4 -4
  397. data/man/man8/puppet-generate.8 +1 -1
  398. data/man/man8/puppet-help.8 +1 -1
  399. data/man/man8/puppet-lookup.8 +6 -9
  400. data/man/man8/puppet-module.8 +3 -60
  401. data/man/man8/puppet-node.8 +5 -5
  402. data/man/man8/puppet-parser.8 +1 -1
  403. data/man/man8/puppet-plugin.8 +1 -1
  404. data/man/man8/puppet-report.8 +5 -5
  405. data/man/man8/puppet-resource.8 +1 -1
  406. data/man/man8/puppet-script.8 +2 -2
  407. data/man/man8/puppet-ssl.8 +1 -5
  408. data/man/man8/puppet.8 +2 -2
  409. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  410. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  411. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  412. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  413. data/spec/fixtures/ssl/ca.pem +35 -57
  414. data/spec/fixtures/ssl/crl.pem +18 -28
  415. data/spec/fixtures/ssl/ec-key.pem +11 -11
  416. data/spec/fixtures/ssl/ec.pem +24 -33
  417. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  418. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  419. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  420. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  421. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  422. data/spec/fixtures/ssl/intermediate.pem +36 -57
  423. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  424. data/spec/fixtures/ssl/pluto.pem +30 -52
  425. data/spec/fixtures/ssl/request-key.pem +57 -107
  426. data/spec/fixtures/ssl/request.pem +26 -47
  427. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  428. data/spec/fixtures/ssl/revoked.pem +30 -52
  429. data/spec/fixtures/ssl/signed-key.pem +57 -107
  430. data/spec/fixtures/ssl/signed.pem +30 -52
  431. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  432. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  433. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  434. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  435. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  436. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  437. data/spec/fixtures/unit/forge/bacula.json +1 -1
  438. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  439. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  440. data/spec/integration/application/agent_spec.rb +51 -299
  441. data/spec/integration/application/apply_spec.rb +1 -20
  442. data/spec/integration/application/filebucket_spec.rb +16 -32
  443. data/spec/integration/application/help_spec.rb +2 -0
  444. data/spec/integration/application/lookup_spec.rb +6 -32
  445. data/spec/integration/application/module_spec.rb +0 -21
  446. data/spec/integration/application/plugin_spec.rb +24 -2
  447. data/spec/integration/configurer_spec.rb +2 -18
  448. data/spec/integration/defaults_spec.rb +14 -3
  449. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  450. data/spec/integration/http/client_spec.rb +0 -12
  451. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  452. data/spec/integration/indirector/facts/facter_spec.rb +39 -93
  453. data/spec/integration/network/http_pool_spec.rb +3 -21
  454. data/spec/integration/parser/catalog_spec.rb +0 -38
  455. data/spec/integration/parser/node_spec.rb +0 -9
  456. data/spec/integration/parser/pcore_resource_spec.rb +0 -47
  457. data/spec/integration/resource/type_collection_spec.rb +6 -2
  458. data/spec/integration/transaction/report_spec.rb +1 -1
  459. data/spec/integration/transaction_spec.rb +9 -4
  460. data/spec/integration/type/exec_spec.rb +45 -70
  461. data/spec/integration/type/file_spec.rb +7 -6
  462. data/spec/integration/type/package_spec.rb +6 -6
  463. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  464. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  465. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  466. data/spec/integration/util/windows/principal_spec.rb +0 -21
  467. data/spec/integration/util/windows/process_spec.rb +9 -1
  468. data/spec/integration/util/windows/registry_spec.rb +10 -6
  469. data/spec/integration/util/windows/security_spec.rb +1 -1
  470. data/spec/lib/matchers/include.rb +27 -0
  471. data/spec/lib/matchers/include_spec.rb +32 -0
  472. data/spec/lib/puppet/test_ca.rb +2 -7
  473. data/spec/lib/puppet_spec/modules.rb +2 -13
  474. data/spec/lib/puppet_spec/puppetserver.rb +1 -16
  475. data/spec/lib/puppet_spec/settings.rb +1 -1
  476. data/spec/shared_behaviours/documentation_on_faces.rb +2 -0
  477. data/spec/spec_helper.rb +17 -13
  478. data/spec/unit/agent_spec.rb +6 -10
  479. data/spec/unit/application/agent_spec.rb +3 -7
  480. data/spec/unit/application/apply_spec.rb +56 -76
  481. data/spec/unit/application/facts_spec.rb +12 -456
  482. data/spec/unit/application/filebucket_spec.rb +43 -39
  483. data/spec/unit/application/lookup_spec.rb +10 -131
  484. data/spec/unit/application/resource_spec.rb +0 -29
  485. data/spec/unit/application/ssl_spec.rb +2 -25
  486. data/spec/unit/application_spec.rb +9 -51
  487. data/spec/unit/certificate_factory_spec.rb +1 -1
  488. data/spec/unit/configurer/downloader_spec.rb +6 -8
  489. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  490. data/spec/unit/configurer_spec.rb +68 -296
  491. data/spec/unit/confine/feature_spec.rb +1 -1
  492. data/spec/unit/confine_spec.rb +2 -8
  493. data/spec/unit/context/trusted_information_spec.rb +2 -6
  494. data/spec/unit/defaults_spec.rb +68 -55
  495. data/spec/unit/environments_spec.rb +68 -408
  496. data/spec/unit/face/generate_spec.rb +0 -64
  497. data/spec/unit/face/node_spec.rb +11 -0
  498. data/spec/unit/face/plugin_spec.rb +73 -33
  499. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  500. data/spec/unit/file_bucket/file_spec.rb +1 -1
  501. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -41
  502. data/spec/unit/file_serving/configuration_spec.rb +10 -26
  503. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  504. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  505. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  506. data/spec/unit/file_system_spec.rb +4 -56
  507. data/spec/unit/forge/module_release_spec.rb +10 -5
  508. data/spec/unit/functions/assert_type_spec.rb +1 -1
  509. data/spec/unit/functions/camelcase_spec.rb +1 -1
  510. data/spec/unit/functions/capitalize_spec.rb +1 -1
  511. data/spec/unit/functions/downcase_spec.rb +1 -1
  512. data/spec/unit/functions/empty_spec.rb +0 -10
  513. data/spec/unit/functions/logging_spec.rb +0 -1
  514. data/spec/unit/functions/lookup_spec.rb +0 -64
  515. data/spec/unit/functions/unwrap_spec.rb +0 -8
  516. data/spec/unit/functions/upcase_spec.rb +1 -1
  517. data/spec/unit/functions/versioncmp_spec.rb +4 -40
  518. data/spec/unit/functions4_spec.rb +2 -2
  519. data/spec/unit/gettext/config_spec.rb +0 -12
  520. data/spec/unit/http/client_spec.rb +8 -66
  521. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  522. data/spec/unit/http/external_client_spec.rb +4 -4
  523. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  524. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  525. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  526. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  527. data/spec/unit/http/resolver_spec.rb +13 -13
  528. data/spec/unit/http/service/compiler_spec.rb +0 -193
  529. data/spec/unit/http/service/file_server_spec.rb +3 -3
  530. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  531. data/spec/unit/http/service_spec.rb +0 -1
  532. data/spec/unit/http/session_spec.rb +16 -14
  533. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  534. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -101
  535. data/spec/unit/indirector/catalog/rest_spec.rb +0 -8
  536. data/spec/unit/indirector/face_spec.rb +1 -0
  537. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  538. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  539. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  540. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  541. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  542. data/spec/unit/indirector/file_server_spec.rb +1 -15
  543. data/spec/unit/indirector/indirection_spec.rb +15 -18
  544. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  545. data/spec/unit/indirector/request_spec.rb +0 -264
  546. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  547. data/spec/unit/indirector/rest_spec.rb +98 -752
  548. data/spec/unit/indirector/store_configs_spec.rb +7 -0
  549. data/spec/unit/indirector_spec.rb +2 -2
  550. data/spec/unit/interface/action_spec.rb +9 -0
  551. data/spec/unit/module_spec.rb +1 -15
  552. data/spec/unit/module_tool/applications/installer_spec.rb +0 -105
  553. data/spec/unit/network/authconfig_spec.rb +2 -129
  554. data/spec/unit/network/authorization_spec.rb +2 -55
  555. data/spec/unit/network/formats_spec.rb +4 -51
  556. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  557. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  558. data/spec/unit/network/http/api_spec.rb +10 -0
  559. data/spec/unit/network/http/connection_spec.rb +19 -41
  560. data/spec/unit/network/http/handler_spec.rb +0 -1
  561. data/spec/unit/network/http_pool_spec.rb +0 -4
  562. data/spec/unit/node/environment_spec.rb +33 -21
  563. data/spec/unit/node_spec.rb +2 -60
  564. data/spec/unit/parser/compiler_spec.rb +19 -3
  565. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  566. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  567. data/spec/unit/parser/resource_spec.rb +8 -14
  568. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  569. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  570. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  571. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  572. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  573. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  574. data/spec/unit/pops/parser/parse_containers_spec.rb +13 -2
  575. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  576. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  577. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  578. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -5
  579. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  580. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  581. data/spec/unit/pops/types/type_calculator_spec.rb +6 -12
  582. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  583. data/spec/unit/pops/validator/validator_spec.rb +61 -51
  584. data/spec/unit/pops/visitor_spec.rb +1 -1
  585. data/spec/unit/property_spec.rb +0 -1
  586. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  587. data/spec/unit/provider/nameservice_spec.rb +64 -122
  588. data/spec/unit/provider/package/apt_spec.rb +23 -28
  589. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  590. data/spec/unit/provider/package/base_spec.rb +5 -6
  591. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  592. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  593. data/spec/unit/provider/package/gem_spec.rb +33 -1
  594. data/spec/unit/provider/package/nim_spec.rb +0 -42
  595. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  596. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  597. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  598. data/spec/unit/provider/package/pip_spec.rb +12 -44
  599. data/spec/unit/provider/package/pkg_spec.rb +4 -29
  600. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  601. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -3
  602. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  603. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  604. data/spec/unit/provider/service/gentoo_spec.rb +5 -6
  605. data/spec/unit/provider/service/init_spec.rb +9 -16
  606. data/spec/unit/provider/service/launchd_spec.rb +0 -11
  607. data/spec/unit/provider/service/openwrt_spec.rb +29 -23
  608. data/spec/unit/provider/service/redhat_spec.rb +2 -3
  609. data/spec/unit/provider/service/smf_spec.rb +401 -165
  610. data/spec/unit/provider/service/systemd_spec.rb +9 -54
  611. data/spec/unit/provider/service/windows_spec.rb +0 -203
  612. data/spec/unit/provider/user/aix_spec.rb +0 -105
  613. data/spec/unit/provider/user/directoryservice_spec.rb +36 -68
  614. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  615. data/spec/unit/provider/user/pw_spec.rb +0 -2
  616. data/spec/unit/provider/user/useradd_spec.rb +5 -114
  617. data/spec/unit/provider_spec.rb +12 -22
  618. data/spec/unit/puppet_spec.rb +4 -12
  619. data/spec/unit/resource/catalog_spec.rb +2 -15
  620. data/spec/unit/resource/type_collection_spec.rb +2 -22
  621. data/spec/unit/resource/type_spec.rb +1 -1
  622. data/spec/unit/resource_spec.rb +12 -125
  623. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  624. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  625. data/spec/unit/settings/port_setting_spec.rb +31 -0
  626. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  627. data/spec/unit/settings_spec.rb +79 -110
  628. data/spec/unit/ssl/base_spec.rb +37 -3
  629. data/spec/unit/ssl/certificate_request_spec.rb +21 -45
  630. data/spec/unit/ssl/certificate_spec.rb +2 -11
  631. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  632. data/spec/unit/ssl/state_machine_spec.rb +5 -20
  633. data/spec/unit/ssl/verifier_spec.rb +0 -21
  634. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  635. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  636. data/spec/unit/transaction/persistence_spec.rb +0 -51
  637. data/spec/unit/transaction/report_spec.rb +0 -2
  638. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  639. data/spec/unit/transaction_spec.rb +55 -96
  640. data/spec/unit/type/exec_spec.rb +29 -76
  641. data/spec/unit/type/file/checksum_spec.rb +6 -6
  642. data/spec/unit/type/file/content_spec.rb +2 -1
  643. data/spec/unit/type/file/ensure_spec.rb +1 -1
  644. data/spec/unit/type/file/mode_spec.rb +1 -1
  645. data/spec/unit/type/file/selinux_spec.rb +5 -3
  646. data/spec/unit/type/file/source_spec.rb +4 -5
  647. data/spec/unit/type/file_spec.rb +18 -6
  648. data/spec/unit/type/group_spec.rb +6 -13
  649. data/spec/unit/type/package_spec.rb +1 -1
  650. data/spec/unit/type/resources_spec.rb +7 -7
  651. data/spec/unit/type/service_spec.rb +189 -87
  652. data/spec/unit/type/tidy_spec.rb +8 -24
  653. data/spec/unit/type_spec.rb +24 -4
  654. data/spec/unit/util/at_fork_spec.rb +2 -2
  655. data/spec/unit/util/autoload_spec.rb +1 -5
  656. data/spec/unit/util/backups_spec.rb +2 -3
  657. data/spec/unit/util/execution_spec.rb +11 -44
  658. data/spec/unit/util/inifile_spec.rb +14 -6
  659. data/spec/unit/util/log_spec.rb +7 -8
  660. data/spec/unit/util/logging_spec.rb +3 -5
  661. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  662. data/spec/unit/util/posix_spec.rb +15 -363
  663. data/spec/unit/util/run_mode_spec.rb +21 -121
  664. data/spec/unit/util/selinux_spec.rb +68 -163
  665. data/spec/unit/util/storage_spec.rb +1 -3
  666. data/spec/unit/util/suidmanager_spec.rb +41 -44
  667. data/spec/unit/util/windows/sid_spec.rb +0 -41
  668. data/spec/unit/util/windows/string_spec.rb +1 -3
  669. data/spec/unit/util/yaml_spec.rb +13 -92
  670. data/spec/unit/util_spec.rb +6 -31
  671. data/tasks/generate_cert_fixtures.rake +3 -12
  672. data/tasks/parallel.rake +3 -3
  673. metadata +138 -293
  674. data/conf/auth.conf +0 -150
  675. data/ext/README.md +0 -13
  676. data/lib/puppet/application/cert.rb +0 -76
  677. data/lib/puppet/application/key.rb +0 -4
  678. data/lib/puppet/application/man.rb +0 -4
  679. data/lib/puppet/application/status.rb +0 -4
  680. data/lib/puppet/face/key.rb +0 -16
  681. data/lib/puppet/face/man.rb +0 -145
  682. data/lib/puppet/face/module/build.rb +0 -14
  683. data/lib/puppet/face/module/generate.rb +0 -14
  684. data/lib/puppet/face/module/search.rb +0 -103
  685. data/lib/puppet/face/status.rb +0 -51
  686. data/lib/puppet/facter_impl.rb +0 -96
  687. data/lib/puppet/ffi/posix/constants.rb +0 -14
  688. data/lib/puppet/ffi/posix/functions.rb +0 -24
  689. data/lib/puppet/ffi/posix.rb +0 -10
  690. data/lib/puppet/file_serving/mount/scripts.rb +0 -24
  691. data/lib/puppet/indirector/certificate/file.rb +0 -9
  692. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  693. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  694. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  695. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  696. data/lib/puppet/indirector/file_content/http.rb +0 -22
  697. data/lib/puppet/indirector/key/file.rb +0 -46
  698. data/lib/puppet/indirector/key/memory.rb +0 -7
  699. data/lib/puppet/indirector/ssl_file.rb +0 -162
  700. data/lib/puppet/indirector/status/local.rb +0 -12
  701. data/lib/puppet/indirector/status/rest.rb +0 -27
  702. data/lib/puppet/indirector/status.rb +0 -3
  703. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  704. data/lib/puppet/network/auth_config_parser.rb +0 -90
  705. data/lib/puppet/network/authstore.rb +0 -283
  706. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  707. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  708. data/lib/puppet/network/http/base_pool.rb +0 -36
  709. data/lib/puppet/network/http/compression.rb +0 -127
  710. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  711. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  712. data/lib/puppet/network/rest_controller.rb +0 -2
  713. data/lib/puppet/network/rights.rb +0 -210
  714. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  715. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  716. data/lib/puppet/parser/environment_compiler.rb +0 -202
  717. data/lib/puppet/pops/types/enumeration.rb +0 -16
  718. data/lib/puppet/resource/capability_finder.rb +0 -154
  719. data/lib/puppet/rest/errors.rb +0 -15
  720. data/lib/puppet/rest/response.rb +0 -35
  721. data/lib/puppet/rest/route.rb +0 -85
  722. data/lib/puppet/rest/routes.rb +0 -135
  723. data/lib/puppet/settings/alias_setting.rb +0 -37
  724. data/lib/puppet/ssl/host.rb +0 -505
  725. data/lib/puppet/ssl/key.rb +0 -61
  726. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  727. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  728. data/lib/puppet/ssl/validator.rb +0 -61
  729. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  730. data/lib/puppet/status.rb +0 -40
  731. data/lib/puppet/util/connection.rb +0 -88
  732. data/lib/puppet/util/fact_dif.rb +0 -81
  733. data/lib/puppet/util/ssl.rb +0 -83
  734. data/lib/puppet/util/windows/api_types.rb +0 -309
  735. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  736. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  737. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  738. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  739. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  740. data/lib/puppet/vendor/pathspec/README.md +0 -53
  741. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  742. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  743. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  744. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  745. data/man/man8/puppet-key.8 +0 -126
  746. data/man/man8/puppet-man.8 +0 -76
  747. data/man/man8/puppet-status.8 +0 -108
  748. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  749. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  750. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  751. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  752. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  753. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  754. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  755. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  756. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  757. data/spec/fixtures/ssl/oid-key.pem +0 -117
  758. data/spec/fixtures/ssl/oid.pem +0 -69
  759. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  760. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  761. data/spec/integration/application/resource_spec.rb +0 -64
  762. data/spec/integration/application/ssl_spec.rb +0 -20
  763. data/spec/integration/l10n/compiler_spec.rb +0 -37
  764. data/spec/integration/network/authconfig_spec.rb +0 -256
  765. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  766. data/spec/shared_contexts/l10n.rb +0 -32
  767. data/spec/unit/application/man_spec.rb +0 -52
  768. data/spec/unit/capability_spec.rb +0 -414
  769. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  770. data/spec/unit/face/key_spec.rb +0 -9
  771. data/spec/unit/face/module/search_spec.rb +0 -231
  772. data/spec/unit/face/status_spec.rb +0 -9
  773. data/spec/unit/facter_impl_spec.rb +0 -31
  774. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  775. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  776. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  777. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  778. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  779. data/spec/unit/indirector/key/file_spec.rb +0 -78
  780. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  781. data/spec/unit/indirector/status/local_spec.rb +0 -10
  782. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  783. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  784. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  785. data/spec/unit/network/authstore_spec.rb +0 -407
  786. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  787. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  788. data/spec/unit/network/http/compression_spec.rb +0 -240
  789. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  790. data/spec/unit/network/http_spec.rb +0 -9
  791. data/spec/unit/network/rights_spec.rb +0 -439
  792. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  793. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  794. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  795. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  796. data/spec/unit/rest/route_spec.rb +0 -132
  797. data/spec/unit/ssl/host_spec.rb +0 -645
  798. data/spec/unit/ssl/key_spec.rb +0 -173
  799. data/spec/unit/ssl/validator_spec.rb +0 -278
  800. data/spec/unit/status_spec.rb +0 -45
  801. data/spec/unit/util/json_spec.rb +0 -126
  802. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -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