puppet 6.20.0-x64-mingw32 → 7.0.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +16 -2
- data/Gemfile +0 -2
- data/Gemfile.lock +18 -24
- data/README.md +1 -1
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +1 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/application.rb +178 -108
- data/lib/puppet/application/agent.rb +0 -1
- data/lib/puppet/application/apply.rb +2 -3
- data/lib/puppet/application/device.rb +100 -105
- data/lib/puppet/application/filebucket.rb +13 -9
- data/lib/puppet/application/script.rb +0 -1
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/application_support.rb +0 -7
- data/lib/puppet/configurer.rb +30 -45
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +97 -167
- data/lib/puppet/environments.rb +59 -58
- data/lib/puppet/face/facts.rb +51 -51
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/http.rb +22 -13
- data/lib/puppet/http/client.rb +164 -114
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +5 -15
- data/lib/puppet/http/resolver/server_list.rb +6 -10
- data/lib/puppet/http/resolver/settings.rb +4 -7
- data/lib/puppet/http/resolver/srv.rb +7 -11
- data/lib/puppet/http/response.rb +36 -54
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +12 -26
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +22 -69
- data/lib/puppet/http/service/file_server.rb +18 -27
- data/lib/puppet/http/service/puppetserver.rb +26 -12
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +11 -20
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/facts/facter.rb +24 -3
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +0 -101
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/installer.rb +2 -48
- data/lib/puppet/module_tool/errors/shared.rb +2 -17
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +3 -1
- data/lib/puppet/parser/ast/leaf.rb +2 -3
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/resource.rb +0 -69
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +9 -37
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +0 -4
- data/lib/puppet/provider/package/dpkg.rb +0 -10
- data/lib/puppet/provider/package/gem.rb +23 -3
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -4
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/reference/configuration.rb +7 -6
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -89
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +3 -119
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +73 -66
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_provider.rb +17 -0
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +1 -3
- data/lib/puppet/transaction.rb +1 -7
- data/lib/puppet/transaction/report.rb +2 -4
- data/lib/puppet/type.rb +0 -76
- data/lib/puppet/type/file.rb +5 -7
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/util/autoload.rb +8 -1
- data/lib/puppet/util/execution.rb +0 -11
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/posix.rb +5 -54
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/run_mode.rb +9 -1
- data/lib/puppet/util/windows.rb +3 -8
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +4 -9
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +587 -1312
- data/man/man5/puppet.conf.5 +39 -99
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +51 -36
- data/man/man8/puppet-filebucket.8 +4 -4
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -58
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
- data/spec/integration/application/agent_spec.rb +27 -138
- data/spec/integration/application/apply_spec.rb +1 -20
- data/spec/integration/application/filebucket_spec.rb +16 -16
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/plugin_spec.rb +23 -1
- data/spec/integration/defaults_spec.rb +14 -3
- data/spec/integration/network/http_pool_spec.rb +3 -21
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/resource/type_collection_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +9 -4
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/adsi_spec.rb +1 -3
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/registry_spec.rb +10 -0
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/lib/puppet_spec/puppetserver.rb +1 -1
- data/spec/lib/puppet_spec/settings.rb +1 -0
- data/spec/spec_helper.rb +6 -1
- data/spec/unit/agent_spec.rb +6 -10
- data/spec/unit/application/agent_spec.rb +1 -0
- data/spec/unit/application/facts_spec.rb +35 -0
- data/spec/unit/application/filebucket_spec.rb +43 -39
- data/spec/unit/application/ssl_spec.rb +2 -2
- data/spec/unit/application_spec.rb +9 -51
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +6 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +12 -9
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +2 -8
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +72 -42
- data/spec/unit/environments_spec.rb +19 -99
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +11 -0
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
- data/spec/unit/forge/module_release_spec.rb +7 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +7 -8
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +13 -13
- data/spec/unit/http/service/compiler_spec.rb +0 -62
- data/spec/unit/http/service/file_server_spec.rb +3 -3
- data/spec/unit/http/service/puppetserver_spec.rb +34 -4
- data/spec/unit/http/service_spec.rb +0 -1
- data/spec/unit/http/session_spec.rb +16 -14
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/face_spec.rb +1 -0
- data/spec/unit/indirector/facts/facter_spec.rb +98 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/indirection_spec.rb +12 -8
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/request_spec.rb +0 -264
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -66
- data/spec/unit/network/authconfig_spec.rb +2 -129
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -1
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +33 -21
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/compiler_spec.rb +19 -3
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/resource_spec.rb +8 -14
- data/spec/unit/parser/templatewrapper_spec.rb +3 -4
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/property_spec.rb +0 -1
- data/spec/unit/provider/nameservice_spec.rb +64 -122
- data/spec/unit/provider/package/apt_spec.rb +8 -4
- data/spec/unit/provider/package/base_spec.rb +5 -6
- data/spec/unit/provider/package/dpkg_spec.rb +0 -48
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/pacman_spec.rb +12 -18
- data/spec/unit/provider/package/pip_spec.rb +11 -6
- data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/windows_spec.rb +0 -1
- data/spec/unit/provider/user/aix_spec.rb +0 -5
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +8 -18
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +10 -67
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +23 -13
- data/spec/unit/ssl/base_spec.rb +37 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/additional_resource_generator_spec.rb +7 -3
- data/spec/unit/transaction/event_manager_spec.rb +11 -14
- data/spec/unit/transaction/report_spec.rb +0 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +48 -91
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +2 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/selinux_spec.rb +2 -0
- data/spec/unit/type/file/source_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +18 -6
- data/spec/unit/type/group_spec.rb +6 -13
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +1 -1
- data/spec/unit/type/tidy_spec.rb +1 -0
- data/spec/unit/type_spec.rb +22 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +1 -5
- data/spec/unit/util/backups_spec.rb +2 -3
- data/spec/unit/util/execution_spec.rb +11 -44
- data/spec/unit/util/inifile_spec.rb +14 -6
- data/spec/unit/util/log_spec.rb +7 -8
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +15 -363
- data/spec/unit/util/run_mode_spec.rb +21 -121
- data/spec/unit/util/selinux_spec.rb +52 -76
- data/spec/unit/util/storage_spec.rb +1 -3
- data/spec/unit/util/suidmanager_spec.rb +41 -44
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +6 -31
- metadata +40 -233
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/ffi/posix.rb +0 -10
- data/lib/puppet/ffi/posix/constants.rb +0 -14
- data/lib/puppet/ffi/posix/functions.rb +0 -24
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -184
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/settings/alias_setting.rb +0 -37
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/fact_dif.rb +0 -62
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -309
- data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
- data/spec/unit/application/man_spec.rb +0 -52
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -78
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -148
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -645
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
@@ -0,0 +1,404 @@
|
|
1
|
+
require 'puppet/ffi/windows'
|
2
|
+
|
3
|
+
module Puppet::FFI::Windows
|
4
|
+
module Constants
|
5
|
+
extend FFI::Library
|
6
|
+
|
7
|
+
FILE_ATTRIBUTE_READONLY = 0x00000001
|
8
|
+
FILE_ATTRIBUTE_DIRECTORY = 0x00000010
|
9
|
+
|
10
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379607(v=vs.85).aspx
|
11
|
+
# The right to use the object for synchronization. This enables a thread to
|
12
|
+
# wait until the object is in the signaled state. Some object types do not
|
13
|
+
# support this access right.
|
14
|
+
SYNCHRONIZE = 0x100000
|
15
|
+
# The right to delete the object.
|
16
|
+
DELETE = 0x00010000
|
17
|
+
# The right to read the information in the object's security descriptor, not including the information in the system access control list (SACL).
|
18
|
+
# READ_CONTROL = 0x00020000
|
19
|
+
# The right to modify the discretionary access control list (DACL) in the object's security descriptor.
|
20
|
+
WRITE_DAC = 0x00040000
|
21
|
+
# The right to change the owner in the object's security descriptor.
|
22
|
+
WRITE_OWNER = 0x00080000
|
23
|
+
|
24
|
+
# Combines DELETE, READ_CONTROL, WRITE_DAC, and WRITE_OWNER access.
|
25
|
+
STANDARD_RIGHTS_REQUIRED = 0xf0000
|
26
|
+
# Currently defined to equal READ_CONTROL.
|
27
|
+
STANDARD_RIGHTS_READ = 0x20000
|
28
|
+
# Currently defined to equal READ_CONTROL.
|
29
|
+
STANDARD_RIGHTS_WRITE = 0x20000
|
30
|
+
# Currently defined to equal READ_CONTROL.
|
31
|
+
STANDARD_RIGHTS_EXECUTE = 0x20000
|
32
|
+
# Combines DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER, and SYNCHRONIZE access.
|
33
|
+
STANDARD_RIGHTS_ALL = 0x1F0000
|
34
|
+
SPECIFIC_RIGHTS_ALL = 0xFFFF
|
35
|
+
|
36
|
+
FILE_READ_DATA = 1
|
37
|
+
FILE_WRITE_DATA = 2
|
38
|
+
FILE_APPEND_DATA = 4
|
39
|
+
FILE_READ_EA = 8
|
40
|
+
FILE_WRITE_EA = 16
|
41
|
+
FILE_EXECUTE = 32
|
42
|
+
FILE_DELETE_CHILD = 64
|
43
|
+
FILE_READ_ATTRIBUTES = 128
|
44
|
+
FILE_WRITE_ATTRIBUTES = 256
|
45
|
+
|
46
|
+
FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF
|
47
|
+
|
48
|
+
FILE_GENERIC_READ =
|
49
|
+
STANDARD_RIGHTS_READ |
|
50
|
+
FILE_READ_DATA |
|
51
|
+
FILE_READ_ATTRIBUTES |
|
52
|
+
FILE_READ_EA |
|
53
|
+
SYNCHRONIZE
|
54
|
+
|
55
|
+
FILE_GENERIC_WRITE =
|
56
|
+
STANDARD_RIGHTS_WRITE |
|
57
|
+
FILE_WRITE_DATA |
|
58
|
+
FILE_WRITE_ATTRIBUTES |
|
59
|
+
FILE_WRITE_EA |
|
60
|
+
FILE_APPEND_DATA |
|
61
|
+
SYNCHRONIZE
|
62
|
+
|
63
|
+
FILE_GENERIC_EXECUTE =
|
64
|
+
STANDARD_RIGHTS_EXECUTE |
|
65
|
+
FILE_READ_ATTRIBUTES |
|
66
|
+
FILE_EXECUTE |
|
67
|
+
SYNCHRONIZE
|
68
|
+
|
69
|
+
REPLACEFILE_WRITE_THROUGH = 0x1
|
70
|
+
REPLACEFILE_IGNORE_MERGE_ERRORS = 0x2
|
71
|
+
REPLACEFILE_IGNORE_ACL_ERRORS = 0x3
|
72
|
+
|
73
|
+
INVALID_FILE_ATTRIBUTES = 0xFFFFFFFF #define INVALID_FILE_ATTRIBUTES (DWORD (-1))
|
74
|
+
|
75
|
+
IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
|
76
|
+
IO_REPARSE_TAG_HSM = 0xC0000004
|
77
|
+
IO_REPARSE_TAG_HSM2 = 0x80000006
|
78
|
+
IO_REPARSE_TAG_SIS = 0x80000007
|
79
|
+
IO_REPARSE_TAG_WIM = 0x80000008
|
80
|
+
IO_REPARSE_TAG_CSV = 0x80000009
|
81
|
+
IO_REPARSE_TAG_DFS = 0x8000000A
|
82
|
+
IO_REPARSE_TAG_SYMLINK = 0xA000000C
|
83
|
+
IO_REPARSE_TAG_DFSR = 0x80000012
|
84
|
+
IO_REPARSE_TAG_DEDUP = 0x80000013
|
85
|
+
IO_REPARSE_TAG_NFS = 0x80000014
|
86
|
+
|
87
|
+
FILE_ATTRIBUTE_REPARSE_POINT = 0x400
|
88
|
+
|
89
|
+
GENERIC_READ = 0x80000000
|
90
|
+
GENERIC_WRITE = 0x40000000
|
91
|
+
GENERIC_EXECUTE = 0x20000000
|
92
|
+
GENERIC_ALL = 0x10000000
|
93
|
+
METHOD_BUFFERED = 0
|
94
|
+
FILE_SHARE_READ = 1
|
95
|
+
FILE_SHARE_WRITE = 2
|
96
|
+
OPEN_EXISTING = 3
|
97
|
+
FILE_DEVICE_FILE_SYSTEM = 0x00000009
|
98
|
+
FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
|
99
|
+
FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
|
100
|
+
SHGFI_DISPLAYNAME = 0x000000200
|
101
|
+
SHGFI_PIDL = 0x000000008
|
102
|
+
|
103
|
+
ERROR_FILE_NOT_FOUND = 2
|
104
|
+
ERROR_PATH_NOT_FOUND = 3
|
105
|
+
ERROR_ALREADY_EXISTS = 183
|
106
|
+
|
107
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa364571(v=vs.85).aspx
|
108
|
+
FSCTL_GET_REPARSE_POINT = 0x900a8
|
109
|
+
|
110
|
+
MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384
|
111
|
+
|
112
|
+
# Priority constants
|
113
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setpriorityclass
|
114
|
+
ABOVE_NORMAL_PRIORITY_CLASS = 0x0008000
|
115
|
+
BELOW_NORMAL_PRIORITY_CLASS = 0x0004000
|
116
|
+
HIGH_PRIORITY_CLASS = 0x0000080
|
117
|
+
IDLE_PRIORITY_CLASS = 0x0000040
|
118
|
+
NORMAL_PRIORITY_CLASS = 0x0000020
|
119
|
+
REALTIME_PRIORITY_CLASS = 0x0000010
|
120
|
+
|
121
|
+
# Process Access Rights
|
122
|
+
# https://docs.microsoft.com/en-us/windows/win32/procthread/process-security-and-access-rights
|
123
|
+
PROCESS_TERMINATE = 0x00000001
|
124
|
+
PROCESS_SET_INFORMATION = 0x00000200
|
125
|
+
PROCESS_QUERY_INFORMATION = 0x00000400
|
126
|
+
PROCESS_ALL_ACCESS = 0x001F0FFF
|
127
|
+
PROCESS_VM_READ = 0x00000010
|
128
|
+
|
129
|
+
# Process creation flags
|
130
|
+
# https://docs.microsoft.com/en-us/windows/win32/procthread/process-creation-flags
|
131
|
+
CREATE_BREAKAWAY_FROM_JOB = 0x01000000
|
132
|
+
CREATE_DEFAULT_ERROR_MODE = 0x04000000
|
133
|
+
CREATE_NEW_CONSOLE = 0x00000010
|
134
|
+
CREATE_NEW_PROCESS_GROUP = 0x00000200
|
135
|
+
CREATE_NO_WINDOW = 0x08000000
|
136
|
+
CREATE_PROTECTED_PROCESS = 0x00040000
|
137
|
+
CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
|
138
|
+
CREATE_SEPARATE_WOW_VDM = 0x00000800
|
139
|
+
CREATE_SHARED_WOW_VDM = 0x00001000
|
140
|
+
CREATE_SUSPENDED = 0x00000004
|
141
|
+
CREATE_UNICODE_ENVIRONMENT = 0x00000400
|
142
|
+
DEBUG_ONLY_THIS_PROCESS = 0x00000002
|
143
|
+
DEBUG_PROCESS = 0x00000001
|
144
|
+
DETACHED_PROCESS = 0x00000008
|
145
|
+
INHERIT_PARENT_AFFINITY = 0x00010000
|
146
|
+
|
147
|
+
# Logon options
|
148
|
+
LOGON_WITH_PROFILE = 0x00000001
|
149
|
+
|
150
|
+
# STARTUPINFOA constants
|
151
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/ns-processthreadsapi-startupinfoa
|
152
|
+
STARTF_USESTDHANDLES = 0x00000100
|
153
|
+
|
154
|
+
# Miscellaneous
|
155
|
+
HANDLE_FLAG_INHERIT = 0x00000001
|
156
|
+
SEM_FAILCRITICALERRORS = 0x00000001
|
157
|
+
SEM_NOGPFAULTERRORBOX = 0x00000002
|
158
|
+
|
159
|
+
# Error constants
|
160
|
+
INVALID_HANDLE_VALUE = FFI::Pointer.new(-1).address
|
161
|
+
|
162
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379626(v=vs.85).aspx
|
163
|
+
TOKEN_INFORMATION_CLASS = enum(
|
164
|
+
:TokenUser, 1,
|
165
|
+
:TokenGroups,
|
166
|
+
:TokenPrivileges,
|
167
|
+
:TokenOwner,
|
168
|
+
:TokenPrimaryGroup,
|
169
|
+
:TokenDefaultDacl,
|
170
|
+
:TokenSource,
|
171
|
+
:TokenType,
|
172
|
+
:TokenImpersonationLevel,
|
173
|
+
:TokenStatistics,
|
174
|
+
:TokenRestrictedSids,
|
175
|
+
:TokenSessionId,
|
176
|
+
:TokenGroupsAndPrivileges,
|
177
|
+
:TokenSessionReference,
|
178
|
+
:TokenSandBoxInert,
|
179
|
+
:TokenAuditPolicy,
|
180
|
+
:TokenOrigin,
|
181
|
+
:TokenElevationType,
|
182
|
+
:TokenLinkedToken,
|
183
|
+
:TokenElevation,
|
184
|
+
:TokenHasRestrictions,
|
185
|
+
:TokenAccessInformation,
|
186
|
+
:TokenVirtualizationAllowed,
|
187
|
+
:TokenVirtualizationEnabled,
|
188
|
+
:TokenIntegrityLevel,
|
189
|
+
:TokenUIAccess,
|
190
|
+
:TokenMandatoryPolicy,
|
191
|
+
:TokenLogonSid,
|
192
|
+
:TokenIsAppContainer,
|
193
|
+
:TokenCapabilities,
|
194
|
+
:TokenAppContainerSid,
|
195
|
+
:TokenAppContainerNumber,
|
196
|
+
:TokenUserClaimAttributes,
|
197
|
+
:TokenDeviceClaimAttributes,
|
198
|
+
:TokenRestrictedUserClaimAttributes,
|
199
|
+
:TokenRestrictedDeviceClaimAttributes,
|
200
|
+
:TokenDeviceGroups,
|
201
|
+
:TokenRestrictedDeviceGroups,
|
202
|
+
:TokenSecurityAttributes,
|
203
|
+
:TokenIsRestricted,
|
204
|
+
:MaxTokenInfoClass
|
205
|
+
)
|
206
|
+
|
207
|
+
# Service error codes
|
208
|
+
# https://docs.microsoft.com/en-us/windows/desktop/debug/system-error-codes--1000-1299-
|
209
|
+
ERROR_SERVICE_DOES_NOT_EXIST = 0x00000424
|
210
|
+
|
211
|
+
# Service control codes
|
212
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-controlserviceexw
|
213
|
+
SERVICE_CONTROL_STOP = 0x00000001
|
214
|
+
SERVICE_CONTROL_PAUSE = 0x00000002
|
215
|
+
SERVICE_CONTROL_CONTINUE = 0x00000003
|
216
|
+
SERVICE_CONTROL_INTERROGATE = 0x00000004
|
217
|
+
SERVICE_CONTROL_SHUTDOWN = 0x00000005
|
218
|
+
SERVICE_CONTROL_PARAMCHANGE = 0x00000006
|
219
|
+
SERVICE_CONTROL_NETBINDADD = 0x00000007
|
220
|
+
SERVICE_CONTROL_NETBINDREMOVE = 0x00000008
|
221
|
+
SERVICE_CONTROL_NETBINDENABLE = 0x00000009
|
222
|
+
SERVICE_CONTROL_NETBINDDISABLE = 0x0000000A
|
223
|
+
SERVICE_CONTROL_DEVICEEVENT = 0x0000000B
|
224
|
+
SERVICE_CONTROL_HARDWAREPROFILECHANGE = 0x0000000C
|
225
|
+
SERVICE_CONTROL_POWEREVENT = 0x0000000D
|
226
|
+
SERVICE_CONTROL_SESSIONCHANGE = 0x0000000E
|
227
|
+
SERVICE_CONTROL_PRESHUTDOWN = 0x0000000F
|
228
|
+
SERVICE_CONTROL_TIMECHANGE = 0x00000010
|
229
|
+
SERVICE_CONTROL_TRIGGEREVENT = 0x00000020
|
230
|
+
SERVICE_CONTROL_SIGNALS = {
|
231
|
+
SERVICE_CONTROL_STOP => :SERVICE_CONTROL_STOP,
|
232
|
+
SERVICE_CONTROL_PAUSE => :SERVICE_CONTROL_PAUSE,
|
233
|
+
SERVICE_CONTROL_CONTINUE => :SERVICE_CONTROL_CONTINUE,
|
234
|
+
SERVICE_CONTROL_INTERROGATE => :SERVICE_CONTROL_INTERROGATE,
|
235
|
+
SERVICE_CONTROL_SHUTDOWN => :SERVICE_CONTROL_SHUTDOWN,
|
236
|
+
SERVICE_CONTROL_PARAMCHANGE => :SERVICE_CONTROL_PARAMCHANGE,
|
237
|
+
SERVICE_CONTROL_NETBINDADD => :SERVICE_CONTROL_NETBINDADD,
|
238
|
+
SERVICE_CONTROL_NETBINDREMOVE => :SERVICE_CONTROL_NETBINDREMOVE,
|
239
|
+
SERVICE_CONTROL_NETBINDENABLE => :SERVICE_CONTROL_NETBINDENABLE,
|
240
|
+
SERVICE_CONTROL_NETBINDDISABLE => :SERVICE_CONTROL_NETBINDDISABLE,
|
241
|
+
SERVICE_CONTROL_DEVICEEVENT => :SERVICE_CONTROL_DEVICEEVENT,
|
242
|
+
SERVICE_CONTROL_HARDWAREPROFILECHANGE => :SERVICE_CONTROL_HARDWAREPROFILECHANGE,
|
243
|
+
SERVICE_CONTROL_POWEREVENT => :SERVICE_CONTROL_POWEREVENT,
|
244
|
+
SERVICE_CONTROL_SESSIONCHANGE => :SERVICE_CONTROL_SESSIONCHANGE,
|
245
|
+
SERVICE_CONTROL_PRESHUTDOWN => :SERVICE_CONTROL_PRESHUTDOWN,
|
246
|
+
SERVICE_CONTROL_TIMECHANGE => :SERVICE_CONTROL_TIMECHANGE,
|
247
|
+
SERVICE_CONTROL_TRIGGEREVENT => :SERVICE_CONTROL_TRIGGEREVENT
|
248
|
+
}
|
249
|
+
|
250
|
+
# Service start type codes
|
251
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-changeserviceconfigw
|
252
|
+
SERVICE_AUTO_START = 0x00000002
|
253
|
+
SERVICE_BOOT_START = 0x00000000
|
254
|
+
SERVICE_DEMAND_START = 0x00000003
|
255
|
+
SERVICE_DISABLED = 0x00000004
|
256
|
+
SERVICE_SYSTEM_START = 0x00000001
|
257
|
+
SERVICE_START_TYPES = {
|
258
|
+
SERVICE_AUTO_START => :SERVICE_AUTO_START,
|
259
|
+
SERVICE_BOOT_START => :SERVICE_BOOT_START,
|
260
|
+
SERVICE_DEMAND_START => :SERVICE_DEMAND_START,
|
261
|
+
SERVICE_DISABLED => :SERVICE_DISABLED,
|
262
|
+
SERVICE_SYSTEM_START => :SERVICE_SYSTEM_START,
|
263
|
+
}
|
264
|
+
|
265
|
+
# Service type codes
|
266
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-changeserviceconfigw
|
267
|
+
SERVICE_FILE_SYSTEM_DRIVER = 0x00000002
|
268
|
+
SERVICE_KERNEL_DRIVER = 0x00000001
|
269
|
+
SERVICE_WIN32_OWN_PROCESS = 0x00000010
|
270
|
+
SERVICE_WIN32_SHARE_PROCESS = 0x00000020
|
271
|
+
SERVICE_USER_OWN_PROCESS = 0x00000050
|
272
|
+
SERVICE_USER_SHARE_PROCESS = 0x00000060
|
273
|
+
# Available only if service is also SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS
|
274
|
+
SERVICE_INTERACTIVE_PROCESS = 0x00000100
|
275
|
+
ALL_SERVICE_TYPES =
|
276
|
+
SERVICE_FILE_SYSTEM_DRIVER |
|
277
|
+
SERVICE_KERNEL_DRIVER |
|
278
|
+
SERVICE_WIN32_OWN_PROCESS |
|
279
|
+
SERVICE_WIN32_SHARE_PROCESS
|
280
|
+
|
281
|
+
# Current state codes
|
282
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_service_status_process
|
283
|
+
SERVICE_CONTINUE_PENDING = 0x00000005
|
284
|
+
SERVICE_PAUSE_PENDING = 0x00000006
|
285
|
+
SERVICE_PAUSED = 0x00000007
|
286
|
+
SERVICE_RUNNING = 0x00000004
|
287
|
+
SERVICE_START_PENDING = 0x00000002
|
288
|
+
SERVICE_STOP_PENDING = 0x00000003
|
289
|
+
SERVICE_STOPPED = 0x00000001
|
290
|
+
UNSAFE_PENDING_STATES = [SERVICE_START_PENDING, SERVICE_STOP_PENDING]
|
291
|
+
FINAL_STATES = {
|
292
|
+
SERVICE_CONTINUE_PENDING => SERVICE_RUNNING,
|
293
|
+
SERVICE_PAUSE_PENDING => SERVICE_PAUSED,
|
294
|
+
SERVICE_START_PENDING => SERVICE_RUNNING,
|
295
|
+
SERVICE_STOP_PENDING => SERVICE_STOPPED
|
296
|
+
}
|
297
|
+
SERVICE_STATES = {
|
298
|
+
SERVICE_CONTINUE_PENDING => :SERVICE_CONTINUE_PENDING,
|
299
|
+
SERVICE_PAUSE_PENDING => :SERVICE_PAUSE_PENDING,
|
300
|
+
SERVICE_PAUSED => :SERVICE_PAUSED,
|
301
|
+
SERVICE_RUNNING => :SERVICE_RUNNING,
|
302
|
+
SERVICE_START_PENDING => :SERVICE_START_PENDING,
|
303
|
+
SERVICE_STOP_PENDING => :SERVICE_STOP_PENDING,
|
304
|
+
SERVICE_STOPPED => :SERVICE_STOPPED,
|
305
|
+
}
|
306
|
+
|
307
|
+
# Service accepts control codes
|
308
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_service_status_process
|
309
|
+
SERVICE_ACCEPT_STOP = 0x00000001
|
310
|
+
SERVICE_ACCEPT_PAUSE_CONTINUE = 0x00000002
|
311
|
+
SERVICE_ACCEPT_SHUTDOWN = 0x00000004
|
312
|
+
SERVICE_ACCEPT_PARAMCHANGE = 0x00000008
|
313
|
+
SERVICE_ACCEPT_NETBINDCHANGE = 0x00000010
|
314
|
+
SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 0x00000020
|
315
|
+
SERVICE_ACCEPT_POWEREVENT = 0x00000040
|
316
|
+
SERVICE_ACCEPT_SESSIONCHANGE = 0x00000080
|
317
|
+
SERVICE_ACCEPT_PRESHUTDOWN = 0x00000100
|
318
|
+
SERVICE_ACCEPT_TIMECHANGE = 0x00000200
|
319
|
+
SERVICE_ACCEPT_TRIGGEREVENT = 0x00000400
|
320
|
+
SERVICE_ACCEPT_USER_LOGOFF = 0x00000800
|
321
|
+
|
322
|
+
# Service manager access codes
|
323
|
+
# https://docs.microsoft.com/en-us/windows/desktop/Services/service-security-and-access-rights
|
324
|
+
SC_MANAGER_CREATE_SERVICE = 0x00000002
|
325
|
+
SC_MANAGER_CONNECT = 0x00000001
|
326
|
+
SC_MANAGER_ENUMERATE_SERVICE = 0x00000004
|
327
|
+
SC_MANAGER_LOCK = 0x00000008
|
328
|
+
SC_MANAGER_MODIFY_BOOT_CONFIG = 0x00000020
|
329
|
+
SC_MANAGER_QUERY_LOCK_STATUS = 0x00000010
|
330
|
+
SC_MANAGER_ALL_ACCESS =
|
331
|
+
STANDARD_RIGHTS_REQUIRED |
|
332
|
+
SC_MANAGER_CREATE_SERVICE |
|
333
|
+
SC_MANAGER_CONNECT |
|
334
|
+
SC_MANAGER_ENUMERATE_SERVICE |
|
335
|
+
SC_MANAGER_LOCK |
|
336
|
+
SC_MANAGER_MODIFY_BOOT_CONFIG |
|
337
|
+
SC_MANAGER_QUERY_LOCK_STATUS
|
338
|
+
|
339
|
+
# Service access codes
|
340
|
+
# https://docs.microsoft.com/en-us/windows/desktop/Services/service-security-and-access-rights
|
341
|
+
SERVICE_CHANGE_CONFIG = 0x0002
|
342
|
+
SERVICE_ENUMERATE_DEPENDENTS = 0x0008
|
343
|
+
SERVICE_INTERROGATE = 0x0080
|
344
|
+
SERVICE_PAUSE_CONTINUE = 0x0040
|
345
|
+
SERVICE_QUERY_STATUS = 0x0004
|
346
|
+
SERVICE_QUERY_CONFIG = 0x0001
|
347
|
+
SERVICE_START = 0x0010
|
348
|
+
SERVICE_STOP = 0x0020
|
349
|
+
SERVICE_USER_DEFINED_CONTROL = 0x0100
|
350
|
+
SERVICE_ALL_ACCESS =
|
351
|
+
STANDARD_RIGHTS_REQUIRED |
|
352
|
+
SERVICE_CHANGE_CONFIG |
|
353
|
+
SERVICE_ENUMERATE_DEPENDENTS |
|
354
|
+
SERVICE_INTERROGATE |
|
355
|
+
SERVICE_PAUSE_CONTINUE |
|
356
|
+
SERVICE_QUERY_STATUS |
|
357
|
+
SERVICE_QUERY_CONFIG |
|
358
|
+
SERVICE_START |
|
359
|
+
SERVICE_STOP |
|
360
|
+
SERVICE_USER_DEFINED_CONTROL
|
361
|
+
|
362
|
+
# Service config codes
|
363
|
+
# From the windows 10 SDK:
|
364
|
+
# //
|
365
|
+
# // Value to indicate no change to an optional parameter
|
366
|
+
# //
|
367
|
+
# #define SERVICE_NO_CHANGE 0xffffffff
|
368
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2w
|
369
|
+
SERVICE_CONFIG_DESCRIPTION = 0x00000001
|
370
|
+
SERVICE_CONFIG_FAILURE_ACTIONS = 0x00000002
|
371
|
+
SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 0x00000003
|
372
|
+
SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 0x00000004
|
373
|
+
SERVICE_CONFIG_SERVICE_SID_INFO = 0x00000005
|
374
|
+
SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 0x00000006
|
375
|
+
SERVICE_CONFIG_PRESHUTDOWN_INFO = 0x00000007
|
376
|
+
SERVICE_CONFIG_TRIGGER_INFO = 0x00000008
|
377
|
+
SERVICE_CONFIG_PREFERRED_NODE = 0x00000009
|
378
|
+
SERVICE_CONFIG_LAUNCH_PROTECTED = 0x00000012
|
379
|
+
SERVICE_NO_CHANGE = 0xffffffff
|
380
|
+
SERVICE_CONFIG_TYPES = {
|
381
|
+
SERVICE_CONFIG_DESCRIPTION => :SERVICE_CONFIG_DESCRIPTION,
|
382
|
+
SERVICE_CONFIG_FAILURE_ACTIONS => :SERVICE_CONFIG_FAILURE_ACTIONS,
|
383
|
+
SERVICE_CONFIG_DELAYED_AUTO_START_INFO => :SERVICE_CONFIG_DELAYED_AUTO_START_INFO,
|
384
|
+
SERVICE_CONFIG_FAILURE_ACTIONS_FLAG => :SERVICE_CONFIG_FAILURE_ACTIONS_FLAG,
|
385
|
+
SERVICE_CONFIG_SERVICE_SID_INFO => :SERVICE_CONFIG_SERVICE_SID_INFO,
|
386
|
+
SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO => :SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO,
|
387
|
+
SERVICE_CONFIG_PRESHUTDOWN_INFO => :SERVICE_CONFIG_PRESHUTDOWN_INFO,
|
388
|
+
SERVICE_CONFIG_TRIGGER_INFO => :SERVICE_CONFIG_TRIGGER_INFO,
|
389
|
+
SERVICE_CONFIG_PREFERRED_NODE => :SERVICE_CONFIG_PREFERRED_NODE,
|
390
|
+
SERVICE_CONFIG_LAUNCH_PROTECTED => :SERVICE_CONFIG_LAUNCH_PROTECTED,
|
391
|
+
}
|
392
|
+
|
393
|
+
# Service enum codes
|
394
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-enumservicesstatusexa
|
395
|
+
SERVICE_ACTIVE = 0x00000001
|
396
|
+
SERVICE_INACTIVE = 0x00000002
|
397
|
+
SERVICE_STATE_ALL =
|
398
|
+
SERVICE_ACTIVE |
|
399
|
+
SERVICE_INACTIVE
|
400
|
+
|
401
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_enum_service_status_processw
|
402
|
+
SERVICENAME_MAX = 256
|
403
|
+
end
|
404
|
+
end
|
@@ -0,0 +1,628 @@
|
|
1
|
+
require 'puppet/ffi/windows'
|
2
|
+
|
3
|
+
module Puppet::FFI::Windows
|
4
|
+
module Functions
|
5
|
+
|
6
|
+
extend FFI::Library
|
7
|
+
include Puppet::FFI::Windows::Constants
|
8
|
+
|
9
|
+
ffi_convention :stdcall
|
10
|
+
|
11
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-sethandleinformation
|
12
|
+
# BOOL SetHandleInformation(
|
13
|
+
# HANDLE hObject,
|
14
|
+
# DWORD dwMask,
|
15
|
+
# DWORD dwFlags
|
16
|
+
# );
|
17
|
+
ffi_lib :kernel32
|
18
|
+
attach_function_private :SetHandleInformation, [:handle, :dword, :dword], :win32_bool
|
19
|
+
|
20
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/errhandlingapi/nf-errhandlingapi-seterrormode
|
21
|
+
# UINT SetErrorMode(
|
22
|
+
# UINT uMode
|
23
|
+
# );
|
24
|
+
ffi_lib :kernel32
|
25
|
+
attach_function_private :SetErrorMode, [:uint], :uint
|
26
|
+
|
27
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw
|
28
|
+
# BOOL CreateProcessW(
|
29
|
+
# LPCWSTR lpApplicationName,
|
30
|
+
# LPWSTR lpCommandLine,
|
31
|
+
# LPSECURITY_ATTRIBUTES lpProcessAttributes,
|
32
|
+
# LPSECURITY_ATTRIBUTES lpThreadAttributes,
|
33
|
+
# BOOL bInheritHandles,
|
34
|
+
# DWORD dwCreationFlags,
|
35
|
+
# LPVOID lpEnvironment,
|
36
|
+
# LPCWSTR lpCurrentDirectory,
|
37
|
+
# LPSTARTUPINFOW lpStartupInfo,
|
38
|
+
# LPPROCESS_INFORMATION lpProcessInformation
|
39
|
+
# );
|
40
|
+
ffi_lib :kernel32
|
41
|
+
attach_function_private :CreateProcessW,
|
42
|
+
[:lpcwstr, :lpwstr, :pointer, :pointer, :win32_bool,
|
43
|
+
:dword, :lpvoid, :lpcwstr, :pointer, :pointer], :bool
|
44
|
+
|
45
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess
|
46
|
+
# HANDLE OpenProcess(
|
47
|
+
# DWORD dwDesiredAccess,
|
48
|
+
# BOOL bInheritHandle,
|
49
|
+
# DWORD dwProcessId
|
50
|
+
# );
|
51
|
+
ffi_lib :kernel32
|
52
|
+
attach_function_private :OpenProcess, [:dword, :win32_bool, :dword], :handle
|
53
|
+
|
54
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setpriorityclass
|
55
|
+
# BOOL SetPriorityClass(
|
56
|
+
# HANDLE hProcess,
|
57
|
+
# DWORD dwPriorityClass
|
58
|
+
# );
|
59
|
+
ffi_lib :kernel32
|
60
|
+
attach_function_private :SetPriorityClass, [:handle, :dword], :win32_bool
|
61
|
+
|
62
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createprocesswithlogonw
|
63
|
+
# BOOL CreateProcessWithLogonW(
|
64
|
+
# LPCWSTR lpUsername,
|
65
|
+
# LPCWSTR lpDomain,
|
66
|
+
# LPCWSTR lpPassword,
|
67
|
+
# DWORD dwLogonFlags,
|
68
|
+
# LPCWSTR lpApplicationName,
|
69
|
+
# LPWSTR lpCommandLine,
|
70
|
+
# DWORD dwCreationFlags,
|
71
|
+
# LPVOID lpEnvironment,
|
72
|
+
# LPCWSTR lpCurrentDirectory,
|
73
|
+
# LPSTARTUPINFOW lpStartupInfo,
|
74
|
+
# LPPROCESS_INFORMATION lpProcessInformation
|
75
|
+
# );
|
76
|
+
ffi_lib :advapi32
|
77
|
+
attach_function_private :CreateProcessWithLogonW,
|
78
|
+
[:lpcwstr, :lpcwstr, :lpcwstr, :dword, :lpcwstr, :lpwstr,
|
79
|
+
:dword, :lpvoid, :lpcwstr, :pointer, :pointer], :bool
|
80
|
+
|
81
|
+
# https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/get-osfhandle?view=vs-2019
|
82
|
+
# intptr_t _get_osfhandle(
|
83
|
+
# int fd
|
84
|
+
# );
|
85
|
+
ffi_lib FFI::Library::LIBC
|
86
|
+
attach_function_private :get_osfhandle, :_get_osfhandle, [:int], :intptr_t
|
87
|
+
|
88
|
+
begin
|
89
|
+
# https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/get-errno?view=vs-2019
|
90
|
+
# errno_t _get_errno(
|
91
|
+
# int * pValue
|
92
|
+
# );
|
93
|
+
attach_function_private :get_errno, :_get_errno, [:pointer], :int
|
94
|
+
rescue FFI::NotFoundError
|
95
|
+
# Do nothing, Windows XP or earlier.
|
96
|
+
end
|
97
|
+
|
98
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx
|
99
|
+
# DWORD WINAPI WaitForSingleObject(
|
100
|
+
# _In_ HANDLE hHandle,
|
101
|
+
# _In_ DWORD dwMilliseconds
|
102
|
+
# );
|
103
|
+
ffi_lib :kernel32
|
104
|
+
attach_function_private :WaitForSingleObject,
|
105
|
+
[:handle, :dword], :dword, :blocking => true
|
106
|
+
|
107
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitformultipleobjects
|
108
|
+
# DWORD WaitForMultipleObjects(
|
109
|
+
# DWORD nCount,
|
110
|
+
# const HANDLE *lpHandles,
|
111
|
+
# BOOL bWaitAll,
|
112
|
+
# DWORD dwMilliseconds
|
113
|
+
# );
|
114
|
+
ffi_lib :kernel32
|
115
|
+
attach_function_private :WaitForMultipleObjects,
|
116
|
+
[:dword, :phandle, :win32_bool, :dword], :dword
|
117
|
+
|
118
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-createeventw
|
119
|
+
# HANDLE CreateEventW(
|
120
|
+
# LPSECURITY_ATTRIBUTES lpEventAttributes,
|
121
|
+
# BOOL bManualReset,
|
122
|
+
# BOOL bInitialState,
|
123
|
+
# LPCWSTR lpName
|
124
|
+
# );
|
125
|
+
ffi_lib :kernel32
|
126
|
+
attach_function_private :CreateEventW,
|
127
|
+
[:pointer, :win32_bool, :win32_bool, :lpcwstr], :handle
|
128
|
+
|
129
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createthread
|
130
|
+
# HANDLE CreateThread(
|
131
|
+
# LPSECURITY_ATTRIBUTES lpThreadAttributes,
|
132
|
+
# SIZE_T dwStackSize,
|
133
|
+
# LPTHREAD_START_ROUTINE lpStartAddress,
|
134
|
+
# __drv_aliasesMem LPVOID lpParameter,
|
135
|
+
# DWORD dwCreationFlags,
|
136
|
+
# LPDWORD lpThreadId
|
137
|
+
# );
|
138
|
+
ffi_lib :kernel32
|
139
|
+
attach_function_private :CreateThread,
|
140
|
+
[:pointer, :size_t, :pointer, :lpvoid, :dword, :lpdword], :handle, :blocking => true
|
141
|
+
|
142
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-setevent
|
143
|
+
# BOOL SetEvent(
|
144
|
+
# HANDLE hEvent
|
145
|
+
# );
|
146
|
+
ffi_lib :kernel32
|
147
|
+
attach_function_private :SetEvent,
|
148
|
+
[:handle], :win32_bool
|
149
|
+
|
150
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms683189(v=vs.85).aspx
|
151
|
+
# BOOL WINAPI GetExitCodeProcess(
|
152
|
+
# _In_ HANDLE hProcess,
|
153
|
+
# _Out_ LPDWORD lpExitCode
|
154
|
+
# );
|
155
|
+
ffi_lib :kernel32
|
156
|
+
attach_function_private :GetExitCodeProcess,
|
157
|
+
[:handle, :lpdword], :win32_bool
|
158
|
+
|
159
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms683179(v=vs.85).aspx
|
160
|
+
# HANDLE WINAPI GetCurrentProcess(void);
|
161
|
+
ffi_lib :kernel32
|
162
|
+
attach_function_private :GetCurrentProcess, [], :handle
|
163
|
+
|
164
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms683187(v=vs.85).aspx
|
165
|
+
# LPTCH GetEnvironmentStrings(void);
|
166
|
+
ffi_lib :kernel32
|
167
|
+
attach_function_private :GetEnvironmentStringsW, [], :pointer
|
168
|
+
|
169
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms683151(v=vs.85).aspx
|
170
|
+
# BOOL FreeEnvironmentStrings(
|
171
|
+
# _In_ LPTCH lpszEnvironmentBlock
|
172
|
+
# );
|
173
|
+
ffi_lib :kernel32
|
174
|
+
attach_function_private :FreeEnvironmentStringsW,
|
175
|
+
[:pointer], :win32_bool
|
176
|
+
|
177
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms686206(v=vs.85).aspx
|
178
|
+
# BOOL WINAPI SetEnvironmentVariableW(
|
179
|
+
# _In_ LPCTSTR lpName,
|
180
|
+
# _In_opt_ LPCTSTR lpValue
|
181
|
+
# );
|
182
|
+
ffi_lib :kernel32
|
183
|
+
attach_function_private :SetEnvironmentVariableW,
|
184
|
+
[:lpcwstr, :lpcwstr], :win32_bool
|
185
|
+
|
186
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
|
187
|
+
# HANDLE WINAPI OpenProcess(
|
188
|
+
# _In_ DWORD DesiredAccess,
|
189
|
+
# _In_ BOOL InheritHandle,
|
190
|
+
# _In_ DWORD ProcessId
|
191
|
+
# );
|
192
|
+
ffi_lib :kernel32
|
193
|
+
attach_function_private :OpenProcess,
|
194
|
+
[:dword, :win32_bool, :dword], :handle
|
195
|
+
|
196
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379295(v=vs.85).aspx
|
197
|
+
# BOOL WINAPI OpenProcessToken(
|
198
|
+
# _In_ HANDLE ProcessHandle,
|
199
|
+
# _In_ DWORD DesiredAccess,
|
200
|
+
# _Out_ PHANDLE TokenHandle
|
201
|
+
# );
|
202
|
+
ffi_lib :advapi32
|
203
|
+
attach_function_private :OpenProcessToken,
|
204
|
+
[:handle, :dword, :phandle], :win32_bool
|
205
|
+
|
206
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-queryfullprocessimagenamew
|
207
|
+
# BOOL WINAPI QueryFullProcessImageName(
|
208
|
+
# _In_ HANDLE hProcess,
|
209
|
+
# _In_ DWORD dwFlags,
|
210
|
+
# _Out_ LPWSTR lpExeName,
|
211
|
+
# _In_ PDWORD lpdwSize,
|
212
|
+
# );
|
213
|
+
ffi_lib :kernel32
|
214
|
+
attach_function_private :QueryFullProcessImageNameW,
|
215
|
+
[:handle, :dword, :lpwstr, :pdword], :win32_bool
|
216
|
+
|
217
|
+
# https://msdn.microsoft.com/en-us/library/Windows/desktop/aa379180(v=vs.85).aspx
|
218
|
+
# BOOL WINAPI LookupPrivilegeValue(
|
219
|
+
# _In_opt_ LPCTSTR lpSystemName,
|
220
|
+
# _In_ LPCTSTR lpName,
|
221
|
+
# _Out_ PLUID lpLuid
|
222
|
+
# );
|
223
|
+
ffi_lib :advapi32
|
224
|
+
attach_function_private :LookupPrivilegeValueW,
|
225
|
+
[:lpcwstr, :lpcwstr, :pointer], :win32_bool
|
226
|
+
|
227
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446671(v=vs.85).aspx
|
228
|
+
# BOOL WINAPI GetTokenInformation(
|
229
|
+
# _In_ HANDLE TokenHandle,
|
230
|
+
# _In_ TOKEN_INFORMATION_CLASS TokenInformationClass,
|
231
|
+
# _Out_opt_ LPVOID TokenInformation,
|
232
|
+
# _In_ DWORD TokenInformationLength,
|
233
|
+
# _Out_ PDWORD ReturnLength
|
234
|
+
# );
|
235
|
+
ffi_lib :advapi32
|
236
|
+
attach_function_private :GetTokenInformation,
|
237
|
+
[:handle, TOKEN_INFORMATION_CLASS, :lpvoid, :dword, :pdword ], :win32_bool
|
238
|
+
|
239
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms724451(v=vs.85).aspx
|
240
|
+
# BOOL WINAPI GetVersionEx(
|
241
|
+
# _Inout_ LPOSVERSIONINFO lpVersionInfo
|
242
|
+
# );
|
243
|
+
ffi_lib :kernel32
|
244
|
+
attach_function_private :GetVersionExW,
|
245
|
+
[:pointer], :win32_bool
|
246
|
+
|
247
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/dd318123(v=vs.85).aspx
|
248
|
+
# LANGID GetSystemDefaultUILanguage(void);
|
249
|
+
ffi_lib :kernel32
|
250
|
+
attach_function_private :GetSystemDefaultUILanguage, [], :word
|
251
|
+
|
252
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-openscmanagerw
|
253
|
+
# SC_HANDLE OpenSCManagerW(
|
254
|
+
# LPCWSTR lpMachineName,
|
255
|
+
# LPCWSTR lpDatabaseName,
|
256
|
+
# DWORD dwDesiredAccess
|
257
|
+
# );
|
258
|
+
ffi_lib :advapi32
|
259
|
+
attach_function_private :OpenSCManagerW,
|
260
|
+
[:lpcwstr, :lpcwstr, :dword], :handle
|
261
|
+
|
262
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-openservicew
|
263
|
+
# SC_HANDLE OpenServiceW(
|
264
|
+
# SC_HANDLE hSCManager,
|
265
|
+
# LPCWSTR lpServiceName,
|
266
|
+
# DWORD dwDesiredAccess
|
267
|
+
# );
|
268
|
+
ffi_lib :advapi32
|
269
|
+
attach_function_private :OpenServiceW,
|
270
|
+
[:handle, :lpcwstr, :dword], :handle
|
271
|
+
|
272
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-closeservicehandle
|
273
|
+
# BOOL CloseServiceHandle(
|
274
|
+
# SC_HANDLE hSCObject
|
275
|
+
# );
|
276
|
+
ffi_lib :advapi32
|
277
|
+
attach_function_private :CloseServiceHandle,
|
278
|
+
[:handle], :win32_bool
|
279
|
+
|
280
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-queryservicestatusex
|
281
|
+
# BOOL QueryServiceStatusEx(
|
282
|
+
# SC_HANDLE hService,
|
283
|
+
# SC_STATUS_TYPE InfoLevel,
|
284
|
+
# LPBYTE lpBuffer,
|
285
|
+
# DWORD cbBufSize,
|
286
|
+
# LPDWORD pcbBytesNeeded
|
287
|
+
# );
|
288
|
+
SC_STATUS_TYPE = enum(
|
289
|
+
:SC_STATUS_PROCESS_INFO, 0,
|
290
|
+
)
|
291
|
+
ffi_lib :advapi32
|
292
|
+
attach_function_private :QueryServiceStatusEx,
|
293
|
+
[:handle, SC_STATUS_TYPE, :lpbyte, :dword, :lpdword], :win32_bool
|
294
|
+
|
295
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-queryserviceconfigw
|
296
|
+
# BOOL QueryServiceConfigW(
|
297
|
+
# SC_HANDLE hService,
|
298
|
+
# LPQUERY_SERVICE_CONFIGW lpServiceConfig,
|
299
|
+
# DWORD cbBufSize,
|
300
|
+
# LPDWORD pcbBytesNeeded
|
301
|
+
# );
|
302
|
+
ffi_lib :advapi32
|
303
|
+
attach_function_private :QueryServiceConfigW,
|
304
|
+
[:handle, :lpbyte, :dword, :lpdword], :win32_bool
|
305
|
+
|
306
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-queryserviceconfig2w
|
307
|
+
# BOOL QueryServiceConfig2W(
|
308
|
+
# SC_HANDLE hService,
|
309
|
+
# DWORD dwInfoLevel,
|
310
|
+
# LPBYTE lpBuffer,
|
311
|
+
# DWORD cbBufSize,
|
312
|
+
# LPDWORD pcbBytesNeeded
|
313
|
+
# );
|
314
|
+
ffi_lib :advapi32
|
315
|
+
attach_function_private :QueryServiceConfig2W,
|
316
|
+
[:handle, :dword, :lpbyte, :dword, :lpdword], :win32_bool
|
317
|
+
|
318
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-startservicew
|
319
|
+
# BOOL StartServiceW(
|
320
|
+
# SC_HANDLE hService,
|
321
|
+
# DWORD dwNumServiceArgs,
|
322
|
+
# LPCWSTR *lpServiceArgVectors
|
323
|
+
# );
|
324
|
+
ffi_lib :advapi32
|
325
|
+
attach_function_private :StartServiceW,
|
326
|
+
[:handle, :dword, :pointer], :win32_bool
|
327
|
+
|
328
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-startservicectrldispatcherw
|
329
|
+
# BOOL StartServiceCtrlDispatcherW(
|
330
|
+
# const SERVICE_TABLE_ENTRYW *lpServiceStartTable
|
331
|
+
# );
|
332
|
+
ffi_lib :advapi32
|
333
|
+
attach_function_private :StartServiceCtrlDispatcherW,
|
334
|
+
[:pointer], :win32_bool, :blocking => true
|
335
|
+
|
336
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-setservicestatus
|
337
|
+
# BOOL SetServiceStatus(
|
338
|
+
# SERVICE_STATUS_HANDLE hServiceStatus,
|
339
|
+
# LPSERVICE_STATUS lpServiceStatus
|
340
|
+
# );
|
341
|
+
ffi_lib :advapi32
|
342
|
+
attach_function_private :SetServiceStatus,
|
343
|
+
[:handle, :pointer], :win32_bool
|
344
|
+
|
345
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-controlservice
|
346
|
+
# BOOL ControlService(
|
347
|
+
# SC_HANDLE hService,
|
348
|
+
# DWORD dwControl,
|
349
|
+
# LPSERVICE_STATUS lpServiceStatus
|
350
|
+
# );
|
351
|
+
ffi_lib :advapi32
|
352
|
+
attach_function_private :ControlService,
|
353
|
+
[:handle, :dword, :pointer], :win32_bool
|
354
|
+
|
355
|
+
# DWORD LphandlerFunctionEx(
|
356
|
+
# DWORD dwControl,
|
357
|
+
# DWORD dwEventType,
|
358
|
+
# LPVOID lpEventData,
|
359
|
+
# LPVOID lpContext
|
360
|
+
# )
|
361
|
+
callback :handler_ex, [:dword, :dword, :lpvoid, :lpvoid], :void
|
362
|
+
|
363
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-registerservicectrlhandlerexw
|
364
|
+
# SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(
|
365
|
+
# LPCWSTR lpServiceName,
|
366
|
+
# LPHANDLER_FUNCTION_EX lpHandlerProc,
|
367
|
+
# LPVOID lpContext
|
368
|
+
# );
|
369
|
+
ffi_lib :advapi32
|
370
|
+
attach_function_private :RegisterServiceCtrlHandlerExW,
|
371
|
+
[:lpcwstr, :handler_ex, :lpvoid], :handle
|
372
|
+
|
373
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-changeserviceconfigw
|
374
|
+
# BOOL ChangeServiceConfigW(
|
375
|
+
# SC_HANDLE hService,
|
376
|
+
# DWORD dwServiceType,
|
377
|
+
# DWORD dwStartType,
|
378
|
+
# DWORD dwErrorControl,
|
379
|
+
# LPCWSTR lpBinaryPathName,
|
380
|
+
# LPCWSTR lpLoadOrderGroup,
|
381
|
+
# LPDWORD lpdwTagId,
|
382
|
+
# LPCWSTR lpDependencies,
|
383
|
+
# LPCWSTR lpServiceStartName,
|
384
|
+
# LPCWSTR lpPassword,
|
385
|
+
# LPCWSTR lpDisplayName
|
386
|
+
# );
|
387
|
+
ffi_lib :advapi32
|
388
|
+
attach_function_private :ChangeServiceConfigW,
|
389
|
+
[
|
390
|
+
:handle,
|
391
|
+
:dword,
|
392
|
+
:dword,
|
393
|
+
:dword,
|
394
|
+
:lpcwstr,
|
395
|
+
:lpcwstr,
|
396
|
+
:lpdword,
|
397
|
+
:lpcwstr,
|
398
|
+
:lpcwstr,
|
399
|
+
:lpcwstr,
|
400
|
+
:lpcwstr
|
401
|
+
], :win32_bool
|
402
|
+
|
403
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2w
|
404
|
+
# BOOL ChangeServiceConfig2W(
|
405
|
+
# SC_HANDLE hService,
|
406
|
+
# DWORD dwInfoLevel,
|
407
|
+
# LPVOID lpInfo
|
408
|
+
# );
|
409
|
+
ffi_lib :advapi32
|
410
|
+
attach_function_private :ChangeServiceConfig2W,
|
411
|
+
[:handle, :dword, :lpvoid], :win32_bool
|
412
|
+
|
413
|
+
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-enumservicesstatusexw
|
414
|
+
# BOOL EnumServicesStatusExW(
|
415
|
+
# SC_HANDLE hSCManager,
|
416
|
+
# SC_ENUM_TYPE InfoLevel,
|
417
|
+
# DWORD dwServiceType,
|
418
|
+
# DWORD dwServiceState,
|
419
|
+
# LPBYTE lpServices,
|
420
|
+
# DWORD cbBufSize,
|
421
|
+
# LPDWORD pcbBytesNeeded,
|
422
|
+
# LPDWORD lpServicesReturned,
|
423
|
+
# LPDWORD lpResumeHandle,
|
424
|
+
# LPCWSTR pszGroupName
|
425
|
+
# );
|
426
|
+
SC_ENUM_TYPE = enum(
|
427
|
+
:SC_ENUM_PROCESS_INFO, 0,
|
428
|
+
)
|
429
|
+
ffi_lib :advapi32
|
430
|
+
attach_function_private :EnumServicesStatusExW,
|
431
|
+
[
|
432
|
+
:handle,
|
433
|
+
SC_ENUM_TYPE,
|
434
|
+
:dword,
|
435
|
+
:dword,
|
436
|
+
:lpbyte,
|
437
|
+
:dword,
|
438
|
+
:lpdword,
|
439
|
+
:lpdword,
|
440
|
+
:lpdword,
|
441
|
+
:lpcwstr
|
442
|
+
], :win32_bool
|
443
|
+
|
444
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa365512(v=vs.85).aspx
|
445
|
+
# BOOL WINAPI ReplaceFile(
|
446
|
+
# _In_ LPCTSTR lpReplacedFileName,
|
447
|
+
# _In_ LPCTSTR lpReplacementFileName,
|
448
|
+
# _In_opt_ LPCTSTR lpBackupFileName,
|
449
|
+
# _In_ DWORD dwReplaceFlags - 0x1 REPLACEFILE_WRITE_THROUGH,
|
450
|
+
# 0x2 REPLACEFILE_IGNORE_MERGE_ERRORS,
|
451
|
+
# 0x4 REPLACEFILE_IGNORE_ACL_ERRORS
|
452
|
+
# _Reserved_ LPVOID lpExclude,
|
453
|
+
# _Reserved_ LPVOID lpReserved
|
454
|
+
# );
|
455
|
+
ffi_lib :kernel32
|
456
|
+
attach_function_private :ReplaceFileW,
|
457
|
+
[:lpcwstr, :lpcwstr, :lpcwstr, :dword, :lpvoid, :lpvoid], :win32_bool
|
458
|
+
|
459
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx
|
460
|
+
# BOOL WINAPI MoveFileEx(
|
461
|
+
# _In_ LPCTSTR lpExistingFileName,
|
462
|
+
# _In_opt_ LPCTSTR lpNewFileName,
|
463
|
+
# _In_ DWORD dwFlags
|
464
|
+
# );
|
465
|
+
ffi_lib :kernel32
|
466
|
+
attach_function_private :MoveFileExW,
|
467
|
+
[:lpcwstr, :lpcwstr, :dword], :win32_bool
|
468
|
+
|
469
|
+
# BOOLEAN WINAPI CreateSymbolicLink(
|
470
|
+
# _In_ LPTSTR lpSymlinkFileName, - symbolic link to be created
|
471
|
+
# _In_ LPTSTR lpTargetFileName, - name of target for symbolic link
|
472
|
+
# _In_ DWORD dwFlags - 0x0 target is a file, 0x1 target is a directory
|
473
|
+
# );
|
474
|
+
# rescue on Windows < 6.0 so that code doesn't explode
|
475
|
+
begin
|
476
|
+
ffi_lib :kernel32
|
477
|
+
attach_function_private :CreateSymbolicLinkW,
|
478
|
+
[:lpwstr, :lpwstr, :dword], :boolean
|
479
|
+
rescue LoadError
|
480
|
+
end
|
481
|
+
|
482
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getcurrentdirectory
|
483
|
+
# DWORD GetCurrentDirectory(
|
484
|
+
# DWORD nBufferLength,
|
485
|
+
# LPTSTR lpBuffer
|
486
|
+
# );
|
487
|
+
ffi_lib :kernel32
|
488
|
+
attach_function_private :GetCurrentDirectoryW,
|
489
|
+
[:dword, :lpwstr], :dword
|
490
|
+
|
491
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa364944(v=vs.85).aspx
|
492
|
+
# DWORD WINAPI GetFileAttributes(
|
493
|
+
# _In_ LPCTSTR lpFileName
|
494
|
+
# );
|
495
|
+
ffi_lib :kernel32
|
496
|
+
attach_function_private :GetFileAttributesW,
|
497
|
+
[:lpcwstr], :dword
|
498
|
+
|
499
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa365535(v=vs.85).aspx
|
500
|
+
# BOOL WINAPI SetFileAttributes(
|
501
|
+
# _In_ LPCTSTR lpFileName,
|
502
|
+
# _In_ DWORD dwFileAttributes
|
503
|
+
# );
|
504
|
+
ffi_lib :kernel32
|
505
|
+
attach_function_private :SetFileAttributesW,
|
506
|
+
[:lpcwstr, :dword], :win32_bool
|
507
|
+
|
508
|
+
# HANDLE WINAPI CreateFile(
|
509
|
+
# _In_ LPCTSTR lpFileName,
|
510
|
+
# _In_ DWORD dwDesiredAccess,
|
511
|
+
# _In_ DWORD dwShareMode,
|
512
|
+
# _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
513
|
+
# _In_ DWORD dwCreationDisposition,
|
514
|
+
# _In_ DWORD dwFlagsAndAttributes,
|
515
|
+
# _In_opt_ HANDLE hTemplateFile
|
516
|
+
# );
|
517
|
+
ffi_lib :kernel32
|
518
|
+
attach_function_private :CreateFileW,
|
519
|
+
[:lpcwstr, :dword, :dword, :pointer, :dword, :dword, :handle], :handle
|
520
|
+
|
521
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createdirectoryw
|
522
|
+
# BOOL CreateDirectoryW(
|
523
|
+
# LPCWSTR lpPathName,
|
524
|
+
# LPSECURITY_ATTRIBUTES lpSecurityAttributes
|
525
|
+
# );
|
526
|
+
ffi_lib :kernel32
|
527
|
+
attach_function_private :CreateDirectoryW,
|
528
|
+
[:lpcwstr, :pointer], :win32_bool
|
529
|
+
|
530
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-removedirectoryw
|
531
|
+
# BOOL RemoveDirectoryW(
|
532
|
+
# LPCWSTR lpPathName
|
533
|
+
# );
|
534
|
+
ffi_lib :kernel32
|
535
|
+
attach_function_private :RemoveDirectoryW,
|
536
|
+
[:lpcwstr], :win32_bool
|
537
|
+
|
538
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa363216(v=vs.85).aspx
|
539
|
+
# BOOL WINAPI DeviceIoControl(
|
540
|
+
# _In_ HANDLE hDevice,
|
541
|
+
# _In_ DWORD dwIoControlCode,
|
542
|
+
# _In_opt_ LPVOID lpInBuffer,
|
543
|
+
# _In_ DWORD nInBufferSize,
|
544
|
+
# _Out_opt_ LPVOID lpOutBuffer,
|
545
|
+
# _In_ DWORD nOutBufferSize,
|
546
|
+
# _Out_opt_ LPDWORD lpBytesReturned,
|
547
|
+
# _Inout_opt_ LPOVERLAPPED lpOverlapped
|
548
|
+
# );
|
549
|
+
ffi_lib :kernel32
|
550
|
+
attach_function_private :DeviceIoControl,
|
551
|
+
[:handle, :dword, :lpvoid, :dword, :lpvoid, :dword, :lpdword, :pointer], :win32_bool
|
552
|
+
|
553
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa364980(v=vs.85).aspx
|
554
|
+
# DWORD WINAPI GetLongPathName(
|
555
|
+
# _In_ LPCTSTR lpszShortPath,
|
556
|
+
# _Out_ LPTSTR lpszLongPath,
|
557
|
+
# _In_ DWORD cchBuffer
|
558
|
+
# );
|
559
|
+
ffi_lib :kernel32
|
560
|
+
attach_function_private :GetLongPathNameW,
|
561
|
+
[:lpcwstr, :lpwstr, :dword], :dword
|
562
|
+
|
563
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa364989(v=vs.85).aspx
|
564
|
+
# DWORD WINAPI GetShortPathName(
|
565
|
+
# _In_ LPCTSTR lpszLongPath,
|
566
|
+
# _Out_ LPTSTR lpszShortPath,
|
567
|
+
# _In_ DWORD cchBuffer
|
568
|
+
# );
|
569
|
+
ffi_lib :kernel32
|
570
|
+
attach_function_private :GetShortPathNameW,
|
571
|
+
[:lpcwstr, :lpwstr, :dword], :dword
|
572
|
+
|
573
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfullpathnamew
|
574
|
+
# DWORD GetFullPathNameW(
|
575
|
+
# LPCWSTR lpFileName,
|
576
|
+
# DWORD nBufferLength,
|
577
|
+
# LPWSTR lpBuffer,
|
578
|
+
# LPWSTR *lpFilePart
|
579
|
+
# );
|
580
|
+
ffi_lib :kernel32
|
581
|
+
attach_function_private :GetFullPathNameW,
|
582
|
+
[:lpcwstr, :dword, :lpwstr, :pointer], :dword
|
583
|
+
|
584
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpathw
|
585
|
+
# SHFOLDERAPI SHGetFolderPathW(
|
586
|
+
# HWND hwnd,
|
587
|
+
# int csidl,
|
588
|
+
# HANDLE hToken,
|
589
|
+
# DWORD dwFlags,
|
590
|
+
# LPWSTR pszPath
|
591
|
+
# );
|
592
|
+
ffi_lib :shell32
|
593
|
+
attach_function_private :SHGetFolderPathW,
|
594
|
+
[:hwnd, :int, :handle, :dword, :lpwstr], :dword
|
595
|
+
|
596
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderlocation
|
597
|
+
# SHSTDAPI SHGetFolderLocation(
|
598
|
+
# HWND hwnd,
|
599
|
+
# int csidl,
|
600
|
+
# HANDLE hToken,
|
601
|
+
# DWORD dwFlags,
|
602
|
+
# PIDLIST_ABSOLUTE *ppidl
|
603
|
+
# );
|
604
|
+
ffi_lib :shell32
|
605
|
+
attach_function_private :SHGetFolderLocation,
|
606
|
+
[:hwnd, :int, :handle, :dword, :pointer], :dword
|
607
|
+
|
608
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetfileinfoa
|
609
|
+
# DWORD_PTR SHGetFileInfoA(
|
610
|
+
# LPCSTR pszPath,
|
611
|
+
# DWORD dwFileAttributes,
|
612
|
+
# SHFILEINFOA *psfi,
|
613
|
+
# UINT cbFileInfo,
|
614
|
+
# UINT uFlags
|
615
|
+
# );
|
616
|
+
ffi_lib :shell32
|
617
|
+
attach_function_private :SHGetFileInfo,
|
618
|
+
[:dword, :dword, :pointer, :uint, :uint], :dword
|
619
|
+
|
620
|
+
# https://docs.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-pathisdirectoryemptyw
|
621
|
+
# BOOL PathIsDirectoryEmptyW(
|
622
|
+
# LPCWSTR pszPath
|
623
|
+
# );
|
624
|
+
ffi_lib :shlwapi
|
625
|
+
attach_function_private :PathIsDirectoryEmptyW,
|
626
|
+
[:lpcwstr], :win32_bool
|
627
|
+
end
|
628
|
+
end
|