puppet 6.28.0-universal-darwin → 7.0.0-universal-darwin

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

Potentially problematic release.


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

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