puppet 6.19.1 → 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 (440) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +19 -20
  4. data/README.md +1 -1
  5. data/conf/fileserver.conf +5 -10
  6. data/ext/build_defaults.yaml +1 -1
  7. data/ext/osx/file_mapping.yaml +0 -5
  8. data/ext/project_data.yaml +1 -14
  9. data/ext/redhat/puppet.spec.erb +0 -1
  10. data/ext/windows/service/daemon.rb +6 -5
  11. data/install.rb +21 -17
  12. data/lib/puppet.rb +11 -20
  13. data/lib/puppet/application.rb +172 -98
  14. data/lib/puppet/application/device.rb +100 -104
  15. data/lib/puppet/application/filebucket.rb +15 -11
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +28 -33
  18. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  19. data/lib/puppet/defaults.rb +95 -159
  20. data/lib/puppet/environments.rb +10 -25
  21. data/lib/puppet/face/config.rb +10 -0
  22. data/lib/puppet/face/epp.rb +12 -2
  23. data/lib/puppet/face/facts.rb +66 -6
  24. data/lib/puppet/face/help.rb +1 -1
  25. data/lib/puppet/face/plugin.rb +5 -8
  26. data/lib/puppet/ffi/windows.rb +12 -0
  27. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  28. data/lib/puppet/ffi/windows/constants.rb +404 -0
  29. data/lib/puppet/ffi/windows/functions.rb +628 -0
  30. data/lib/puppet/ffi/windows/structs.rb +338 -0
  31. data/lib/puppet/file_serving/configuration.rb +0 -5
  32. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  33. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  34. data/lib/puppet/file_serving/mount.rb +1 -2
  35. data/lib/puppet/forge/repository.rb +0 -1
  36. data/lib/puppet/functions/epp.rb +1 -0
  37. data/lib/puppet/functions/inline_epp.rb +1 -0
  38. data/lib/puppet/generate/models/type/type.rb +4 -1
  39. data/lib/puppet/http.rb +22 -13
  40. data/lib/puppet/http/client.rb +164 -114
  41. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  42. data/lib/puppet/http/errors.rb +16 -0
  43. data/lib/puppet/http/external_client.rb +5 -7
  44. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  45. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  46. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  47. data/lib/puppet/http/proxy.rb +137 -0
  48. data/lib/puppet/http/redirector.rb +4 -12
  49. data/lib/puppet/http/resolver.rb +5 -15
  50. data/lib/puppet/http/resolver/server_list.rb +6 -10
  51. data/lib/puppet/http/resolver/settings.rb +4 -7
  52. data/lib/puppet/http/resolver/srv.rb +7 -11
  53. data/lib/puppet/http/response.rb +36 -54
  54. data/lib/puppet/http/response_converter.rb +24 -0
  55. data/lib/puppet/http/response_net_http.rb +42 -0
  56. data/lib/puppet/http/retry_after_handler.rb +4 -13
  57. data/lib/puppet/http/service.rb +12 -26
  58. data/lib/puppet/http/service/ca.rb +11 -22
  59. data/lib/puppet/http/service/compiler.rb +22 -69
  60. data/lib/puppet/http/service/file_server.rb +18 -27
  61. data/lib/puppet/http/service/puppetserver.rb +26 -12
  62. data/lib/puppet/http/service/report.rb +8 -10
  63. data/lib/puppet/http/session.rb +11 -20
  64. data/lib/puppet/{network/http → http}/site.rb +1 -2
  65. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  66. data/lib/puppet/indirector/fact_search.rb +60 -0
  67. data/lib/puppet/indirector/facts/facter.rb +24 -3
  68. data/lib/puppet/indirector/facts/json.rb +27 -0
  69. data/lib/puppet/indirector/facts/rest.rb +3 -22
  70. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  71. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  72. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  73. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  74. data/lib/puppet/indirector/file_server.rb +1 -8
  75. data/lib/puppet/indirector/generic_http.rb +0 -11
  76. data/lib/puppet/indirector/json.rb +5 -1
  77. data/lib/puppet/indirector/node/json.rb +8 -0
  78. data/lib/puppet/indirector/node/rest.rb +2 -4
  79. data/lib/puppet/indirector/report/json.rb +34 -0
  80. data/lib/puppet/indirector/report/rest.rb +3 -8
  81. data/lib/puppet/indirector/request.rb +0 -101
  82. data/lib/puppet/indirector/rest.rb +12 -263
  83. data/lib/puppet/module_tool/applications.rb +0 -1
  84. data/lib/puppet/network/authconfig.rb +2 -96
  85. data/lib/puppet/network/authorization.rb +13 -35
  86. data/lib/puppet/network/formats.rb +2 -1
  87. data/lib/puppet/network/http.rb +3 -3
  88. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  89. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  90. data/lib/puppet/network/http/connection.rb +247 -316
  91. data/lib/puppet/network/http/handler.rb +0 -1
  92. data/lib/puppet/network/http_pool.rb +16 -34
  93. data/lib/puppet/node.rb +1 -30
  94. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  95. data/lib/puppet/pal/pal_impl.rb +73 -18
  96. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  97. data/lib/puppet/parser/compiler.rb +0 -198
  98. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  99. data/lib/puppet/parser/resource.rb +0 -69
  100. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  101. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  102. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  103. data/lib/puppet/pops/issues.rb +0 -5
  104. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  105. data/lib/puppet/pops/model/ast.pp +0 -42
  106. data/lib/puppet/pops/model/ast.rb +0 -290
  107. data/lib/puppet/pops/model/factory.rb +0 -45
  108. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  109. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  110. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  111. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  112. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  113. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  114. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  115. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  116. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  117. data/lib/puppet/pops/types/type_parser.rb +0 -4
  118. data/lib/puppet/pops/types/types.rb +0 -1
  119. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  120. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  122. data/lib/puppet/provider.rb +0 -13
  123. data/lib/puppet/provider/nameservice.rb +0 -18
  124. data/lib/puppet/provider/package/dpkg.rb +0 -10
  125. data/lib/puppet/provider/package/gem.rb +23 -3
  126. data/lib/puppet/provider/package/pip.rb +0 -1
  127. data/lib/puppet/provider/package/pkg.rb +0 -4
  128. data/lib/puppet/provider/package/portage.rb +1 -1
  129. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  130. data/lib/puppet/provider/service/smf.rb +191 -73
  131. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  132. data/lib/puppet/reference/configuration.rb +2 -0
  133. data/lib/puppet/reference/indirection.rb +1 -1
  134. data/lib/puppet/resource.rb +1 -89
  135. data/lib/puppet/resource/catalog.rb +1 -14
  136. data/lib/puppet/resource/type.rb +3 -119
  137. data/lib/puppet/resource/type_collection.rb +3 -48
  138. data/lib/puppet/runtime.rb +1 -2
  139. data/lib/puppet/settings.rb +45 -33
  140. data/lib/puppet/settings/base_setting.rb +26 -2
  141. data/lib/puppet/settings/integer_setting.rb +17 -0
  142. data/lib/puppet/settings/port_setting.rb +15 -0
  143. data/lib/puppet/settings/priority_setting.rb +5 -4
  144. data/lib/puppet/ssl.rb +10 -6
  145. data/lib/puppet/ssl/base.rb +3 -5
  146. data/lib/puppet/ssl/certificate.rb +0 -6
  147. data/lib/puppet/ssl/certificate_request.rb +1 -12
  148. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  149. data/lib/puppet/ssl/oids.rb +3 -1
  150. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  151. data/lib/puppet/ssl/state_machine.rb +3 -1
  152. data/lib/puppet/ssl/verifier.rb +2 -0
  153. data/lib/puppet/test/test_helper.rb +1 -3
  154. data/lib/puppet/transaction.rb +1 -7
  155. data/lib/puppet/transaction/report.rb +2 -4
  156. data/lib/puppet/type.rb +0 -76
  157. data/lib/puppet/type/file.rb +5 -7
  158. data/lib/puppet/type/file/checksum.rb +1 -1
  159. data/lib/puppet/type/file/source.rb +1 -1
  160. data/lib/puppet/type/filebucket.rb +3 -3
  161. data/lib/puppet/type/package.rb +5 -13
  162. data/lib/puppet/util/execution.rb +0 -11
  163. data/lib/puppet/util/http_proxy.rb +2 -215
  164. data/lib/puppet/util/monkey_patches.rb +0 -46
  165. data/lib/puppet/util/rdoc.rb +0 -7
  166. data/lib/puppet/util/retry_action.rb +1 -1
  167. data/lib/puppet/util/rubygems.rb +5 -1
  168. data/lib/puppet/util/run_mode.rb +9 -1
  169. data/lib/puppet/util/windows.rb +3 -8
  170. data/lib/puppet/util/windows/daemon.rb +360 -0
  171. data/lib/puppet/util/windows/error.rb +1 -0
  172. data/lib/puppet/util/windows/eventlog.rb +4 -9
  173. data/lib/puppet/util/windows/file.rb +8 -242
  174. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  175. data/lib/puppet/util/windows/process.rb +4 -226
  176. data/lib/puppet/util/windows/service.rb +9 -460
  177. data/lib/puppet/util/windows/string.rb +12 -13
  178. data/lib/puppet/util/yaml.rb +0 -22
  179. data/lib/puppet/vendor/require_vendored.rb +0 -1
  180. data/lib/puppet/version.rb +1 -1
  181. data/lib/puppet/x509.rb +5 -1
  182. data/lib/puppet/x509/cert_provider.rb +29 -1
  183. data/locales/puppet.pot +531 -1232
  184. data/man/man5/puppet.conf.5 +37 -97
  185. data/man/man8/puppet-agent.8 +1 -1
  186. data/man/man8/puppet-apply.8 +1 -1
  187. data/man/man8/puppet-catalog.8 +1 -1
  188. data/man/man8/puppet-config.8 +1 -1
  189. data/man/man8/puppet-describe.8 +1 -1
  190. data/man/man8/puppet-device.8 +1 -1
  191. data/man/man8/puppet-doc.8 +1 -1
  192. data/man/man8/puppet-epp.8 +1 -1
  193. data/man/man8/puppet-facts.8 +55 -9
  194. data/man/man8/puppet-filebucket.8 +6 -6
  195. data/man/man8/puppet-generate.8 +1 -1
  196. data/man/man8/puppet-help.8 +1 -1
  197. data/man/man8/puppet-lookup.8 +1 -1
  198. data/man/man8/puppet-module.8 +1 -58
  199. data/man/man8/puppet-node.8 +4 -1
  200. data/man/man8/puppet-parser.8 +1 -1
  201. data/man/man8/puppet-plugin.8 +1 -1
  202. data/man/man8/puppet-report.8 +4 -1
  203. data/man/man8/puppet-resource.8 +1 -1
  204. data/man/man8/puppet-script.8 +1 -1
  205. data/man/man8/puppet-ssl.8 +1 -1
  206. data/man/man8/puppet.8 +2 -2
  207. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  208. data/spec/integration/application/agent_spec.rb +24 -11
  209. data/spec/integration/application/apply_spec.rb +1 -1
  210. data/spec/integration/application/filebucket_spec.rb +16 -16
  211. data/spec/integration/application/help_spec.rb +2 -0
  212. data/spec/integration/application/plugin_spec.rb +23 -1
  213. data/spec/integration/defaults_spec.rb +7 -3
  214. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  215. data/spec/integration/network/http_pool_spec.rb +3 -21
  216. data/spec/integration/parser/catalog_spec.rb +0 -38
  217. data/spec/integration/parser/node_spec.rb +0 -9
  218. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  219. data/spec/integration/type/file_spec.rb +5 -4
  220. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  221. data/spec/integration/util/windows/security_spec.rb +1 -1
  222. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  223. data/spec/lib/puppet_spec/settings.rb +7 -1
  224. data/spec/spec_helper.rb +2 -0
  225. data/spec/unit/agent_spec.rb +0 -2
  226. data/spec/unit/application/config_spec.rb +224 -4
  227. data/spec/unit/application/facts_spec.rb +35 -0
  228. data/spec/unit/application/filebucket_spec.rb +41 -39
  229. data/spec/unit/application/ssl_spec.rb +2 -2
  230. data/spec/unit/certificate_factory_spec.rb +1 -1
  231. data/spec/unit/configurer/downloader_spec.rb +6 -2
  232. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  233. data/spec/unit/configurer_spec.rb +12 -9
  234. data/spec/unit/context/trusted_information_spec.rb +2 -6
  235. data/spec/unit/defaults_spec.rb +77 -28
  236. data/spec/unit/environments_spec.rb +0 -3
  237. data/spec/unit/face/config_spec.rb +27 -32
  238. data/spec/unit/face/facts_spec.rb +4 -0
  239. data/spec/unit/face/plugin_spec.rb +73 -33
  240. data/spec/unit/file_bucket/file_spec.rb +1 -1
  241. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  242. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  243. data/spec/unit/functions/camelcase_spec.rb +1 -1
  244. data/spec/unit/functions/capitalize_spec.rb +1 -1
  245. data/spec/unit/functions/downcase_spec.rb +1 -1
  246. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  247. data/spec/unit/functions/upcase_spec.rb +1 -1
  248. data/spec/unit/http/client_spec.rb +7 -8
  249. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  250. data/spec/unit/http/external_client_spec.rb +4 -4
  251. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  252. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  253. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  254. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  255. data/spec/unit/http/resolver_spec.rb +13 -13
  256. data/spec/unit/http/service/compiler_spec.rb +49 -62
  257. data/spec/unit/http/service/file_server_spec.rb +3 -3
  258. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  259. data/spec/unit/http/service_spec.rb +1 -2
  260. data/spec/unit/http/session_spec.rb +16 -14
  261. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  262. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  263. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  264. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  265. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  266. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  267. data/spec/unit/indirector/file_server_spec.rb +1 -15
  268. data/spec/unit/indirector/node/json_spec.rb +33 -0
  269. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  270. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  271. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  272. data/spec/unit/indirector/request_spec.rb +0 -264
  273. data/spec/unit/indirector/rest_spec.rb +98 -752
  274. data/spec/unit/network/authconfig_spec.rb +2 -132
  275. data/spec/unit/network/authorization_spec.rb +2 -55
  276. data/spec/unit/network/formats_spec.rb +4 -4
  277. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
  278. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  279. data/spec/unit/network/http/api_spec.rb +10 -0
  280. data/spec/unit/network/http/connection_spec.rb +19 -41
  281. data/spec/unit/network/http/handler_spec.rb +0 -6
  282. data/spec/unit/network/http_pool_spec.rb +0 -4
  283. data/spec/unit/node/environment_spec.rb +33 -21
  284. data/spec/unit/node_spec.rb +2 -54
  285. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  286. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  287. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  288. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  289. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  290. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  291. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  292. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  293. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  294. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  295. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  296. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  297. data/spec/unit/pops/visitor_spec.rb +1 -1
  298. data/spec/unit/provider/nameservice_spec.rb +0 -57
  299. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  300. data/spec/unit/provider/package/gem_spec.rb +32 -0
  301. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  302. data/spec/unit/provider/service/smf_spec.rb +401 -165
  303. data/spec/unit/provider/service/windows_spec.rb +0 -1
  304. data/spec/unit/provider_spec.rb +0 -12
  305. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  306. data/spec/unit/resource/type_collection_spec.rb +2 -22
  307. data/spec/unit/resource_spec.rb +0 -56
  308. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  309. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  310. data/spec/unit/settings/port_setting_spec.rb +31 -0
  311. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  312. data/spec/unit/settings_spec.rb +423 -236
  313. data/spec/unit/ssl/base_spec.rb +36 -3
  314. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  315. data/spec/unit/ssl/certificate_spec.rb +2 -11
  316. data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
  317. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  318. data/spec/unit/ssl/verifier_spec.rb +0 -21
  319. data/spec/unit/transaction/report_spec.rb +0 -2
  320. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  321. data/spec/unit/transaction_spec.rb +45 -79
  322. data/spec/unit/type/file/checksum_spec.rb +6 -6
  323. data/spec/unit/type/file/content_spec.rb +1 -1
  324. data/spec/unit/type/file/ensure_spec.rb +1 -1
  325. data/spec/unit/type/file/mode_spec.rb +1 -1
  326. data/spec/unit/type/file/source_spec.rb +0 -1
  327. data/spec/unit/type/file_spec.rb +12 -6
  328. data/spec/unit/type/package_spec.rb +1 -1
  329. data/spec/unit/type_spec.rb +20 -0
  330. data/spec/unit/util/backups_spec.rb +0 -2
  331. data/spec/unit/util/execution_spec.rb +0 -29
  332. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  333. data/spec/unit/util/rubygems_spec.rb +2 -2
  334. data/spec/unit/util/run_mode_spec.rb +21 -121
  335. data/spec/unit/util/windows/string_spec.rb +1 -3
  336. data/spec/unit/util/yaml_spec.rb +0 -54
  337. data/spec/unit/util_spec.rb +0 -18
  338. metadata +50 -176
  339. data/conf/auth.conf +0 -150
  340. data/lib/puppet/application/cert.rb +0 -76
  341. data/lib/puppet/application/key.rb +0 -4
  342. data/lib/puppet/application/man.rb +0 -4
  343. data/lib/puppet/application/status.rb +0 -4
  344. data/lib/puppet/face/key.rb +0 -16
  345. data/lib/puppet/face/man.rb +0 -145
  346. data/lib/puppet/face/module/build.rb +0 -14
  347. data/lib/puppet/face/module/generate.rb +0 -14
  348. data/lib/puppet/face/module/search.rb +0 -103
  349. data/lib/puppet/face/status.rb +0 -51
  350. data/lib/puppet/indirector/certificate/file.rb +0 -9
  351. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  352. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  353. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  354. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  355. data/lib/puppet/indirector/file_content/http.rb +0 -22
  356. data/lib/puppet/indirector/key/file.rb +0 -46
  357. data/lib/puppet/indirector/key/memory.rb +0 -7
  358. data/lib/puppet/indirector/ssl_file.rb +0 -162
  359. data/lib/puppet/indirector/status.rb +0 -3
  360. data/lib/puppet/indirector/status/local.rb +0 -12
  361. data/lib/puppet/indirector/status/rest.rb +0 -27
  362. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  363. data/lib/puppet/network/auth_config_parser.rb +0 -90
  364. data/lib/puppet/network/authstore.rb +0 -283
  365. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  366. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  367. data/lib/puppet/network/http/base_pool.rb +0 -36
  368. data/lib/puppet/network/http/compression.rb +0 -127
  369. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  370. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  371. data/lib/puppet/network/rest_controller.rb +0 -2
  372. data/lib/puppet/network/rights.rb +0 -210
  373. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  374. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  375. data/lib/puppet/parser/environment_compiler.rb +0 -202
  376. data/lib/puppet/pops/types/enumeration.rb +0 -16
  377. data/lib/puppet/resource/capability_finder.rb +0 -154
  378. data/lib/puppet/rest/errors.rb +0 -15
  379. data/lib/puppet/rest/response.rb +0 -35
  380. data/lib/puppet/rest/route.rb +0 -85
  381. data/lib/puppet/rest/routes.rb +0 -135
  382. data/lib/puppet/ssl/host.rb +0 -505
  383. data/lib/puppet/ssl/key.rb +0 -61
  384. data/lib/puppet/ssl/validator.rb +0 -61
  385. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  386. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  387. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  388. data/lib/puppet/status.rb +0 -40
  389. data/lib/puppet/util/connection.rb +0 -88
  390. data/lib/puppet/util/ssl.rb +0 -83
  391. data/lib/puppet/util/windows/api_types.rb +0 -309
  392. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  393. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  394. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  395. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  396. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  397. data/lib/puppet/vendor/pathspec/README.md +0 -53
  398. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  399. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  400. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  401. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  402. data/man/man8/puppet-key.8 +0 -126
  403. data/man/man8/puppet-man.8 +0 -76
  404. data/man/man8/puppet-status.8 +0 -108
  405. data/spec/integration/application/config_spec.rb +0 -74
  406. data/spec/integration/network/authconfig_spec.rb +0 -256
  407. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  408. data/spec/unit/application/man_spec.rb +0 -52
  409. data/spec/unit/capability_spec.rb +0 -414
  410. data/spec/unit/face/catalog_spec.rb +0 -6
  411. data/spec/unit/face/key_spec.rb +0 -9
  412. data/spec/unit/face/module/search_spec.rb +0 -231
  413. data/spec/unit/face/module_spec.rb +0 -3
  414. data/spec/unit/face/status_spec.rb +0 -9
  415. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  416. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  417. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  418. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  419. data/spec/unit/indirector/key/file_spec.rb +0 -79
  420. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  421. data/spec/unit/indirector/status/local_spec.rb +0 -10
  422. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  423. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  424. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  425. data/spec/unit/network/authstore_spec.rb +0 -422
  426. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  427. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  428. data/spec/unit/network/http/compression_spec.rb +0 -240
  429. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  430. data/spec/unit/network/http_spec.rb +0 -9
  431. data/spec/unit/network/rights_spec.rb +0 -439
  432. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  433. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  434. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  435. data/spec/unit/rest/route_spec.rb +0 -132
  436. data/spec/unit/ssl/host_spec.rb +0 -650
  437. data/spec/unit/ssl/key_spec.rb +0 -173
  438. data/spec/unit/ssl/validator_spec.rb +0 -278
  439. data/spec/unit/status_spec.rb +0 -45
  440. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -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
@@ -1,6 +1,5 @@
1
1
  # coding: utf-8
2
- require 'puppet/util/windows'
3
- require 'ffi'
2
+ require 'puppet/ffi/windows'
4
3
 
5
4
  module Puppet::Util::Windows
6
5
  # This module is designed to provide an API between the windows system and puppet for
@@ -8,315 +7,22 @@ module Puppet::Util::Windows
8
7
  #
9
8
  # for an overview of the service state transitions see: https://docs.microsoft.com/en-us/windows/desktop/Services/service-status-transitions
10
9
  module Service
11
- extend FFI::Library
12
10
  extend Puppet::Util::Windows::String
13
11
 
14
- FILE = Puppet::Util::Windows::File
12
+ include Puppet::FFI::Windows::Constants
13
+ extend Puppet::FFI::Windows::Constants
14
+
15
+ include Puppet::FFI::Windows::Structs
16
+ extend Puppet::FFI::Windows::Structs
17
+
18
+ include Puppet::FFI::Windows::Functions
19
+ extend Puppet::FFI::Windows::Functions
15
20
 
16
21
  # integer value of the floor for timeouts when waiting for service pending states.
17
22
  # puppet will wait the length of dwWaitHint if it is longer than this value, but
18
23
  # no shorter
19
24
  DEFAULT_TIMEOUT = 30
20
25
 
21
- # Service error codes
22
- # https://docs.microsoft.com/en-us/windows/desktop/debug/system-error-codes--1000-1299-
23
- ERROR_SERVICE_DOES_NOT_EXIST = 0x00000424
24
-
25
- # Service control codes
26
- # https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-controlserviceexw
27
- SERVICE_CONTROL_STOP = 0x00000001
28
- SERVICE_CONTROL_PAUSE = 0x00000002
29
- SERVICE_CONTROL_CONTINUE = 0x00000003
30
- SERVICE_CONTROL_INTERROGATE = 0x00000004
31
- SERVICE_CONTROL_SHUTDOWN = 0x00000005
32
- SERVICE_CONTROL_PARAMCHANGE = 0x00000006
33
- SERVICE_CONTROL_NETBINDADD = 0x00000007
34
- SERVICE_CONTROL_NETBINDREMOVE = 0x00000008
35
- SERVICE_CONTROL_NETBINDENABLE = 0x00000009
36
- SERVICE_CONTROL_NETBINDDISABLE = 0x0000000A
37
- SERVICE_CONTROL_DEVICEEVENT = 0x0000000B
38
- SERVICE_CONTROL_HARDWAREPROFILECHANGE = 0x0000000C
39
- SERVICE_CONTROL_POWEREVENT = 0x0000000D
40
- SERVICE_CONTROL_SESSIONCHANGE = 0x0000000E
41
- SERVICE_CONTROL_PRESHUTDOWN = 0x0000000F
42
- SERVICE_CONTROL_TIMECHANGE = 0x00000010
43
- SERVICE_CONTROL_TRIGGEREVENT = 0x00000020
44
- SERVICE_CONTROL_SIGNALS = {
45
- SERVICE_CONTROL_STOP => :SERVICE_CONTROL_STOP,
46
- SERVICE_CONTROL_PAUSE => :SERVICE_CONTROL_PAUSE,
47
- SERVICE_CONTROL_CONTINUE => :SERVICE_CONTROL_CONTINUE,
48
- SERVICE_CONTROL_INTERROGATE => :SERVICE_CONTROL_INTERROGATE,
49
- SERVICE_CONTROL_SHUTDOWN => :SERVICE_CONTROL_SHUTDOWN,
50
- SERVICE_CONTROL_PARAMCHANGE => :SERVICE_CONTROL_PARAMCHANGE,
51
- SERVICE_CONTROL_NETBINDADD => :SERVICE_CONTROL_NETBINDADD,
52
- SERVICE_CONTROL_NETBINDREMOVE => :SERVICE_CONTROL_NETBINDREMOVE,
53
- SERVICE_CONTROL_NETBINDENABLE => :SERVICE_CONTROL_NETBINDENABLE,
54
- SERVICE_CONTROL_NETBINDDISABLE => :SERVICE_CONTROL_NETBINDDISABLE,
55
- SERVICE_CONTROL_DEVICEEVENT => :SERVICE_CONTROL_DEVICEEVENT,
56
- SERVICE_CONTROL_HARDWAREPROFILECHANGE => :SERVICE_CONTROL_HARDWAREPROFILECHANGE,
57
- SERVICE_CONTROL_POWEREVENT => :SERVICE_CONTROL_POWEREVENT,
58
- SERVICE_CONTROL_SESSIONCHANGE => :SERVICE_CONTROL_SESSIONCHANGE,
59
- SERVICE_CONTROL_PRESHUTDOWN => :SERVICE_CONTROL_PRESHUTDOWN,
60
- SERVICE_CONTROL_TIMECHANGE => :SERVICE_CONTROL_TIMECHANGE,
61
- SERVICE_CONTROL_TRIGGEREVENT => :SERVICE_CONTROL_TRIGGEREVENT
62
- }
63
-
64
-
65
- # Service start type codes
66
- # https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-changeserviceconfigw
67
- SERVICE_AUTO_START = 0x00000002
68
- SERVICE_BOOT_START = 0x00000000
69
- SERVICE_DEMAND_START = 0x00000003
70
- SERVICE_DISABLED = 0x00000004
71
- SERVICE_SYSTEM_START = 0x00000001
72
- SERVICE_START_TYPES = {
73
- SERVICE_AUTO_START => :SERVICE_AUTO_START,
74
- SERVICE_BOOT_START => :SERVICE_BOOT_START,
75
- SERVICE_DEMAND_START => :SERVICE_DEMAND_START,
76
- SERVICE_DISABLED => :SERVICE_DISABLED,
77
- SERVICE_SYSTEM_START => :SERVICE_SYSTEM_START,
78
- }
79
-
80
- # Service type codes
81
- # https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-changeserviceconfigw
82
- SERVICE_FILE_SYSTEM_DRIVER = 0x00000002
83
- SERVICE_KERNEL_DRIVER = 0x00000001
84
- SERVICE_WIN32_OWN_PROCESS = 0x00000010
85
- SERVICE_WIN32_SHARE_PROCESS = 0x00000020
86
- SERVICE_USER_OWN_PROCESS = 0x00000050
87
- SERVICE_USER_SHARE_PROCESS = 0x00000060
88
- # Available only if service is also SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS
89
- SERVICE_INTERACTIVE_PROCESS = 0x00000100
90
- ALL_SERVICE_TYPES =
91
- SERVICE_FILE_SYSTEM_DRIVER |
92
- SERVICE_KERNEL_DRIVER |
93
- SERVICE_WIN32_OWN_PROCESS |
94
- SERVICE_WIN32_SHARE_PROCESS
95
-
96
- # Current state codes
97
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_service_status_process
98
- SERVICE_CONTINUE_PENDING = 0x00000005
99
- SERVICE_PAUSE_PENDING = 0x00000006
100
- SERVICE_PAUSED = 0x00000007
101
- SERVICE_RUNNING = 0x00000004
102
- SERVICE_START_PENDING = 0x00000002
103
- SERVICE_STOP_PENDING = 0x00000003
104
- SERVICE_STOPPED = 0x00000001
105
- UNSAFE_PENDING_STATES = [SERVICE_START_PENDING, SERVICE_STOP_PENDING]
106
- FINAL_STATES = {
107
- SERVICE_CONTINUE_PENDING => SERVICE_RUNNING,
108
- SERVICE_PAUSE_PENDING => SERVICE_PAUSED,
109
- SERVICE_START_PENDING => SERVICE_RUNNING,
110
- SERVICE_STOP_PENDING => SERVICE_STOPPED
111
- }
112
- SERVICE_STATES = {
113
- SERVICE_CONTINUE_PENDING => :SERVICE_CONTINUE_PENDING,
114
- SERVICE_PAUSE_PENDING => :SERVICE_PAUSE_PENDING,
115
- SERVICE_PAUSED => :SERVICE_PAUSED,
116
- SERVICE_RUNNING => :SERVICE_RUNNING,
117
- SERVICE_START_PENDING => :SERVICE_START_PENDING,
118
- SERVICE_STOP_PENDING => :SERVICE_STOP_PENDING,
119
- SERVICE_STOPPED => :SERVICE_STOPPED,
120
- }
121
-
122
- # Service accepts control codes
123
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_service_status_process
124
- SERVICE_ACCEPT_STOP = 0x00000001
125
- SERVICE_ACCEPT_PAUSE_CONTINUE = 0x00000002
126
- SERVICE_ACCEPT_SHUTDOWN = 0x00000004
127
- SERVICE_ACCEPT_PARAMCHANGE = 0x00000008
128
- SERVICE_ACCEPT_NETBINDCHANGE = 0x00000010
129
- SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 0x00000020
130
- SERVICE_ACCEPT_POWEREVENT = 0x00000040
131
- SERVICE_ACCEPT_SESSIONCHANGE = 0x00000080
132
- SERVICE_ACCEPT_PRESHUTDOWN = 0x00000100
133
- SERVICE_ACCEPT_TIMECHANGE = 0x00000200
134
- SERVICE_ACCEPT_TRIGGEREVENT = 0x00000400
135
- SERVICE_ACCEPT_USER_LOGOFF = 0x00000800
136
-
137
- # Service manager access codes
138
- # https://docs.microsoft.com/en-us/windows/desktop/Services/service-security-and-access-rights
139
- SC_MANAGER_CREATE_SERVICE = 0x00000002
140
- SC_MANAGER_CONNECT = 0x00000001
141
- SC_MANAGER_ENUMERATE_SERVICE = 0x00000004
142
- SC_MANAGER_LOCK = 0x00000008
143
- SC_MANAGER_MODIFY_BOOT_CONFIG = 0x00000020
144
- SC_MANAGER_QUERY_LOCK_STATUS = 0x00000010
145
- SC_MANAGER_ALL_ACCESS =
146
- FILE::STANDARD_RIGHTS_REQUIRED |
147
- SC_MANAGER_CREATE_SERVICE |
148
- SC_MANAGER_CONNECT |
149
- SC_MANAGER_ENUMERATE_SERVICE |
150
- SC_MANAGER_LOCK |
151
- SC_MANAGER_MODIFY_BOOT_CONFIG |
152
- SC_MANAGER_QUERY_LOCK_STATUS
153
-
154
-
155
- # Service access codes
156
- # https://docs.microsoft.com/en-us/windows/desktop/Services/service-security-and-access-rights
157
- SERVICE_CHANGE_CONFIG = 0x0002
158
- SERVICE_ENUMERATE_DEPENDENTS = 0x0008
159
- SERVICE_INTERROGATE = 0x0080
160
- SERVICE_PAUSE_CONTINUE = 0x0040
161
- SERVICE_QUERY_STATUS = 0x0004
162
- SERVICE_QUERY_CONFIG = 0x0001
163
- SERVICE_START = 0x0010
164
- SERVICE_STOP = 0x0020
165
- SERVICE_USER_DEFINED_CONTROL = 0x0100
166
- SERVICE_ALL_ACCESS =
167
- FILE::STANDARD_RIGHTS_REQUIRED |
168
- SERVICE_CHANGE_CONFIG |
169
- SERVICE_ENUMERATE_DEPENDENTS |
170
- SERVICE_INTERROGATE |
171
- SERVICE_PAUSE_CONTINUE |
172
- SERVICE_QUERY_STATUS |
173
- SERVICE_QUERY_CONFIG |
174
- SERVICE_START |
175
- SERVICE_STOP |
176
- SERVICE_USER_DEFINED_CONTROL
177
-
178
- # Service config codes
179
- # From the windows 10 SDK:
180
- # //
181
- # // Value to indicate no change to an optional parameter
182
- # //
183
- # #define SERVICE_NO_CHANGE 0xffffffff
184
- # https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2w
185
- SERVICE_CONFIG_DESCRIPTION = 0x00000001
186
- SERVICE_CONFIG_FAILURE_ACTIONS = 0x00000002
187
- SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 0x00000003
188
- SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 0x00000004
189
- SERVICE_CONFIG_SERVICE_SID_INFO = 0x00000005
190
- SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 0x00000006
191
- SERVICE_CONFIG_PRESHUTDOWN_INFO = 0x00000007
192
- SERVICE_CONFIG_TRIGGER_INFO = 0x00000008
193
- SERVICE_CONFIG_PREFERRED_NODE = 0x00000009
194
- SERVICE_CONFIG_LAUNCH_PROTECTED = 0x00000012
195
- SERVICE_NO_CHANGE = 0xffffffff
196
- SERVICE_CONFIG_TYPES = {
197
- SERVICE_CONFIG_DESCRIPTION => :SERVICE_CONFIG_DESCRIPTION,
198
- SERVICE_CONFIG_FAILURE_ACTIONS => :SERVICE_CONFIG_FAILURE_ACTIONS,
199
- SERVICE_CONFIG_DELAYED_AUTO_START_INFO => :SERVICE_CONFIG_DELAYED_AUTO_START_INFO,
200
- SERVICE_CONFIG_FAILURE_ACTIONS_FLAG => :SERVICE_CONFIG_FAILURE_ACTIONS_FLAG,
201
- SERVICE_CONFIG_SERVICE_SID_INFO => :SERVICE_CONFIG_SERVICE_SID_INFO,
202
- SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO => :SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO,
203
- SERVICE_CONFIG_PRESHUTDOWN_INFO => :SERVICE_CONFIG_PRESHUTDOWN_INFO,
204
- SERVICE_CONFIG_TRIGGER_INFO => :SERVICE_CONFIG_TRIGGER_INFO,
205
- SERVICE_CONFIG_PREFERRED_NODE => :SERVICE_CONFIG_PREFERRED_NODE,
206
- SERVICE_CONFIG_LAUNCH_PROTECTED => :SERVICE_CONFIG_LAUNCH_PROTECTED,
207
- }
208
-
209
- # Service enum codes
210
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-enumservicesstatusexa
211
- SERVICE_ACTIVE = 0x00000001
212
- SERVICE_INACTIVE = 0x00000002
213
- SERVICE_STATE_ALL =
214
- SERVICE_ACTIVE |
215
- SERVICE_INACTIVE
216
-
217
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_enum_service_status_processw
218
- SERVICENAME_MAX = 256
219
-
220
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_service_status_process
221
- # typedef struct _SERVICE_STATUS_PROCESS {
222
- # DWORD dwServiceType;
223
- # DWORD dwCurrentState;
224
- # DWORD dwControlsAccepted;
225
- # DWORD dwWin32ExitCode;
226
- # DWORD dwServiceSpecificExitCode;
227
- # DWORD dwCheckPoint;
228
- # DWORD dwWaitHint;
229
- # DWORD dwProcessId;
230
- # DWORD dwServiceFlags;
231
- # } SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
232
- class SERVICE_STATUS_PROCESS < FFI::Struct
233
- layout(
234
- :dwServiceType, :dword,
235
- :dwCurrentState, :dword,
236
- :dwControlsAccepted, :dword,
237
- :dwWin32ExitCode, :dword,
238
- :dwServiceSpecificExitCode, :dword,
239
- :dwCheckPoint, :dword,
240
- :dwWaitHint, :dword,
241
- :dwProcessId, :dword,
242
- :dwServiceFlags, :dword
243
- )
244
- end
245
-
246
- # https://docs.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_delayed_auto_start_info
247
- # typedef struct _SERVICE_DELAYED_AUTO_START_INFO {
248
- # BOOL fDelayedAutostart;
249
- # } SERVICE_DELAYED_AUTO_START_INFO, *LPSERVICE_DELAYED_AUTO_START_INFO;
250
- class SERVICE_DELAYED_AUTO_START_INFO < FFI::Struct
251
- layout(:fDelayedAutostart, :int)
252
- alias aset []=
253
- # Intercept the accessor so that we can handle either true/false or 1/0.
254
- # Since there is only one member, there’s no need to check the key name.
255
- def []=(key, value)
256
- [0, false].include?(value) ? aset(key, 0) : aset(key, 1)
257
- end
258
- end
259
-
260
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_enum_service_status_processw
261
- # typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
262
- # LPWSTR lpServiceName;
263
- # LPWSTR lpDisplayName;
264
- # SERVICE_STATUS_PROCESS ServiceStatusProcess;
265
- # } ENUM_SERVICE_STATUS_PROCESSW, *LPENUM_SERVICE_STATUS_PROCESSW;
266
- class ENUM_SERVICE_STATUS_PROCESSW < FFI::Struct
267
- layout(
268
- :lpServiceName, :pointer,
269
- :lpDisplayName, :pointer,
270
- :ServiceStatusProcess, SERVICE_STATUS_PROCESS
271
- )
272
- end
273
-
274
- # typedef struct _SERVICE_STATUS {
275
- # DWORD dwServiceType;
276
- # DWORD dwCurrentState;
277
- # DWORD dwControlsAccepted;
278
- # DWORD dwWin32ExitCode;
279
- # DWORD dwServiceSpecificExitCode;
280
- # DWORD dwCheckPoint;
281
- # DWORD dwWaitHint;
282
- # } SERVICE_STATUS, *LPSERVICE_STATUS;
283
- class SERVICE_STATUS < FFI::Struct
284
- layout(
285
- :dwServiceType, :dword,
286
- :dwCurrentState, :dword,
287
- :dwControlsAccepted, :dword,
288
- :dwWin32ExitCode, :dword,
289
- :dwServiceSpecificExitCode, :dword,
290
- :dwCheckPoint, :dword,
291
- :dwWaitHint, :dword,
292
- )
293
- end
294
-
295
- # typedef struct _QUERY_SERVICE_CONFIGW {
296
- # DWORD dwServiceType;
297
- # DWORD dwStartType;
298
- # DWORD dwErrorControl;
299
- # LPWSTR lpBinaryPathName;
300
- # LPWSTR lpLoadOrderGroup;
301
- # DWORD dwTagId;
302
- # LPWSTR lpDependencies;
303
- # LPWSTR lpServiceStartName;
304
- # LPWSTR lpDisplayName;
305
- # } QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
306
- class QUERY_SERVICE_CONFIGW < FFI::Struct
307
- layout(
308
- :dwServiceType, :dword,
309
- :dwStartType, :dword,
310
- :dwErrorControl, :dword,
311
- :lpBinaryPathName, :pointer,
312
- :lpLoadOrderGroup, :pointer,
313
- :dwTagId, :dword,
314
- :lpDependencies, :pointer,
315
- :lpServiceStartName, :pointer,
316
- :lpDisplayName, :pointer,
317
- )
318
- end
319
-
320
26
  # Returns true if the service exists, false otherwise.
321
27
  #
322
28
  # @param [String] service_name name of the service
@@ -991,162 +697,5 @@ module Puppet::Util::Windows
991
697
  end
992
698
  private :milliseconds_to_seconds
993
699
  end
994
-
995
- # https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-openscmanagerw
996
- # SC_HANDLE OpenSCManagerW(
997
- # LPCWSTR lpMachineName,
998
- # LPCWSTR lpDatabaseName,
999
- # DWORD dwDesiredAccess
1000
- # );
1001
- ffi_lib :advapi32
1002
- attach_function_private :OpenSCManagerW,
1003
- [:lpcwstr, :lpcwstr, :dword], :handle
1004
-
1005
- # https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-openservicew
1006
- # SC_HANDLE OpenServiceW(
1007
- # SC_HANDLE hSCManager,
1008
- # LPCWSTR lpServiceName,
1009
- # DWORD dwDesiredAccess
1010
- # );
1011
- ffi_lib :advapi32
1012
- attach_function_private :OpenServiceW,
1013
- [:handle, :lpcwstr, :dword], :handle
1014
-
1015
- # https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-closeservicehandle
1016
- # BOOL CloseServiceHandle(
1017
- # SC_HANDLE hSCObject
1018
- # );
1019
- ffi_lib :advapi32
1020
- attach_function_private :CloseServiceHandle,
1021
- [:handle], :win32_bool
1022
-
1023
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-queryservicestatusex
1024
- # BOOL QueryServiceStatusEx(
1025
- # SC_HANDLE hService,
1026
- # SC_STATUS_TYPE InfoLevel,
1027
- # LPBYTE lpBuffer,
1028
- # DWORD cbBufSize,
1029
- # LPDWORD pcbBytesNeeded
1030
- # );
1031
- SC_STATUS_TYPE = enum(
1032
- :SC_STATUS_PROCESS_INFO, 0,
1033
- )
1034
- ffi_lib :advapi32
1035
- attach_function_private :QueryServiceStatusEx,
1036
- [:handle, SC_STATUS_TYPE, :lpbyte, :dword, :lpdword], :win32_bool
1037
-
1038
- # https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-queryserviceconfigw
1039
- # BOOL QueryServiceConfigW(
1040
- # SC_HANDLE hService,
1041
- # LPQUERY_SERVICE_CONFIGW lpServiceConfig,
1042
- # DWORD cbBufSize,
1043
- # LPDWORD pcbBytesNeeded
1044
- # );
1045
- ffi_lib :advapi32
1046
- attach_function_private :QueryServiceConfigW,
1047
- [:handle, :lpbyte, :dword, :lpdword], :win32_bool
1048
-
1049
- # https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-queryserviceconfig2w
1050
- # BOOL QueryServiceConfig2W(
1051
- # SC_HANDLE hService,
1052
- # DWORD dwInfoLevel,
1053
- # LPBYTE lpBuffer,
1054
- # DWORD cbBufSize,
1055
- # LPDWORD pcbBytesNeeded
1056
- # );
1057
- ffi_lib :advapi32
1058
- attach_function_private :QueryServiceConfig2W,
1059
- [:handle, :dword, :lpbyte, :dword, :lpdword], :win32_bool
1060
-
1061
- # https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-startservicew
1062
- # BOOL StartServiceW(
1063
- # SC_HANDLE hService,
1064
- # DWORD dwNumServiceArgs,
1065
- # LPCWSTR *lpServiceArgVectors
1066
- # );
1067
- ffi_lib :advapi32
1068
- attach_function_private :StartServiceW,
1069
- [:handle, :dword, :pointer], :win32_bool
1070
-
1071
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-controlservice
1072
- # BOOL ControlService(
1073
- # SC_HANDLE hService,
1074
- # DWORD dwControl,
1075
- # LPSERVICE_STATUS lpServiceStatus
1076
- # );
1077
- ffi_lib :advapi32
1078
- attach_function_private :ControlService,
1079
- [:handle, :dword, :pointer], :win32_bool
1080
-
1081
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-changeserviceconfigw
1082
- # BOOL ChangeServiceConfigW(
1083
- # SC_HANDLE hService,
1084
- # DWORD dwServiceType,
1085
- # DWORD dwStartType,
1086
- # DWORD dwErrorControl,
1087
- # LPCWSTR lpBinaryPathName,
1088
- # LPCWSTR lpLoadOrderGroup,
1089
- # LPDWORD lpdwTagId,
1090
- # LPCWSTR lpDependencies,
1091
- # LPCWSTR lpServiceStartName,
1092
- # LPCWSTR lpPassword,
1093
- # LPCWSTR lpDisplayName
1094
- # );
1095
- ffi_lib :advapi32
1096
- attach_function_private :ChangeServiceConfigW,
1097
- [
1098
- :handle,
1099
- :dword,
1100
- :dword,
1101
- :dword,
1102
- :lpcwstr,
1103
- :lpcwstr,
1104
- :lpdword,
1105
- :lpcwstr,
1106
- :lpcwstr,
1107
- :lpcwstr,
1108
- :lpcwstr
1109
- ], :win32_bool
1110
-
1111
- # https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2w
1112
- # BOOL ChangeServiceConfig2W(
1113
- # SC_HANDLE hService,
1114
- # DWORD dwInfoLevel,
1115
- # LPVOID lpInfo
1116
- # );
1117
- ffi_lib :advapi32
1118
- attach_function_private :ChangeServiceConfig2W,
1119
- [:handle, :dword, :lpvoid], :win32_bool
1120
-
1121
- # https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-enumservicesstatusexw
1122
- # BOOL EnumServicesStatusExW(
1123
- # SC_HANDLE hSCManager,
1124
- # SC_ENUM_TYPE InfoLevel,
1125
- # DWORD dwServiceType,
1126
- # DWORD dwServiceState,
1127
- # LPBYTE lpServices,
1128
- # DWORD cbBufSize,
1129
- # LPDWORD pcbBytesNeeded,
1130
- # LPDWORD lpServicesReturned,
1131
- # LPDWORD lpResumeHandle,
1132
- # LPCWSTR pszGroupName
1133
- # );
1134
- SC_ENUM_TYPE = enum(
1135
- :SC_ENUM_PROCESS_INFO, 0,
1136
- )
1137
- ffi_lib :advapi32
1138
- attach_function_private :EnumServicesStatusExW,
1139
- [
1140
- :handle,
1141
- SC_ENUM_TYPE,
1142
- :dword,
1143
- :dword,
1144
- :lpbyte,
1145
- :dword,
1146
- :lpdword,
1147
- :lpdword,
1148
- :lpdword,
1149
- :lpcwstr
1150
- ], :win32_bool
1151
700
  end
1152
701
  end