puppet 6.27.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 (804) 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 +51 -70
  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 -74
  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 -183
  117. data/lib/puppet/confine/variable.rb +1 -1
  118. data/lib/puppet/defaults.rb +130 -244
  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/next.rb +1 -18
  157. data/lib/puppet/functions/partition.rb +4 -12
  158. data/lib/puppet/functions/require.rb +5 -5
  159. data/lib/puppet/functions/sort.rb +3 -3
  160. data/lib/puppet/functions/strftime.rb +0 -1
  161. data/lib/puppet/functions/tree_each.rb +10 -7
  162. data/lib/puppet/functions/type.rb +4 -4
  163. data/lib/puppet/functions/unwrap.rb +2 -17
  164. data/lib/puppet/functions/upcase.rb +2 -2
  165. data/lib/puppet/functions/versioncmp.rb +2 -6
  166. data/lib/puppet/generate/models/type/type.rb +4 -1
  167. data/lib/puppet/generate/type.rb +0 -9
  168. data/lib/puppet/http/client.rb +165 -115
  169. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  170. data/lib/puppet/http/errors.rb +16 -0
  171. data/lib/puppet/http/external_client.rb +5 -7
  172. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  173. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  174. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  175. data/lib/puppet/http/proxy.rb +137 -0
  176. data/lib/puppet/http/redirector.rb +4 -17
  177. data/lib/puppet/http/resolver/server_list.rb +10 -25
  178. data/lib/puppet/http/resolver/settings.rb +4 -7
  179. data/lib/puppet/http/resolver/srv.rb +7 -11
  180. data/lib/puppet/http/resolver.rb +5 -15
  181. data/lib/puppet/http/response.rb +36 -54
  182. data/lib/puppet/http/response_converter.rb +24 -0
  183. data/lib/puppet/http/response_net_http.rb +42 -0
  184. data/lib/puppet/http/retry_after_handler.rb +4 -13
  185. data/lib/puppet/http/service/ca.rb +11 -22
  186. data/lib/puppet/http/service/compiler.rb +23 -144
  187. data/lib/puppet/http/service/file_server.rb +19 -29
  188. data/lib/puppet/http/service/puppetserver.rb +26 -12
  189. data/lib/puppet/http/service/report.rb +8 -10
  190. data/lib/puppet/http/service.rb +12 -26
  191. data/lib/puppet/http/session.rb +11 -20
  192. data/lib/puppet/{network/http → http}/site.rb +1 -2
  193. data/lib/puppet/http.rb +22 -13
  194. data/lib/puppet/indirector/catalog/compiler.rb +6 -25
  195. data/lib/puppet/indirector/catalog/rest.rb +2 -5
  196. data/lib/puppet/indirector/facts/facter.rb +6 -6
  197. data/lib/puppet/indirector/facts/rest.rb +3 -22
  198. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  199. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  200. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  201. data/lib/puppet/indirector/file_server.rb +1 -8
  202. data/lib/puppet/indirector/generic_http.rb +0 -11
  203. data/lib/puppet/indirector/indirection.rb +1 -1
  204. data/lib/puppet/indirector/node/rest.rb +2 -4
  205. data/lib/puppet/indirector/report/rest.rb +3 -8
  206. data/lib/puppet/indirector/request.rb +0 -101
  207. data/lib/puppet/indirector/resource/ral.rb +1 -6
  208. data/lib/puppet/indirector/rest.rb +12 -263
  209. data/lib/puppet/indirector/terminus.rb +0 -4
  210. data/lib/puppet/interface/documentation.rb +0 -1
  211. data/lib/puppet/module/plan.rb +1 -0
  212. data/lib/puppet/module/task.rb +1 -1
  213. data/lib/puppet/module.rb +0 -1
  214. data/lib/puppet/module_tool/applications/installer.rb +2 -56
  215. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  216. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  217. data/lib/puppet/module_tool/applications.rb +0 -1
  218. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  219. data/lib/puppet/network/authconfig.rb +2 -96
  220. data/lib/puppet/network/authorization.rb +13 -35
  221. data/lib/puppet/network/formats.rb +0 -67
  222. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  223. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  224. data/lib/puppet/network/http/connection.rb +247 -316
  225. data/lib/puppet/network/http/handler.rb +0 -1
  226. data/lib/puppet/network/http.rb +3 -3
  227. data/lib/puppet/network/http_pool.rb +16 -34
  228. data/lib/puppet/node/environment.rb +11 -10
  229. data/lib/puppet/node.rb +2 -31
  230. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  231. data/lib/puppet/pal/pal_impl.rb +4 -2
  232. data/lib/puppet/parser/ast/leaf.rb +2 -3
  233. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  234. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  235. data/lib/puppet/parser/compiler.rb +0 -198
  236. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  237. data/lib/puppet/parser/resource.rb +1 -70
  238. data/lib/puppet/parser/scope.rb +0 -1
  239. data/lib/puppet/parser/templatewrapper.rb +1 -2
  240. data/lib/puppet/pops/evaluator/closure.rb +5 -7
  241. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  242. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  243. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -4
  244. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  245. data/lib/puppet/pops/issues.rb +0 -5
  246. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  247. data/lib/puppet/pops/lookup/lookup_adapter.rb +2 -3
  248. data/lib/puppet/pops/model/ast.pp +0 -42
  249. data/lib/puppet/pops/model/ast.rb +0 -291
  250. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  251. data/lib/puppet/pops/model/factory.rb +1 -47
  252. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  253. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  254. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  255. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  256. data/lib/puppet/pops/parser/egrammar.ra +0 -58
  257. data/lib/puppet/pops/parser/eparser.rb +1685 -1896
  258. data/lib/puppet/pops/parser/lexer2.rb +91 -92
  259. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  260. data/lib/puppet/pops/parser/slurp_support.rb +0 -1
  261. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  262. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  263. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  264. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  265. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  266. data/lib/puppet/pops/types/type_formatter.rb +3 -4
  267. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  268. data/lib/puppet/pops/types/type_parser.rb +0 -4
  269. data/lib/puppet/pops/types/types.rb +1 -2
  270. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  271. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  272. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  273. data/lib/puppet/property/list.rb +1 -1
  274. data/lib/puppet/provider/aix_object.rb +1 -1
  275. data/lib/puppet/provider/exec/posix.rb +4 -16
  276. data/lib/puppet/provider/group/groupadd.rb +10 -18
  277. data/lib/puppet/provider/nameservice.rb +0 -18
  278. data/lib/puppet/provider/package/apt.rb +2 -34
  279. data/lib/puppet/provider/package/aptitude.rb +0 -6
  280. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  281. data/lib/puppet/provider/package/dpkg.rb +0 -10
  282. data/lib/puppet/provider/package/gem.rb +23 -3
  283. data/lib/puppet/provider/package/nim.rb +6 -11
  284. data/lib/puppet/provider/package/pip.rb +3 -16
  285. data/lib/puppet/provider/package/pkg.rb +2 -23
  286. data/lib/puppet/provider/package/portage.rb +1 -1
  287. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  288. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  289. data/lib/puppet/provider/package/yum.rb +1 -1
  290. data/lib/puppet/provider/parsedfile.rb +0 -3
  291. data/lib/puppet/provider/service/base.rb +1 -1
  292. data/lib/puppet/provider/service/debian.rb +0 -2
  293. data/lib/puppet/provider/service/init.rb +9 -10
  294. data/lib/puppet/provider/service/launchd.rb +2 -2
  295. data/lib/puppet/provider/service/redhat.rb +1 -1
  296. data/lib/puppet/provider/service/smf.rb +194 -76
  297. data/lib/puppet/provider/service/systemd.rb +6 -16
  298. data/lib/puppet/provider/service/upstart.rb +5 -5
  299. data/lib/puppet/provider/service/windows.rb +0 -38
  300. data/lib/puppet/provider/user/aix.rb +3 -46
  301. data/lib/puppet/provider/user/directoryservice.rb +11 -34
  302. data/lib/puppet/provider/user/useradd.rb +24 -134
  303. data/lib/puppet/provider.rb +1 -14
  304. data/lib/puppet/reference/configuration.rb +8 -7
  305. data/lib/puppet/reference/indirection.rb +1 -1
  306. data/lib/puppet/reference/providers.rb +2 -2
  307. data/lib/puppet/resource/catalog.rb +2 -15
  308. data/lib/puppet/resource/type.rb +3 -119
  309. data/lib/puppet/resource/type_collection.rb +3 -49
  310. data/lib/puppet/resource.rb +6 -127
  311. data/lib/puppet/runtime.rb +2 -13
  312. data/lib/puppet/settings/environment_conf.rb +0 -1
  313. data/lib/puppet/settings/integer_setting.rb +17 -0
  314. data/lib/puppet/settings/port_setting.rb +15 -0
  315. data/lib/puppet/settings/priority_setting.rb +5 -4
  316. data/lib/puppet/settings.rb +82 -98
  317. data/lib/puppet/ssl/base.rb +3 -5
  318. data/lib/puppet/ssl/certificate.rb +0 -6
  319. data/lib/puppet/ssl/certificate_request.rb +1 -12
  320. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  321. data/lib/puppet/ssl/oids.rb +3 -1
  322. data/lib/puppet/ssl/ssl_provider.rb +24 -10
  323. data/lib/puppet/ssl/state_machine.rb +3 -1
  324. data/lib/puppet/ssl/verifier.rb +2 -6
  325. data/lib/puppet/ssl.rb +10 -6
  326. data/lib/puppet/test/test_helper.rb +2 -7
  327. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  328. data/lib/puppet/transaction/persistence.rb +1 -21
  329. data/lib/puppet/transaction/report.rb +3 -19
  330. data/lib/puppet/transaction.rb +1 -7
  331. data/lib/puppet/type/exec.rb +6 -36
  332. data/lib/puppet/type/file/checksum.rb +1 -1
  333. data/lib/puppet/type/file/data_sync.rb +1 -1
  334. data/lib/puppet/type/file/mode.rb +0 -6
  335. data/lib/puppet/type/file/selcontext.rb +1 -1
  336. data/lib/puppet/type/file/source.rb +1 -1
  337. data/lib/puppet/type/file.rb +12 -32
  338. data/lib/puppet/type/filebucket.rb +4 -4
  339. data/lib/puppet/type/group.rb +1 -0
  340. data/lib/puppet/type/package.rb +8 -16
  341. data/lib/puppet/type/resources.rb +1 -1
  342. data/lib/puppet/type/service.rb +41 -26
  343. data/lib/puppet/type/tidy.rb +3 -22
  344. data/lib/puppet/type/user.rb +13 -32
  345. data/lib/puppet/type.rb +1 -77
  346. data/lib/puppet/util/autoload.rb +8 -1
  347. data/lib/puppet/util/command_line.rb +1 -1
  348. data/lib/puppet/util/execution.rb +0 -11
  349. data/lib/puppet/util/filetype.rb +2 -2
  350. data/lib/puppet/util/http_proxy.rb +2 -215
  351. data/lib/puppet/util/json.rb +0 -20
  352. data/lib/puppet/util/log.rb +4 -8
  353. data/lib/puppet/util/logging.rb +25 -1
  354. data/lib/puppet/util/monkey_patches.rb +2 -59
  355. data/lib/puppet/util/package.rb +16 -25
  356. data/lib/puppet/util/pidlock.rb +1 -1
  357. data/lib/puppet/util/posix.rb +5 -54
  358. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  359. data/lib/puppet/util/rdoc.rb +0 -7
  360. data/lib/puppet/util/retry_action.rb +1 -1
  361. data/lib/puppet/util/run_mode.rb +9 -1
  362. data/lib/puppet/util/selinux.rb +4 -30
  363. data/lib/puppet/util/suidmanager.rb +2 -1
  364. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  365. data/lib/puppet/util/tagging.rb +0 -1
  366. data/lib/puppet/util/windows/adsi.rb +0 -46
  367. data/lib/puppet/util/windows/daemon.rb +360 -0
  368. data/lib/puppet/util/windows/error.rb +1 -0
  369. data/lib/puppet/util/windows/eventlog.rb +4 -9
  370. data/lib/puppet/util/windows/file.rb +8 -242
  371. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  372. data/lib/puppet/util/windows/principal.rb +2 -9
  373. data/lib/puppet/util/windows/process.rb +4 -226
  374. data/lib/puppet/util/windows/service.rb +11 -457
  375. data/lib/puppet/util/windows/sid.rb +2 -6
  376. data/lib/puppet/util/windows/string.rb +12 -13
  377. data/lib/puppet/util/windows/user.rb +2 -0
  378. data/lib/puppet/util/windows.rb +3 -11
  379. data/lib/puppet/util/yaml.rb +1 -42
  380. data/lib/puppet/util.rb +5 -5
  381. data/lib/puppet/vendor/require_vendored.rb +0 -1
  382. data/lib/puppet/version.rb +1 -1
  383. data/lib/puppet/x509/cert_provider.rb +29 -1
  384. data/lib/puppet/x509.rb +5 -1
  385. data/lib/puppet.rb +20 -26
  386. data/locales/puppet.pot +9633 -5
  387. data/man/man5/puppet.conf.5 +286 -401
  388. data/man/man8/puppet-agent.8 +2 -5
  389. data/man/man8/puppet-apply.8 +2 -2
  390. data/man/man8/puppet-catalog.8 +9 -9
  391. data/man/man8/puppet-config.8 +1 -1
  392. data/man/man8/puppet-describe.8 +1 -1
  393. data/man/man8/puppet-device.8 +2 -2
  394. data/man/man8/puppet-doc.8 +1 -1
  395. data/man/man8/puppet-epp.8 +1 -1
  396. data/man/man8/puppet-facts.8 +8 -51
  397. data/man/man8/puppet-filebucket.8 +4 -4
  398. data/man/man8/puppet-generate.8 +1 -1
  399. data/man/man8/puppet-help.8 +1 -1
  400. data/man/man8/puppet-lookup.8 +6 -9
  401. data/man/man8/puppet-module.8 +3 -60
  402. data/man/man8/puppet-node.8 +5 -5
  403. data/man/man8/puppet-parser.8 +1 -1
  404. data/man/man8/puppet-plugin.8 +1 -1
  405. data/man/man8/puppet-report.8 +5 -5
  406. data/man/man8/puppet-resource.8 +1 -1
  407. data/man/man8/puppet-script.8 +2 -2
  408. data/man/man8/puppet-ssl.8 +1 -5
  409. data/man/man8/puppet.8 +2 -2
  410. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  411. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  412. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  413. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  414. data/spec/fixtures/ssl/ca.pem +35 -57
  415. data/spec/fixtures/ssl/crl.pem +18 -28
  416. data/spec/fixtures/ssl/ec-key.pem +11 -11
  417. data/spec/fixtures/ssl/ec.pem +24 -33
  418. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  419. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  420. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  421. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  422. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  423. data/spec/fixtures/ssl/intermediate.pem +36 -57
  424. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  425. data/spec/fixtures/ssl/pluto.pem +30 -52
  426. data/spec/fixtures/ssl/request-key.pem +57 -107
  427. data/spec/fixtures/ssl/request.pem +26 -47
  428. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  429. data/spec/fixtures/ssl/revoked.pem +30 -52
  430. data/spec/fixtures/ssl/signed-key.pem +57 -107
  431. data/spec/fixtures/ssl/signed.pem +30 -52
  432. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  433. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  434. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  435. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  436. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  437. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  438. data/spec/fixtures/unit/forge/bacula.json +1 -1
  439. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  440. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  441. data/spec/integration/application/agent_spec.rb +51 -299
  442. data/spec/integration/application/apply_spec.rb +1 -20
  443. data/spec/integration/application/filebucket_spec.rb +16 -32
  444. data/spec/integration/application/help_spec.rb +2 -0
  445. data/spec/integration/application/lookup_spec.rb +50 -81
  446. data/spec/integration/application/module_spec.rb +0 -21
  447. data/spec/integration/application/plugin_spec.rb +24 -2
  448. data/spec/integration/configurer_spec.rb +2 -18
  449. data/spec/integration/defaults_spec.rb +14 -3
  450. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  451. data/spec/integration/http/client_spec.rb +0 -42
  452. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  453. data/spec/integration/indirector/facts/facter_spec.rb +39 -93
  454. data/spec/integration/network/http_pool_spec.rb +3 -21
  455. data/spec/integration/parser/catalog_spec.rb +0 -38
  456. data/spec/integration/parser/node_spec.rb +0 -9
  457. data/spec/integration/parser/pcore_resource_spec.rb +0 -47
  458. data/spec/integration/resource/type_collection_spec.rb +6 -2
  459. data/spec/integration/transaction/report_spec.rb +1 -1
  460. data/spec/integration/transaction_spec.rb +9 -4
  461. data/spec/integration/type/exec_spec.rb +45 -70
  462. data/spec/integration/type/file_spec.rb +7 -6
  463. data/spec/integration/type/package_spec.rb +6 -6
  464. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  465. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  466. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  467. data/spec/integration/util/windows/principal_spec.rb +0 -21
  468. data/spec/integration/util/windows/process_spec.rb +9 -1
  469. data/spec/integration/util/windows/registry_spec.rb +10 -6
  470. data/spec/integration/util/windows/security_spec.rb +1 -1
  471. data/spec/lib/matchers/include.rb +27 -0
  472. data/spec/lib/matchers/include_spec.rb +32 -0
  473. data/spec/lib/puppet/test_ca.rb +2 -7
  474. data/spec/lib/puppet_spec/modules.rb +2 -13
  475. data/spec/lib/puppet_spec/puppetserver.rb +1 -16
  476. data/spec/lib/puppet_spec/settings.rb +1 -1
  477. data/spec/shared_behaviours/documentation_on_faces.rb +2 -0
  478. data/spec/spec_helper.rb +17 -13
  479. data/spec/unit/agent_spec.rb +6 -10
  480. data/spec/unit/application/agent_spec.rb +3 -7
  481. data/spec/unit/application/apply_spec.rb +56 -76
  482. data/spec/unit/application/facts_spec.rb +12 -456
  483. data/spec/unit/application/filebucket_spec.rb +43 -39
  484. data/spec/unit/application/lookup_spec.rb +10 -131
  485. data/spec/unit/application/resource_spec.rb +0 -29
  486. data/spec/unit/application/ssl_spec.rb +2 -25
  487. data/spec/unit/application_spec.rb +9 -51
  488. data/spec/unit/certificate_factory_spec.rb +1 -1
  489. data/spec/unit/configurer/downloader_spec.rb +6 -8
  490. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  491. data/spec/unit/configurer_spec.rb +68 -327
  492. data/spec/unit/confine/feature_spec.rb +1 -1
  493. data/spec/unit/confine_spec.rb +2 -8
  494. data/spec/unit/context/trusted_information_spec.rb +2 -6
  495. data/spec/unit/defaults_spec.rb +68 -55
  496. data/spec/unit/environments_spec.rb +68 -408
  497. data/spec/unit/face/generate_spec.rb +0 -64
  498. data/spec/unit/face/node_spec.rb +11 -0
  499. data/spec/unit/face/plugin_spec.rb +73 -33
  500. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  501. data/spec/unit/file_bucket/file_spec.rb +1 -1
  502. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -41
  503. data/spec/unit/file_serving/configuration_spec.rb +10 -26
  504. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  505. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  506. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  507. data/spec/unit/file_system_spec.rb +4 -56
  508. data/spec/unit/forge/module_release_spec.rb +10 -5
  509. data/spec/unit/functions/assert_type_spec.rb +1 -1
  510. data/spec/unit/functions/camelcase_spec.rb +1 -1
  511. data/spec/unit/functions/capitalize_spec.rb +1 -1
  512. data/spec/unit/functions/downcase_spec.rb +1 -1
  513. data/spec/unit/functions/empty_spec.rb +0 -10
  514. data/spec/unit/functions/logging_spec.rb +0 -1
  515. data/spec/unit/functions/lookup_spec.rb +0 -64
  516. data/spec/unit/functions/unwrap_spec.rb +0 -8
  517. data/spec/unit/functions/upcase_spec.rb +1 -1
  518. data/spec/unit/functions/versioncmp_spec.rb +4 -40
  519. data/spec/unit/functions4_spec.rb +2 -2
  520. data/spec/unit/gettext/config_spec.rb +0 -12
  521. data/spec/unit/http/client_spec.rb +8 -66
  522. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  523. data/spec/unit/http/external_client_spec.rb +4 -4
  524. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  525. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  526. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  527. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  528. data/spec/unit/http/resolver_spec.rb +13 -13
  529. data/spec/unit/http/service/compiler_spec.rb +0 -193
  530. data/spec/unit/http/service/file_server_spec.rb +3 -3
  531. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  532. data/spec/unit/http/service_spec.rb +0 -1
  533. data/spec/unit/http/session_spec.rb +16 -14
  534. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  535. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -101
  536. data/spec/unit/indirector/catalog/rest_spec.rb +0 -8
  537. data/spec/unit/indirector/face_spec.rb +1 -0
  538. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  539. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  540. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  541. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  542. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  543. data/spec/unit/indirector/file_server_spec.rb +1 -15
  544. data/spec/unit/indirector/indirection_spec.rb +15 -18
  545. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  546. data/spec/unit/indirector/request_spec.rb +0 -264
  547. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  548. data/spec/unit/indirector/rest_spec.rb +98 -752
  549. data/spec/unit/indirector/store_configs_spec.rb +7 -0
  550. data/spec/unit/indirector_spec.rb +2 -2
  551. data/spec/unit/interface/action_spec.rb +9 -0
  552. data/spec/unit/module_spec.rb +1 -15
  553. data/spec/unit/module_tool/applications/installer_spec.rb +0 -105
  554. data/spec/unit/network/authconfig_spec.rb +2 -129
  555. data/spec/unit/network/authorization_spec.rb +2 -55
  556. data/spec/unit/network/formats_spec.rb +4 -51
  557. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  558. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  559. data/spec/unit/network/http/api_spec.rb +10 -0
  560. data/spec/unit/network/http/connection_spec.rb +19 -41
  561. data/spec/unit/network/http/handler_spec.rb +0 -1
  562. data/spec/unit/network/http_pool_spec.rb +0 -4
  563. data/spec/unit/node/environment_spec.rb +33 -21
  564. data/spec/unit/node_spec.rb +2 -60
  565. data/spec/unit/parser/compiler_spec.rb +19 -3
  566. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  567. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  568. data/spec/unit/parser/resource_spec.rb +8 -14
  569. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  570. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  571. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  572. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  573. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  574. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  575. data/spec/unit/pops/parser/parse_containers_spec.rb +13 -2
  576. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  577. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  578. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  579. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -5
  580. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  581. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  582. data/spec/unit/pops/types/type_calculator_spec.rb +6 -12
  583. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  584. data/spec/unit/pops/validator/validator_spec.rb +61 -51
  585. data/spec/unit/pops/visitor_spec.rb +1 -1
  586. data/spec/unit/property_spec.rb +0 -1
  587. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  588. data/spec/unit/provider/nameservice_spec.rb +64 -122
  589. data/spec/unit/provider/package/apt_spec.rb +23 -28
  590. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  591. data/spec/unit/provider/package/base_spec.rb +5 -6
  592. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  593. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  594. data/spec/unit/provider/package/gem_spec.rb +33 -1
  595. data/spec/unit/provider/package/nim_spec.rb +0 -42
  596. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  597. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  598. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  599. data/spec/unit/provider/package/pip_spec.rb +12 -44
  600. data/spec/unit/provider/package/pkg_spec.rb +4 -29
  601. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  602. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -3
  603. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  604. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  605. data/spec/unit/provider/service/gentoo_spec.rb +5 -6
  606. data/spec/unit/provider/service/init_spec.rb +9 -16
  607. data/spec/unit/provider/service/launchd_spec.rb +0 -11
  608. data/spec/unit/provider/service/openwrt_spec.rb +29 -23
  609. data/spec/unit/provider/service/redhat_spec.rb +2 -3
  610. data/spec/unit/provider/service/smf_spec.rb +401 -165
  611. data/spec/unit/provider/service/systemd_spec.rb +9 -54
  612. data/spec/unit/provider/service/windows_spec.rb +0 -203
  613. data/spec/unit/provider/user/aix_spec.rb +0 -105
  614. data/spec/unit/provider/user/directoryservice_spec.rb +36 -68
  615. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  616. data/spec/unit/provider/user/pw_spec.rb +0 -2
  617. data/spec/unit/provider/user/useradd_spec.rb +5 -114
  618. data/spec/unit/provider_spec.rb +12 -22
  619. data/spec/unit/puppet_spec.rb +4 -12
  620. data/spec/unit/resource/catalog_spec.rb +2 -15
  621. data/spec/unit/resource/type_collection_spec.rb +2 -22
  622. data/spec/unit/resource/type_spec.rb +1 -1
  623. data/spec/unit/resource_spec.rb +12 -125
  624. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  625. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  626. data/spec/unit/settings/port_setting_spec.rb +31 -0
  627. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  628. data/spec/unit/settings_spec.rb +79 -110
  629. data/spec/unit/ssl/base_spec.rb +37 -3
  630. data/spec/unit/ssl/certificate_request_spec.rb +21 -45
  631. data/spec/unit/ssl/certificate_spec.rb +2 -11
  632. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  633. data/spec/unit/ssl/state_machine_spec.rb +5 -20
  634. data/spec/unit/ssl/verifier_spec.rb +0 -21
  635. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  636. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  637. data/spec/unit/transaction/persistence_spec.rb +0 -51
  638. data/spec/unit/transaction/report_spec.rb +0 -2
  639. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  640. data/spec/unit/transaction_spec.rb +55 -96
  641. data/spec/unit/type/exec_spec.rb +29 -76
  642. data/spec/unit/type/file/checksum_spec.rb +6 -6
  643. data/spec/unit/type/file/content_spec.rb +2 -1
  644. data/spec/unit/type/file/ensure_spec.rb +1 -1
  645. data/spec/unit/type/file/mode_spec.rb +1 -1
  646. data/spec/unit/type/file/selinux_spec.rb +5 -3
  647. data/spec/unit/type/file/source_spec.rb +4 -5
  648. data/spec/unit/type/file_spec.rb +18 -6
  649. data/spec/unit/type/group_spec.rb +6 -13
  650. data/spec/unit/type/package_spec.rb +1 -1
  651. data/spec/unit/type/resources_spec.rb +7 -7
  652. data/spec/unit/type/service_spec.rb +189 -87
  653. data/spec/unit/type/tidy_spec.rb +8 -24
  654. data/spec/unit/type_spec.rb +24 -4
  655. data/spec/unit/util/at_fork_spec.rb +2 -2
  656. data/spec/unit/util/autoload_spec.rb +1 -5
  657. data/spec/unit/util/backups_spec.rb +2 -3
  658. data/spec/unit/util/execution_spec.rb +11 -44
  659. data/spec/unit/util/inifile_spec.rb +14 -6
  660. data/spec/unit/util/log_spec.rb +7 -8
  661. data/spec/unit/util/logging_spec.rb +3 -5
  662. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  663. data/spec/unit/util/posix_spec.rb +15 -363
  664. data/spec/unit/util/run_mode_spec.rb +21 -121
  665. data/spec/unit/util/selinux_spec.rb +68 -163
  666. data/spec/unit/util/storage_spec.rb +1 -3
  667. data/spec/unit/util/suidmanager_spec.rb +41 -44
  668. data/spec/unit/util/windows/sid_spec.rb +0 -41
  669. data/spec/unit/util/windows/string_spec.rb +1 -3
  670. data/spec/unit/util/yaml_spec.rb +13 -92
  671. data/spec/unit/util_spec.rb +6 -31
  672. data/tasks/generate_cert_fixtures.rake +3 -12
  673. data/tasks/parallel.rake +3 -3
  674. metadata +138 -233
  675. data/conf/auth.conf +0 -150
  676. data/ext/README.md +0 -13
  677. data/lib/puppet/application/cert.rb +0 -76
  678. data/lib/puppet/application/key.rb +0 -4
  679. data/lib/puppet/application/man.rb +0 -4
  680. data/lib/puppet/application/status.rb +0 -4
  681. data/lib/puppet/face/key.rb +0 -16
  682. data/lib/puppet/face/man.rb +0 -145
  683. data/lib/puppet/face/module/build.rb +0 -14
  684. data/lib/puppet/face/module/generate.rb +0 -14
  685. data/lib/puppet/face/module/search.rb +0 -103
  686. data/lib/puppet/face/status.rb +0 -51
  687. data/lib/puppet/facter_impl.rb +0 -96
  688. data/lib/puppet/ffi/posix/constants.rb +0 -14
  689. data/lib/puppet/ffi/posix/functions.rb +0 -24
  690. data/lib/puppet/ffi/posix.rb +0 -10
  691. data/lib/puppet/file_serving/mount/scripts.rb +0 -24
  692. data/lib/puppet/indirector/certificate/file.rb +0 -9
  693. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  694. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  695. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  696. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  697. data/lib/puppet/indirector/file_content/http.rb +0 -22
  698. data/lib/puppet/indirector/key/file.rb +0 -46
  699. data/lib/puppet/indirector/key/memory.rb +0 -7
  700. data/lib/puppet/indirector/ssl_file.rb +0 -162
  701. data/lib/puppet/indirector/status/local.rb +0 -12
  702. data/lib/puppet/indirector/status/rest.rb +0 -27
  703. data/lib/puppet/indirector/status.rb +0 -3
  704. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  705. data/lib/puppet/network/auth_config_parser.rb +0 -90
  706. data/lib/puppet/network/authstore.rb +0 -283
  707. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  708. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  709. data/lib/puppet/network/http/base_pool.rb +0 -36
  710. data/lib/puppet/network/http/compression.rb +0 -127
  711. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  712. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  713. data/lib/puppet/network/rest_controller.rb +0 -2
  714. data/lib/puppet/network/rights.rb +0 -210
  715. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  716. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  717. data/lib/puppet/parser/environment_compiler.rb +0 -202
  718. data/lib/puppet/pops/types/enumeration.rb +0 -16
  719. data/lib/puppet/resource/capability_finder.rb +0 -154
  720. data/lib/puppet/rest/errors.rb +0 -15
  721. data/lib/puppet/rest/response.rb +0 -35
  722. data/lib/puppet/rest/route.rb +0 -85
  723. data/lib/puppet/rest/routes.rb +0 -135
  724. data/lib/puppet/settings/alias_setting.rb +0 -37
  725. data/lib/puppet/ssl/host.rb +0 -505
  726. data/lib/puppet/ssl/key.rb +0 -61
  727. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  728. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  729. data/lib/puppet/ssl/validator.rb +0 -61
  730. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  731. data/lib/puppet/status.rb +0 -40
  732. data/lib/puppet/util/connection.rb +0 -88
  733. data/lib/puppet/util/fact_dif.rb +0 -81
  734. data/lib/puppet/util/ssl.rb +0 -83
  735. data/lib/puppet/util/windows/api_types.rb +0 -309
  736. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  737. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  738. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  739. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  740. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  741. data/lib/puppet/vendor/pathspec/README.md +0 -53
  742. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  743. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  744. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  745. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  746. data/man/man8/puppet-key.8 +0 -126
  747. data/man/man8/puppet-man.8 +0 -76
  748. data/man/man8/puppet-status.8 +0 -108
  749. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  750. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  751. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  752. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  753. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  754. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  755. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  756. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  757. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  758. data/spec/fixtures/ssl/oid-key.pem +0 -117
  759. data/spec/fixtures/ssl/oid.pem +0 -69
  760. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  761. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  762. data/spec/integration/application/resource_spec.rb +0 -68
  763. data/spec/integration/application/ssl_spec.rb +0 -20
  764. data/spec/integration/l10n/compiler_spec.rb +0 -37
  765. data/spec/integration/network/authconfig_spec.rb +0 -256
  766. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  767. data/spec/shared_contexts/l10n.rb +0 -32
  768. data/spec/unit/application/man_spec.rb +0 -52
  769. data/spec/unit/capability_spec.rb +0 -414
  770. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  771. data/spec/unit/face/key_spec.rb +0 -9
  772. data/spec/unit/face/module/search_spec.rb +0 -231
  773. data/spec/unit/face/status_spec.rb +0 -9
  774. data/spec/unit/facter_impl_spec.rb +0 -31
  775. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  776. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  777. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  778. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  779. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  780. data/spec/unit/indirector/key/file_spec.rb +0 -78
  781. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  782. data/spec/unit/indirector/status/local_spec.rb +0 -10
  783. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  784. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  785. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  786. data/spec/unit/network/authstore_spec.rb +0 -407
  787. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  788. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  789. data/spec/unit/network/http/compression_spec.rb +0 -240
  790. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  791. data/spec/unit/network/http_spec.rb +0 -9
  792. data/spec/unit/network/rights_spec.rb +0 -439
  793. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  794. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  795. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  796. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  797. data/spec/unit/rest/route_spec.rb +0 -132
  798. data/spec/unit/ssl/host_spec.rb +0 -645
  799. data/spec/unit/ssl/key_spec.rb +0 -173
  800. data/spec/unit/ssl/validator_spec.rb +0 -278
  801. data/spec/unit/status_spec.rb +0 -45
  802. data/spec/unit/util/json_spec.rb +0 -126
  803. data/spec/unit/util/ssl_spec.rb +0 -91
  804. data/spec/unit/util/windows_spec.rb +0 -23
@@ -0,0 +1,414 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ffi'
4
+ require 'puppet/ffi/windows'
5
+ require 'puppet/util/windows/string'
6
+
7
+ module Process
8
+ extend FFI::Library
9
+ extend Puppet::Util::Windows::String
10
+
11
+ extend Puppet::FFI::Windows::APITypes
12
+ extend Puppet::FFI::Windows::Functions
13
+ extend Puppet::FFI::Windows::Structs
14
+
15
+ include Puppet::FFI::Windows::Constants
16
+ include Puppet::FFI::Windows::Structs
17
+
18
+ ProcessInfo = Struct.new(
19
+ 'ProcessInfo',
20
+ :process_handle,
21
+ :thread_handle,
22
+ :process_id,
23
+ :thread_id
24
+ )
25
+
26
+ private_constant :ProcessInfo
27
+
28
+ # Disable popups. This mostly affects the Process.kill method.
29
+ SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX)
30
+
31
+ class << self
32
+
33
+ private :SetHandleInformation, :SetErrorMode, :CreateProcessW, :OpenProcess,
34
+ :SetPriorityClass, :CreateProcessWithLogonW, :get_osfhandle, :get_errno
35
+
36
+ # Process.create(key => value, ...) => ProcessInfo
37
+ #
38
+ # This is a wrapper for the CreateProcess() function. It executes a process,
39
+ # returning a ProcessInfo struct. It accepts a hash as an argument.
40
+ # There are several primary keys:
41
+ #
42
+ # * command_line (this or app_name must be present)
43
+ # * app_name (default: nil)
44
+ # * inherit (default: false)
45
+ # * process_inherit (default: false)
46
+ # * thread_inherit (default: false)
47
+ # * creation_flags (default: 0)
48
+ # * cwd (default: Dir.pwd)
49
+ # * startup_info (default: nil)
50
+ # * environment (default: nil)
51
+ # * close_handles (default: true)
52
+ # * with_logon (default: nil)
53
+ # * domain (default: nil)
54
+ # * password (default: nil, mandatory if with_logon)
55
+ #
56
+ # Of these, the 'command_line' or 'app_name' must be specified or an
57
+ # error is raised. Both may be set individually, but 'command_line' should
58
+ # be preferred if only one of them is set because it does not (necessarily)
59
+ # require an explicit path or extension to work.
60
+ #
61
+ # The 'domain' and 'password' options are only relevent in the context
62
+ # of 'with_logon'. If 'with_logon' is set, then the 'password' option is
63
+ # mandatory.
64
+ #
65
+ # The startup_info key takes a hash. Its keys are attributes that are
66
+ # part of the StartupInfo struct, and are generally only meaningful for
67
+ # GUI or console processes. See the documentation on CreateProcess()
68
+ # and the StartupInfo struct on MSDN for more information.
69
+ #
70
+ # * desktop
71
+ # * title
72
+ # * x
73
+ # * y
74
+ # * x_size
75
+ # * y_size
76
+ # * x_count_chars
77
+ # * y_count_chars
78
+ # * fill_attribute
79
+ # * sw_flags
80
+ # * startf_flags
81
+ # * stdin
82
+ # * stdout
83
+ # * stderr
84
+ #
85
+ # Note that the 'stdin', 'stdout' and 'stderr' options can be either Ruby
86
+ # IO objects or file descriptors (i.e. a fileno). However, StringIO objects
87
+ # are not currently supported. Unfortunately, setting these is not currently
88
+ # an option for JRuby.
89
+ #
90
+ # If 'stdin', 'stdout' or 'stderr' are specified, then the +inherit+ value
91
+ # is automatically set to true and the Process::STARTF_USESTDHANDLES flag is
92
+ # automatically OR'd to the +startf_flags+ value.
93
+ #
94
+ # The ProcessInfo struct contains the following members:
95
+ #
96
+ # * process_handle - The handle to the newly created process.
97
+ # * thread_handle - The handle to the primary thread of the process.
98
+ # * process_id - Process ID.
99
+ # * thread_id - Thread ID.
100
+ #
101
+ # If the 'close_handles' option is set to true (the default) then the
102
+ # process_handle and the thread_handle are automatically closed for you
103
+ # before the ProcessInfo struct is returned.
104
+ #
105
+ # If the 'with_logon' option is set, then the process runs the specified
106
+ # executable file in the security context of the specified credentials.
107
+
108
+ VALID_KEYS = %i[
109
+ app_name command_line inherit creation_flags cwd environment
110
+ startup_info thread_inherit process_inherit close_handles with_logon
111
+ domain password
112
+ ].freeze
113
+
114
+ VALID_SI_KEYS = %i[
115
+ startf_flags desktop title x y x_size y_size x_count_chars
116
+ y_count_chars fill_attribute sw_flags stdin stdout stderr
117
+ ].freeze
118
+
119
+ private_constant :VALID_KEYS, :VALID_SI_KEYS
120
+
121
+ def create(args)
122
+ # Validate that args is a Hash
123
+ validate_args(args)
124
+
125
+ initialize_defaults
126
+
127
+ # Validate the keys, and convert symbols and case to lowercase strings.
128
+ validate_keys(args)
129
+
130
+ # If the startup_info key is present, validate its subkeys
131
+ validate_startup_info if hash[:startup_info]
132
+
133
+ # validates that 'app_name' or 'command_line' is set
134
+ validate_command_line
135
+
136
+ if hash[:app_name] && !hash[:command_line]
137
+ hash[:command_line] = hash[:app_name]
138
+ hash[:app_name] = nil
139
+ end
140
+
141
+ # Setup stdin, stdout and stderr handlers
142
+ setup_std_handlers
143
+
144
+ if logon
145
+ create_process_with_logon
146
+ else
147
+ create_process
148
+ end
149
+
150
+ # Automatically close the process and thread handles in the
151
+ # PROCESS_INFORMATION struct unless explicitly told not to.
152
+ if hash[:close_handles]
153
+ FFI::WIN32.CloseHandle(procinfo[:hProcess])
154
+ FFI::WIN32.CloseHandle(procinfo[:hThread])
155
+ end
156
+
157
+ ProcessInfo.new(
158
+ procinfo[:hProcess],
159
+ procinfo[:hThread],
160
+ procinfo[:dwProcessId],
161
+ procinfo[:dwThreadId]
162
+ )
163
+ end
164
+
165
+ remove_method :setpriority
166
+
167
+ # Sets the priority class for the specified process id +int+.
168
+ #
169
+ # The +kind+ parameter is ignored but present for API compatibility.
170
+ # You can only retrieve process information, not process group or user
171
+ # information, so it is effectively always Process::PRIO_PROCESS.
172
+ #
173
+ # Possible +int_priority+ values are:
174
+ #
175
+ # * Process::NORMAL_PRIORITY_CLASS
176
+ # * Process::IDLE_PRIORITY_CLASS
177
+ # * Process::HIGH_PRIORITY_CLASS
178
+ # * Process::REALTIME_PRIORITY_CLASS
179
+ # * Process::BELOW_NORMAL_PRIORITY_CLASS
180
+ # * Process::ABOVE_NORMAL_PRIORITY_CLASS
181
+
182
+ def setpriority(kind, int, int_priority)
183
+ raise TypeError unless kind.is_a?(Integer)
184
+ raise TypeError unless int.is_a?(Integer)
185
+ raise TypeError unless int_priority.is_a?(Integer)
186
+
187
+ int = Process.pid if int == 0
188
+ handle = OpenProcess(PROCESS_SET_INFORMATION, 0 , int)
189
+
190
+ if handle == 0
191
+ raise SystemCallError, FFI.errno, "OpenProcess"
192
+ end
193
+
194
+ begin
195
+ result = SetPriorityClass(handle, int_priority)
196
+ raise SystemCallError, FFI.errno, "SetPriorityClass" unless result
197
+ ensure
198
+ FFI::WIN32.CloseHandle(handle)
199
+ end
200
+
201
+ return 0
202
+ end
203
+
204
+ private
205
+
206
+ def initialize_defaults
207
+ @hash = {
208
+ app_name: nil,
209
+ creation_flags: 0,
210
+ close_handles: true
211
+ }
212
+ @si_hash = nil
213
+ @procinfo = nil
214
+ end
215
+
216
+ def validate_args(args)
217
+ raise TypeError, 'hash keyword arguments expected' unless args.is_a?(Hash)
218
+ end
219
+
220
+ def validate_keys(args)
221
+ args.each do |key, val|
222
+ key = key.to_s.to_sym
223
+ raise ArgumentError, "invalid key '#{key}'" unless VALID_KEYS.include?(key)
224
+
225
+ hash[key] = val
226
+ end
227
+ end
228
+
229
+ def validate_startup_info
230
+ hash[:startup_info].each do |key, val|
231
+ key = key.to_s.to_sym
232
+ raise ArgumentError, "invalid startup_info key '#{key}'" unless VALID_SI_KEYS.include?(key)
233
+
234
+ si_hash[key] = val
235
+ end
236
+ end
237
+
238
+ def validate_command_line
239
+ raise ArgumentError, 'command_line or app_name must be specified' unless hash[:app_name] || hash[:command_line]
240
+ end
241
+
242
+ def procinfo
243
+ @procinfo ||= PROCESS_INFORMATION.new
244
+ end
245
+
246
+ def hash
247
+ @hash ||= {}
248
+ end
249
+
250
+ def si_hash
251
+ @si_hash ||= {}
252
+ end
253
+
254
+ def app
255
+ wide_string(hash[:app_name])
256
+ end
257
+
258
+ def cmd
259
+ wide_string(hash[:command_line])
260
+ end
261
+
262
+ def cwd
263
+ wide_string(hash[:cwd])
264
+ end
265
+
266
+ def password
267
+ wide_string(hash[:password])
268
+ end
269
+
270
+ def logon
271
+ wide_string(hash[:with_logon])
272
+ end
273
+
274
+ def domain
275
+ wide_string(hash[:domain])
276
+ end
277
+
278
+ def env
279
+ env = hash[:environment]
280
+ return unless env
281
+
282
+ env = env.split(File::PATH_SEPARATOR) unless env.respond_to?(:join)
283
+ env = env.map { |e| e + 0.chr }.join('') + 0.chr
284
+ env = wide_string(env) if hash[:with_logon]
285
+ env
286
+ end
287
+
288
+ def process_security
289
+ return unless hash[:process_inherit]
290
+
291
+ process_security = SECURITY_ATTRIBUTES.new
292
+ process_security[:nLength] = SECURITY_ATTRIBUTES.size
293
+ process_security[:bInheritHandle] = 1
294
+ process_security
295
+ end
296
+
297
+ def thread_security
298
+ return unless hash[:thread_inherit]
299
+
300
+ thread_security = SECURITY_ATTRIBUTES.new
301
+ thread_security[:nLength] = SECURITY_ATTRIBUTES.size
302
+ thread_security[:bInheritHandle] = 1
303
+ thread_security
304
+ end
305
+
306
+ # Automatically handle stdin, stdout and stderr as either IO objects
307
+ # or file descriptors. This won't work for StringIO, however. It also
308
+ # will not work on JRuby because of the way it handles internal file
309
+ # descriptors.
310
+ def setup_std_handlers
311
+ %i[stdin stdout stderr].each do |io|
312
+ next unless si_hash[io]
313
+
314
+ handle = if si_hash[io].respond_to?(:fileno)
315
+ get_osfhandle(si_hash[io].fileno)
316
+ else
317
+ get_osfhandle(si_hash[io])
318
+ end
319
+
320
+ if handle == INVALID_HANDLE_VALUE
321
+ ptr = FFI::MemoryPointer.new(:int)
322
+
323
+ errno = if get_errno(ptr).zero?
324
+ ptr.read_int
325
+ else
326
+ FFI.errno
327
+ end
328
+
329
+ raise SystemCallError.new('get_osfhandle', errno)
330
+ end
331
+
332
+ # Most implementations of Ruby on Windows create inheritable
333
+ # handles by default, but some do not. RF bug #26988.
334
+ bool = SetHandleInformation(
335
+ handle,
336
+ HANDLE_FLAG_INHERIT,
337
+ HANDLE_FLAG_INHERIT
338
+ )
339
+
340
+ raise SystemCallError.new('SetHandleInformation', FFI.errno) unless bool
341
+
342
+ si_hash[io] = handle
343
+ si_hash[:startf_flags] ||= 0
344
+ si_hash[:startf_flags] |= STARTF_USESTDHANDLES
345
+ hash[:inherit] = true
346
+ end
347
+ end
348
+
349
+ def startinfo
350
+ startinfo = STARTUPINFO.new
351
+
352
+ return startinfo if si_hash.empty?
353
+
354
+ startinfo[:cb] = startinfo.size
355
+ startinfo[:lpDesktop] = si_hash[:desktop] if si_hash[:desktop]
356
+ startinfo[:lpTitle] = si_hash[:title] if si_hash[:title]
357
+ startinfo[:dwX] = si_hash[:x] if si_hash[:x]
358
+ startinfo[:dwY] = si_hash[:y] if si_hash[:y]
359
+ startinfo[:dwXSize] = si_hash[:x_size] if si_hash[:x_size]
360
+ startinfo[:dwYSize] = si_hash[:y_size] if si_hash[:y_size]
361
+ startinfo[:dwXCountChars] = si_hash[:x_count_chars] if si_hash[:x_count_chars]
362
+ startinfo[:dwYCountChars] = si_hash[:y_count_chars] if si_hash[:y_count_chars]
363
+ startinfo[:dwFillAttribute] = si_hash[:fill_attribute] if si_hash[:fill_attribute]
364
+ startinfo[:dwFlags] = si_hash[:startf_flags] if si_hash[:startf_flags]
365
+ startinfo[:wShowWindow] = si_hash[:sw_flags] if si_hash[:sw_flags]
366
+ startinfo[:cbReserved2] = 0
367
+ startinfo[:hStdInput] = si_hash[:stdin] if si_hash[:stdin]
368
+ startinfo[:hStdOutput] = si_hash[:stdout] if si_hash[:stdout]
369
+ startinfo[:hStdError] = si_hash[:stderr] if si_hash[:stderr]
370
+ startinfo
371
+ end
372
+
373
+ def create_process_with_logon
374
+ raise ArgumentError, 'password must be specified if with_logon is used' unless password
375
+
376
+ hash[:creation_flags] |= CREATE_UNICODE_ENVIRONMENT
377
+
378
+ bool = CreateProcessWithLogonW(
379
+ logon, # User
380
+ domain, # Domain
381
+ password, # Password
382
+ LOGON_WITH_PROFILE, # Logon flags
383
+ app, # App name
384
+ cmd, # Command line
385
+ hash[:creation_flags], # Creation flags
386
+ env, # Environment
387
+ cwd, # Working directory
388
+ startinfo, # Startup Info
389
+ procinfo # Process Info
390
+ )
391
+
392
+ raise SystemCallError.new('CreateProcessWithLogonW', FFI.errno) unless bool
393
+ end
394
+
395
+ def create_process
396
+ inherit = hash[:inherit] ? 1 : 0
397
+
398
+ bool = CreateProcessW(
399
+ app, # App name
400
+ cmd, # Command line
401
+ process_security, # Process attributes
402
+ thread_security, # Thread attributes
403
+ inherit, # Inherit handles?
404
+ hash[:creation_flags], # Creation flags
405
+ env, # Environment
406
+ cwd, # Working directory
407
+ startinfo, # Startup Info
408
+ procinfo # Process Info
409
+ )
410
+
411
+ raise SystemCallError.new('CreateProcess', FFI.errno) unless bool
412
+ end
413
+ end
414
+ end
@@ -44,8 +44,7 @@ module Puppet::Util::Windows::SID
44
44
  ERROR_INVALID_PARAMETER = 87
45
45
  ERROR_INSUFFICIENT_BUFFER = 122
46
46
 
47
- def self.lookup_account_name(system_name = nil, sanitize = true, account_name)
48
- account_name = sanitize_account_name(account_name) if sanitize
47
+ def self.lookup_account_name(system_name = nil, account_name)
49
48
  system_name_ptr = FFI::Pointer::NULL
50
49
  begin
51
50
  if system_name
@@ -147,13 +146,6 @@ module Puppet::Util::Windows::SID
147
146
  end
148
147
  end
149
148
 
150
- # Sanitize the given account name for lookup to avoid known issues
151
- def self.sanitize_account_name(account_name)
152
- return account_name unless account_name.start_with?('APPLICATION PACKAGE AUTHORITY\\')
153
- account_name.split('\\').last
154
- end
155
- private_class_method :sanitize_account_name
156
-
157
149
  ffi_convention :stdcall
158
150
 
159
151
  # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379601(v=vs.85).aspx
@@ -199,3 +191,4 @@ module Puppet::Util::Windows::SID
199
191
  [:lpcwstr, :pointer, :lpwstr, :lpdword, :lpwstr, :lpdword, :pointer], :win32_bool
200
192
  end
201
193
  end
194
+
@@ -1,10 +1,10 @@
1
- require 'puppet/util/windows'
2
- require 'win32/process'
3
- require 'ffi'
1
+ require 'puppet/util/windows/monkey_patches/process'
2
+ require 'puppet/ffi/windows'
4
3
 
5
4
  module Puppet::Util::Windows::Process
5
+ extend Puppet::FFI::Windows::Functions
6
+ include Puppet::FFI::Windows::Structs
6
7
  extend Puppet::Util::Windows::String
7
- extend FFI::Library
8
8
 
9
9
  WAIT_TIMEOUT = 0x102
10
10
  WAIT_INTERVAL = 200
@@ -361,226 +361,4 @@ module Puppet::Util::Windows::Process
361
361
  end
362
362
  module_function :supports_elevated_security?
363
363
 
364
- ABOVE_NORMAL_PRIORITY_CLASS = 0x0008000
365
- BELOW_NORMAL_PRIORITY_CLASS = 0x0004000
366
- HIGH_PRIORITY_CLASS = 0x0000080
367
- IDLE_PRIORITY_CLASS = 0x0000040
368
- NORMAL_PRIORITY_CLASS = 0x0000020
369
- REALTIME_PRIORITY_CLASS = 0x0000010
370
-
371
- ffi_convention :stdcall
372
-
373
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx
374
- # DWORD WINAPI WaitForSingleObject(
375
- # _In_ HANDLE hHandle,
376
- # _In_ DWORD dwMilliseconds
377
- # );
378
- ffi_lib :kernel32
379
- attach_function_private :WaitForSingleObject,
380
- [:handle, :dword], :dword
381
-
382
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms683189(v=vs.85).aspx
383
- # BOOL WINAPI GetExitCodeProcess(
384
- # _In_ HANDLE hProcess,
385
- # _Out_ LPDWORD lpExitCode
386
- # );
387
- ffi_lib :kernel32
388
- attach_function_private :GetExitCodeProcess,
389
- [:handle, :lpdword], :win32_bool
390
-
391
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms683179(v=vs.85).aspx
392
- # HANDLE WINAPI GetCurrentProcess(void);
393
- ffi_lib :kernel32
394
- attach_function_private :GetCurrentProcess, [], :handle
395
-
396
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms683187(v=vs.85).aspx
397
- # LPTCH GetEnvironmentStrings(void);
398
- ffi_lib :kernel32
399
- attach_function_private :GetEnvironmentStringsW, [], :pointer
400
-
401
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms683151(v=vs.85).aspx
402
- # BOOL FreeEnvironmentStrings(
403
- # _In_ LPTCH lpszEnvironmentBlock
404
- # );
405
- ffi_lib :kernel32
406
- attach_function_private :FreeEnvironmentStringsW,
407
- [:pointer], :win32_bool
408
-
409
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms686206(v=vs.85).aspx
410
- # BOOL WINAPI SetEnvironmentVariableW(
411
- # _In_ LPCTSTR lpName,
412
- # _In_opt_ LPCTSTR lpValue
413
- # );
414
- ffi_lib :kernel32
415
- attach_function_private :SetEnvironmentVariableW,
416
- [:lpcwstr, :lpcwstr], :win32_bool
417
-
418
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
419
- # HANDLE WINAPI OpenProcess(
420
- # _In_ DWORD DesiredAccess,
421
- # _In_ BOOL InheritHandle,
422
- # _In_ DWORD ProcessId
423
- # );
424
- ffi_lib :kernel32
425
- attach_function_private :OpenProcess,
426
- [:dword, :win32_bool, :dword], :handle
427
-
428
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379295(v=vs.85).aspx
429
- # BOOL WINAPI OpenProcessToken(
430
- # _In_ HANDLE ProcessHandle,
431
- # _In_ DWORD DesiredAccess,
432
- # _Out_ PHANDLE TokenHandle
433
- # );
434
- ffi_lib :advapi32
435
- attach_function_private :OpenProcessToken,
436
- [:handle, :dword, :phandle], :win32_bool
437
-
438
- # https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-queryfullprocessimagenamew
439
- # BOOL WINAPI QueryFullProcessImageName(
440
- # _In_ HANDLE hProcess,
441
- # _In_ DWORD dwFlags,
442
- # _Out_ LPWSTR lpExeName,
443
- # _In_ PDWORD lpdwSize,
444
- # );
445
- ffi_lib :kernel32
446
- attach_function_private :QueryFullProcessImageNameW,
447
- [:handle, :dword, :lpwstr, :pdword], :win32_bool
448
-
449
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379261(v=vs.85).aspx
450
- # typedef struct _LUID {
451
- # DWORD LowPart;
452
- # LONG HighPart;
453
- # } LUID, *PLUID;
454
- class LUID < FFI::Struct
455
- layout :LowPart, :dword,
456
- :HighPart, :win32_long
457
- end
458
-
459
- # https://msdn.microsoft.com/en-us/library/Windows/desktop/aa379180(v=vs.85).aspx
460
- # BOOL WINAPI LookupPrivilegeValue(
461
- # _In_opt_ LPCTSTR lpSystemName,
462
- # _In_ LPCTSTR lpName,
463
- # _Out_ PLUID lpLuid
464
- # );
465
- ffi_lib :advapi32
466
- attach_function_private :LookupPrivilegeValueW,
467
- [:lpcwstr, :lpcwstr, :pointer], :win32_bool
468
-
469
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379626(v=vs.85).aspx
470
- TOKEN_INFORMATION_CLASS = enum(
471
- :TokenUser, 1,
472
- :TokenGroups,
473
- :TokenPrivileges,
474
- :TokenOwner,
475
- :TokenPrimaryGroup,
476
- :TokenDefaultDacl,
477
- :TokenSource,
478
- :TokenType,
479
- :TokenImpersonationLevel,
480
- :TokenStatistics,
481
- :TokenRestrictedSids,
482
- :TokenSessionId,
483
- :TokenGroupsAndPrivileges,
484
- :TokenSessionReference,
485
- :TokenSandBoxInert,
486
- :TokenAuditPolicy,
487
- :TokenOrigin,
488
- :TokenElevationType,
489
- :TokenLinkedToken,
490
- :TokenElevation,
491
- :TokenHasRestrictions,
492
- :TokenAccessInformation,
493
- :TokenVirtualizationAllowed,
494
- :TokenVirtualizationEnabled,
495
- :TokenIntegrityLevel,
496
- :TokenUIAccess,
497
- :TokenMandatoryPolicy,
498
- :TokenLogonSid,
499
- :TokenIsAppContainer,
500
- :TokenCapabilities,
501
- :TokenAppContainerSid,
502
- :TokenAppContainerNumber,
503
- :TokenUserClaimAttributes,
504
- :TokenDeviceClaimAttributes,
505
- :TokenRestrictedUserClaimAttributes,
506
- :TokenRestrictedDeviceClaimAttributes,
507
- :TokenDeviceGroups,
508
- :TokenRestrictedDeviceGroups,
509
- :TokenSecurityAttributes,
510
- :TokenIsRestricted,
511
- :MaxTokenInfoClass
512
- )
513
-
514
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379263(v=vs.85).aspx
515
- # typedef struct _LUID_AND_ATTRIBUTES {
516
- # LUID Luid;
517
- # DWORD Attributes;
518
- # } LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
519
- class LUID_AND_ATTRIBUTES < FFI::Struct
520
- layout :Luid, LUID,
521
- :Attributes, :dword
522
- end
523
-
524
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa379630(v=vs.85).aspx
525
- # typedef struct _TOKEN_PRIVILEGES {
526
- # DWORD PrivilegeCount;
527
- # LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
528
- # } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
529
- class TOKEN_PRIVILEGES < FFI::Struct
530
- layout :PrivilegeCount, :dword,
531
- :Privileges, [LUID_AND_ATTRIBUTES, 1] # placeholder for offset
532
- end
533
-
534
- # https://msdn.microsoft.com/en-us/library/windows/desktop/bb530717(v=vs.85).aspx
535
- # typedef struct _TOKEN_ELEVATION {
536
- # DWORD TokenIsElevated;
537
- # } TOKEN_ELEVATION, *PTOKEN_ELEVATION;
538
- class TOKEN_ELEVATION < FFI::Struct
539
- layout :TokenIsElevated, :dword
540
- end
541
-
542
- # https://msdn.microsoft.com/en-us/library/windows/desktop/aa446671(v=vs.85).aspx
543
- # BOOL WINAPI GetTokenInformation(
544
- # _In_ HANDLE TokenHandle,
545
- # _In_ TOKEN_INFORMATION_CLASS TokenInformationClass,
546
- # _Out_opt_ LPVOID TokenInformation,
547
- # _In_ DWORD TokenInformationLength,
548
- # _Out_ PDWORD ReturnLength
549
- # );
550
- ffi_lib :advapi32
551
- attach_function_private :GetTokenInformation,
552
- [:handle, TOKEN_INFORMATION_CLASS, :lpvoid, :dword, :pdword ], :win32_bool
553
-
554
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms724834%28v=vs.85%29.aspx
555
- # typedef struct _OSVERSIONINFO {
556
- # DWORD dwOSVersionInfoSize;
557
- # DWORD dwMajorVersion;
558
- # DWORD dwMinorVersion;
559
- # DWORD dwBuildNumber;
560
- # DWORD dwPlatformId;
561
- # TCHAR szCSDVersion[128];
562
- # } OSVERSIONINFO;
563
- class OSVERSIONINFO < FFI::Struct
564
- layout(
565
- :dwOSVersionInfoSize, :dword,
566
- :dwMajorVersion, :dword,
567
- :dwMinorVersion, :dword,
568
- :dwBuildNumber, :dword,
569
- :dwPlatformId, :dword,
570
- :szCSDVersion, [:wchar, 128]
571
- )
572
- end
573
-
574
- # https://msdn.microsoft.com/en-us/library/windows/desktop/ms724451(v=vs.85).aspx
575
- # BOOL WINAPI GetVersionEx(
576
- # _Inout_ LPOSVERSIONINFO lpVersionInfo
577
- # );
578
- ffi_lib :kernel32
579
- attach_function_private :GetVersionExW,
580
- [:pointer], :win32_bool
581
-
582
- # https://msdn.microsoft.com/en-us/library/windows/desktop/dd318123(v=vs.85).aspx
583
- # LANGID GetSystemDefaultUILanguage(void);
584
- ffi_lib :kernel32
585
- attach_function_private :GetSystemDefaultUILanguage, [], :word
586
364
  end