puppet 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/build_defaults.yaml +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/hiera/scope.rb +1 -1
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +45 -47
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/lookup_adapter.rb +73 -26
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +69 -22
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/lookup.rb +126 -150
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/match.rb +1 -0
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/facts/facter.rb +2 -13
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/hiera.rb +3 -1
- data/lib/puppet/indirector/indirection.rb +6 -2
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +6 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/node.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +4 -11
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +128 -149
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -0
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +56 -14
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +80 -12
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +98 -96
- data/lib/puppet/pops/evaluator/closure.rb +122 -106
- data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +47 -42
- data/lib/puppet/pops/functions/function.rb +6 -2
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +50 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +18 -13
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup/explainer.rb +73 -3
- data/lib/puppet/pops/lookup/invocation.rb +21 -19
- data/lib/puppet/pops/lookup.rb +17 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +179 -157
- data/lib/puppet/pops/model/model.rb +17 -8
- data/lib/puppet/pops/model/model_label_provider.rb +14 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +17 -13
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +428 -403
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +16 -8
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +140 -387
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1253
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation/checker4_0.rb +115 -63
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +16 -9
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/rpm.rb +0 -1
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +7 -20
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/service/launchd.rb +6 -12
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/user/windows_adsi.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +33 -42
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction/additional_resource_generator.rb +23 -5
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +6 -2
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +65 -28
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +190 -0
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +22 -16
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +84 -15
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/util/windows.rb +4 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +17 -0
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +4 -0
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/collection_spec.rb +8 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +201 -0
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
- data/spec/integration/util/windows/security_spec.rb +8 -8
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/application/lookup_spec.rb +138 -28
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/epp_face_spec.rb +2 -2
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +17 -9
- data/spec/unit/functions/inline_epp_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +88 -16
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +62 -6
- data/spec/unit/hiera/scope_spec.rb +5 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/json_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +8 -0
- data/spec/unit/parser/compiler_spec.rb +16 -18
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +127 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -390
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +159 -15
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +88 -47
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/rpm_spec.rb +2 -25
- data/spec/unit/provider/package/yum_spec.rb +12 -1
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/debian_spec.rb +6 -24
- data/spec/unit/provider/service/init_spec.rb +11 -1
- data/spec/unit/provider/service/launchd_spec.rb +18 -25
- data/spec/unit/provider/service/systemd_spec.rb +25 -12
- data/spec/unit/provider/service/upstart_spec.rb +57 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
- data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +99 -50
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +46 -38
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +48 -11
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +3342 -3195
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
# must be running with elevated privileges.
|
|
42
42
|
# * A file/dir can be deleted by anyone with the DELETE access right
|
|
43
43
|
# OR by anyone that has the FILE_DELETE_CHILD access right for the
|
|
44
|
-
# parent. See
|
|
44
|
+
# parent. See https://support.microsoft.com/kb/238018. But on Unix,
|
|
45
45
|
# the user must have write access to the file/dir AND execute access
|
|
46
46
|
# to all of the parent path components.
|
|
47
47
|
# * Many access control entries are inherited from parent directories,
|
|
@@ -65,8 +65,6 @@ require 'puppet/util/windows'
|
|
|
65
65
|
require 'pathname'
|
|
66
66
|
require 'ffi'
|
|
67
67
|
|
|
68
|
-
require 'win32/security'
|
|
69
|
-
|
|
70
68
|
module Puppet::Util::Windows::Security
|
|
71
69
|
include Puppet::Util::Windows::String
|
|
72
70
|
|
|
@@ -199,9 +197,9 @@ module Puppet::Util::Windows::Security
|
|
|
199
197
|
def get_mode(path)
|
|
200
198
|
return unless supports_acl?(path)
|
|
201
199
|
|
|
202
|
-
well_known_world_sid =
|
|
203
|
-
well_known_nobody_sid =
|
|
204
|
-
well_known_system_sid =
|
|
200
|
+
well_known_world_sid = Puppet::Util::Windows::SID::Everyone
|
|
201
|
+
well_known_nobody_sid = Puppet::Util::Windows::SID::Nobody
|
|
202
|
+
well_known_system_sid = Puppet::Util::Windows::SID::LocalSystem
|
|
205
203
|
|
|
206
204
|
mode = S_ISYSTEM_MISSING
|
|
207
205
|
|
|
@@ -278,9 +276,9 @@ module Puppet::Util::Windows::Security
|
|
|
278
276
|
# that they do not have read and write access to.
|
|
279
277
|
def set_mode(mode, path, protected = true)
|
|
280
278
|
sd = get_security_descriptor(path)
|
|
281
|
-
well_known_world_sid =
|
|
282
|
-
well_known_nobody_sid =
|
|
283
|
-
well_known_system_sid =
|
|
279
|
+
well_known_world_sid = Puppet::Util::Windows::SID::Everyone
|
|
280
|
+
well_known_nobody_sid = Puppet::Util::Windows::SID::Nobody
|
|
281
|
+
well_known_system_sid = Puppet::Util::Windows::SID::LocalSystem
|
|
284
282
|
|
|
285
283
|
owner_allow = FILE::STANDARD_RIGHTS_ALL |
|
|
286
284
|
FILE::FILE_READ_ATTRIBUTES |
|
|
@@ -361,12 +359,12 @@ module Puppet::Util::Windows::Security
|
|
|
361
359
|
inherit_only = Puppet::Util::Windows::AccessControlEntry::INHERIT_ONLY_ACE
|
|
362
360
|
if isdir
|
|
363
361
|
inherit = inherit_only | Puppet::Util::Windows::AccessControlEntry::CONTAINER_INHERIT_ACE
|
|
364
|
-
dacl.allow(
|
|
365
|
-
dacl.allow(
|
|
362
|
+
dacl.allow(Puppet::Util::Windows::SID::CreatorOwner, owner_allow, inherit)
|
|
363
|
+
dacl.allow(Puppet::Util::Windows::SID::CreatorGroup, group_allow, inherit)
|
|
366
364
|
|
|
367
365
|
inherit = inherit_only | Puppet::Util::Windows::AccessControlEntry::OBJECT_INHERIT_ACE
|
|
368
|
-
dacl.allow(
|
|
369
|
-
dacl.allow(
|
|
366
|
+
dacl.allow(Puppet::Util::Windows::SID::CreatorOwner, owner_allow & ~FILE::FILE_EXECUTE, inherit)
|
|
367
|
+
dacl.allow(Puppet::Util::Windows::SID::CreatorGroup, group_allow & ~FILE::FILE_EXECUTE, inherit)
|
|
370
368
|
end
|
|
371
369
|
|
|
372
370
|
new_sd = Puppet::Util::Windows::SecurityDescriptor.new(sd.owner, sd.group, dacl, protected)
|
|
@@ -579,7 +577,7 @@ module Puppet::Util::Windows::Security
|
|
|
579
577
|
end
|
|
580
578
|
|
|
581
579
|
def get_max_generic_acl_size(ace_count)
|
|
582
|
-
#
|
|
580
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa378853(v=vs.85).aspx
|
|
583
581
|
# To calculate the initial size of an ACL, add the following together, and then align the result to the nearest DWORD:
|
|
584
582
|
# * Size of the ACL structure.
|
|
585
583
|
# * Size of each ACE structure that the ACL is to contain minus the SidStart member (DWORD) of the ACE.
|
|
@@ -643,7 +641,7 @@ module Puppet::Util::Windows::Security
|
|
|
643
641
|
|
|
644
642
|
ffi_convention :stdcall
|
|
645
643
|
|
|
646
|
-
#
|
|
644
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
|
|
647
645
|
# HANDLE WINAPI CreateFile(
|
|
648
646
|
# _In_ LPCTSTR lpFileName,
|
|
649
647
|
# _In_ DWORD dwDesiredAccess,
|
|
@@ -657,7 +655,7 @@ module Puppet::Util::Windows::Security
|
|
|
657
655
|
attach_function_private :CreateFileW,
|
|
658
656
|
[:lpcwstr, :dword, :dword, :pointer, :dword, :dword, :handle], :handle
|
|
659
657
|
|
|
660
|
-
#
|
|
658
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v=vs.85).aspx
|
|
661
659
|
# BOOL WINAPI GetVolumeInformation(
|
|
662
660
|
# _In_opt_ LPCTSTR lpRootPathName,
|
|
663
661
|
# _Out_opt_ LPTSTR lpVolumeNameBuffer,
|
|
@@ -672,7 +670,7 @@ module Puppet::Util::Windows::Security
|
|
|
672
670
|
attach_function_private :GetVolumeInformationW,
|
|
673
671
|
[:lpcwstr, :lpwstr, :dword, :lpdword, :lpdword, :lpdword, :lpwstr, :dword], :win32_bool
|
|
674
672
|
|
|
675
|
-
#
|
|
673
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa374951(v=vs.85).aspx
|
|
676
674
|
# BOOL WINAPI AddAccessAllowedAceEx(
|
|
677
675
|
# _Inout_ PACL pAcl,
|
|
678
676
|
# _In_ DWORD dwAceRevision,
|
|
@@ -684,7 +682,7 @@ module Puppet::Util::Windows::Security
|
|
|
684
682
|
attach_function_private :AddAccessAllowedAceEx,
|
|
685
683
|
[:pointer, :dword, :dword, :dword, :pointer], :win32_bool
|
|
686
684
|
|
|
687
|
-
#
|
|
685
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa374964(v=vs.85).aspx
|
|
688
686
|
# BOOL WINAPI AddAccessDeniedAceEx(
|
|
689
687
|
# _Inout_ PACL pAcl,
|
|
690
688
|
# _In_ DWORD dwAceRevision,
|
|
@@ -696,7 +694,7 @@ module Puppet::Util::Windows::Security
|
|
|
696
694
|
attach_function_private :AddAccessDeniedAceEx,
|
|
697
695
|
[:pointer, :dword, :dword, :dword, :pointer], :win32_bool
|
|
698
696
|
|
|
699
|
-
#
|
|
697
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa374931(v=vs.85).aspx
|
|
700
698
|
# typedef struct _ACL {
|
|
701
699
|
# BYTE AclRevision;
|
|
702
700
|
# BYTE Sbz1;
|
|
@@ -712,9 +710,9 @@ module Puppet::Util::Windows::Security
|
|
|
712
710
|
:Sbz2, :word
|
|
713
711
|
end
|
|
714
712
|
|
|
715
|
-
#
|
|
713
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa374912(v=vs.85).aspx
|
|
716
714
|
# ACE types
|
|
717
|
-
#
|
|
715
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa374919(v=vs.85).aspx
|
|
718
716
|
# typedef struct _ACE_HEADER {
|
|
719
717
|
# BYTE AceType;
|
|
720
718
|
# BYTE AceFlags;
|
|
@@ -726,17 +724,17 @@ module Puppet::Util::Windows::Security
|
|
|
726
724
|
:AceSize, :word
|
|
727
725
|
end
|
|
728
726
|
|
|
729
|
-
#
|
|
727
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa374892(v=vs.85).aspx
|
|
730
728
|
# ACCESS_MASK
|
|
731
729
|
|
|
732
|
-
#
|
|
730
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa374847(v=vs.85).aspx
|
|
733
731
|
# typedef struct _ACCESS_ALLOWED_ACE {
|
|
734
732
|
# ACE_HEADER Header;
|
|
735
733
|
# ACCESS_MASK Mask;
|
|
736
734
|
# DWORD SidStart;
|
|
737
735
|
# } ACCESS_ALLOWED_ACE, *PACCESS_ALLOWED_ACE;
|
|
738
736
|
#
|
|
739
|
-
#
|
|
737
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa374879(v=vs.85).aspx
|
|
740
738
|
# typedef struct _ACCESS_DENIED_ACE {
|
|
741
739
|
# ACE_HEADER Header;
|
|
742
740
|
# ACCESS_MASK Mask;
|
|
@@ -751,12 +749,12 @@ module Puppet::Util::Windows::Security
|
|
|
751
749
|
:SidStart, :dword
|
|
752
750
|
end
|
|
753
751
|
|
|
754
|
-
#
|
|
752
|
+
# https://stackoverflow.com/a/1792930
|
|
755
753
|
MAXIMUM_SID_BYTES_LENGTH = 68
|
|
756
754
|
MAXIMUM_GENERIC_ACE_SIZE = GENERIC_ACCESS_ACE.offset_of(:SidStart) +
|
|
757
755
|
MAXIMUM_SID_BYTES_LENGTH
|
|
758
756
|
|
|
759
|
-
#
|
|
757
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446634(v=vs.85).aspx
|
|
760
758
|
# BOOL WINAPI GetAce(
|
|
761
759
|
# _In_ PACL pAcl,
|
|
762
760
|
# _In_ DWORD dwAceIndex,
|
|
@@ -766,7 +764,7 @@ module Puppet::Util::Windows::Security
|
|
|
766
764
|
attach_function_private :GetAce,
|
|
767
765
|
[:pointer, :dword, :pointer], :win32_bool
|
|
768
766
|
|
|
769
|
-
#
|
|
767
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa375202(v=vs.85).aspx
|
|
770
768
|
# BOOL WINAPI AdjustTokenPrivileges(
|
|
771
769
|
# _In_ HANDLE TokenHandle,
|
|
772
770
|
# _In_ BOOL DisableAllPrivileges,
|
|
@@ -779,9 +777,9 @@ module Puppet::Util::Windows::Security
|
|
|
779
777
|
attach_function_private :AdjustTokenPrivileges,
|
|
780
778
|
[:handle, :win32_bool, :pointer, :dword, :pointer, :pdword], :win32_bool
|
|
781
779
|
|
|
782
|
-
#
|
|
783
|
-
#
|
|
784
|
-
#
|
|
780
|
+
# https://msdn.microsoft.com/en-us/library/windows/hardware/ff556610(v=vs.85).aspx
|
|
781
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379561(v=vs.85).aspx
|
|
782
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446647(v=vs.85).aspx
|
|
785
783
|
# typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
|
|
786
784
|
# BOOL WINAPI GetSecurityDescriptorControl(
|
|
787
785
|
# _In_ PSECURITY_DESCRIPTOR pSecurityDescriptor,
|
|
@@ -792,7 +790,7 @@ module Puppet::Util::Windows::Security
|
|
|
792
790
|
attach_function_private :GetSecurityDescriptorControl,
|
|
793
791
|
[:pointer, :lpword, :lpdword], :win32_bool
|
|
794
792
|
|
|
795
|
-
#
|
|
793
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa378853(v=vs.85).aspx
|
|
796
794
|
# BOOL WINAPI InitializeAcl(
|
|
797
795
|
# _Out_ PACL pAcl,
|
|
798
796
|
# _In_ DWORD nAclLength,
|
|
@@ -802,7 +800,7 @@ module Puppet::Util::Windows::Security
|
|
|
802
800
|
attach_function_private :InitializeAcl,
|
|
803
801
|
[:pointer, :dword, :dword], :win32_bool
|
|
804
802
|
|
|
805
|
-
#
|
|
803
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379142(v=vs.85).aspx
|
|
806
804
|
# BOOL WINAPI IsValidAcl(
|
|
807
805
|
# _In_ PACL pAcl
|
|
808
806
|
# );
|
|
@@ -810,7 +808,7 @@ module Puppet::Util::Windows::Security
|
|
|
810
808
|
attach_function_private :IsValidAcl,
|
|
811
809
|
[:pointer], :win32_bool
|
|
812
810
|
|
|
813
|
-
#
|
|
811
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379593(v=vs.85).aspx
|
|
814
812
|
SE_OBJECT_TYPE = enum(
|
|
815
813
|
:SE_UNKNOWN_OBJECT_TYPE, 0,
|
|
816
814
|
:SE_FILE_OBJECT,
|
|
@@ -827,7 +825,7 @@ module Puppet::Util::Windows::Security
|
|
|
827
825
|
:SE_REGISTRY_WOW64_32KEY
|
|
828
826
|
)
|
|
829
827
|
|
|
830
|
-
#
|
|
828
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446654(v=vs.85).aspx
|
|
831
829
|
# DWORD WINAPI GetSecurityInfo(
|
|
832
830
|
# _In_ HANDLE handle,
|
|
833
831
|
# _In_ SE_OBJECT_TYPE ObjectType,
|
|
@@ -842,7 +840,7 @@ module Puppet::Util::Windows::Security
|
|
|
842
840
|
attach_function_private :GetSecurityInfo,
|
|
843
841
|
[:handle, SE_OBJECT_TYPE, :dword, :pointer, :pointer, :pointer, :pointer, :pointer], :dword
|
|
844
842
|
|
|
845
|
-
#
|
|
843
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379588(v=vs.85).aspx
|
|
846
844
|
# DWORD WINAPI SetSecurityInfo(
|
|
847
845
|
# _In_ HANDLE handle,
|
|
848
846
|
# _In_ SE_OBJECT_TYPE ObjectType,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# flags, DACL, and SACL. The SACL is not currently supported, though it has the
|
|
6
6
|
# same layout as a DACL.
|
|
7
7
|
#
|
|
8
|
-
# @see
|
|
8
|
+
# @see https://msdn.microsoft.com/en-us/library/windows/desktop/aa379563(v=vs.85).aspx
|
|
9
9
|
# @api private
|
|
10
10
|
class Puppet::Util::Windows::SecurityDescriptor
|
|
11
11
|
require 'puppet/util/windows/security'
|
|
@@ -9,6 +9,44 @@ module Puppet::Util::Windows
|
|
|
9
9
|
ERROR_NONE_MAPPED = 1332
|
|
10
10
|
ERROR_INVALID_SID_STRUCTURE = 1337
|
|
11
11
|
|
|
12
|
+
# Well Known SIDs
|
|
13
|
+
Null = 'S-1-0'
|
|
14
|
+
Nobody = 'S-1-0-0'
|
|
15
|
+
World = 'S-1-1'
|
|
16
|
+
Everyone = 'S-1-1-0'
|
|
17
|
+
Local = 'S-1-2'
|
|
18
|
+
Creator = 'S-1-3'
|
|
19
|
+
CreatorOwner = 'S-1-3-0'
|
|
20
|
+
CreatorGroup = 'S-1-3-1'
|
|
21
|
+
CreatorOwnerServer = 'S-1-3-2'
|
|
22
|
+
CreatorGroupServer = 'S-1-3-3'
|
|
23
|
+
NonUnique = 'S-1-4'
|
|
24
|
+
Nt = 'S-1-5'
|
|
25
|
+
Dialup = 'S-1-5-1'
|
|
26
|
+
Network = 'S-1-5-2'
|
|
27
|
+
Batch = 'S-1-5-3'
|
|
28
|
+
Interactive = 'S-1-5-4'
|
|
29
|
+
Service = 'S-1-5-6'
|
|
30
|
+
Anonymous = 'S-1-5-7'
|
|
31
|
+
Proxy = 'S-1-5-8'
|
|
32
|
+
EnterpriseDomainControllers = 'S-1-5-9'
|
|
33
|
+
PrincipalSelf = 'S-1-5-10'
|
|
34
|
+
AuthenticatedUsers = 'S-1-5-11'
|
|
35
|
+
RestrictedCode = 'S-1-5-12'
|
|
36
|
+
TerminalServerUsers = 'S-1-5-13'
|
|
37
|
+
LocalSystem = 'S-1-5-18'
|
|
38
|
+
NtLocal = 'S-1-5-19'
|
|
39
|
+
NtNetwork = 'S-1-5-20'
|
|
40
|
+
BuiltinAdministrators = 'S-1-5-32-544'
|
|
41
|
+
BuiltinUsers = 'S-1-5-32-545'
|
|
42
|
+
Guests = 'S-1-5-32-546'
|
|
43
|
+
PowerUsers = 'S-1-5-32-547'
|
|
44
|
+
AccountOperators = 'S-1-5-32-548'
|
|
45
|
+
ServerOperators = 'S-1-5-32-549'
|
|
46
|
+
PrintOperators = 'S-1-5-32-550'
|
|
47
|
+
BackupOperators = 'S-1-5-32-551'
|
|
48
|
+
Replicators = 'S-1-5-32-552'
|
|
49
|
+
|
|
12
50
|
# Convert an account name, e.g. 'Administrators' into a SID string,
|
|
13
51
|
# e.g. 'S-1-5-32-544'. The name can be specified as 'Administrators',
|
|
14
52
|
# 'BUILTIN\Administrators', or 'S-1-5-32-544', and will return the
|
|
@@ -16,7 +54,7 @@ module Puppet::Util::Windows
|
|
|
16
54
|
def name_to_sid(name)
|
|
17
55
|
sid = name_to_sid_object(name)
|
|
18
56
|
|
|
19
|
-
sid ? sid.
|
|
57
|
+
sid ? sid.sid : nil
|
|
20
58
|
end
|
|
21
59
|
module_function :name_to_sid
|
|
22
60
|
|
|
@@ -24,14 +62,22 @@ module Puppet::Util::Windows
|
|
|
24
62
|
# e.g. 'S-1-5-32-544'. The name can be specified as 'Administrators',
|
|
25
63
|
# 'BUILTIN\Administrators', or 'S-1-5-32-544', and will return the
|
|
26
64
|
# SID object. Returns nil if the account doesn't exist.
|
|
65
|
+
# This method returns a SID::Principal with the account, domain, SID, etc
|
|
27
66
|
def name_to_sid_object(name)
|
|
28
67
|
# Apparently, we accept a symbol..
|
|
29
68
|
name = name.to_s.strip if name
|
|
30
69
|
|
|
31
|
-
# if
|
|
32
|
-
|
|
70
|
+
# if name is a SID string, convert it to raw bytes for use with lookup_account_sid
|
|
71
|
+
raw_sid_bytes = nil
|
|
72
|
+
begin
|
|
73
|
+
string_to_sid_ptr(name) do |sid_ptr|
|
|
74
|
+
valid = ! sid_ptr.nil? && ! sid_ptr.null?
|
|
75
|
+
raw_sid_bytes = sid_ptr.read_array_of_uchar(get_length_sid(sid_ptr))
|
|
76
|
+
end
|
|
77
|
+
rescue
|
|
78
|
+
end
|
|
33
79
|
|
|
34
|
-
|
|
80
|
+
raw_sid_bytes ? Principal.lookup_account_sid(raw_sid_bytes) : Principal.lookup_account_name(name)
|
|
35
81
|
rescue
|
|
36
82
|
nil
|
|
37
83
|
end
|
|
@@ -41,12 +87,13 @@ module Puppet::Util::Windows
|
|
|
41
87
|
# e.g. [1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0] is the representation for
|
|
42
88
|
# S-1-5-18, the local 'SYSTEM' account.
|
|
43
89
|
# Raises an Error for nil or non-array input.
|
|
90
|
+
# This method returns a SID::Principal with the account, domain, SID, etc
|
|
44
91
|
def octet_string_to_sid_object(bytes)
|
|
45
92
|
if !bytes || !bytes.respond_to?('pack') || bytes.empty?
|
|
46
93
|
raise Puppet::Util::Windows::Error.new("Octet string must be an array of bytes")
|
|
47
94
|
end
|
|
48
95
|
|
|
49
|
-
|
|
96
|
+
Principal.lookup_account_sid(bytes)
|
|
50
97
|
end
|
|
51
98
|
module_function :octet_string_to_sid_object
|
|
52
99
|
|
|
@@ -54,24 +101,29 @@ module Puppet::Util::Windows
|
|
|
54
101
|
# e.g. 'BUILTIN\Administrators'. Returns nil if an account
|
|
55
102
|
# for that SID does not exist.
|
|
56
103
|
def sid_to_name(value)
|
|
57
|
-
sid = Win32::Security::SID.new(Win32::Security::SID.string_to_sid(value))
|
|
58
104
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
105
|
+
sid_bytes = []
|
|
106
|
+
begin
|
|
107
|
+
string_to_sid_ptr(value) do |ptr|
|
|
108
|
+
valid = ! ptr.nil? && ! ptr.null?
|
|
109
|
+
sid_bytes = ptr.read_array_of_uchar(get_length_sid(ptr))
|
|
110
|
+
end
|
|
111
|
+
rescue Puppet::Util::Windows::Error => e
|
|
112
|
+
raise if e.code != ERROR_INVALID_SID_STRUCTURE
|
|
63
113
|
end
|
|
114
|
+
|
|
115
|
+
Principal.lookup_account_sid(sid_bytes).domain_account
|
|
64
116
|
rescue
|
|
65
117
|
nil
|
|
66
118
|
end
|
|
67
119
|
module_function :sid_to_name
|
|
68
120
|
|
|
69
|
-
#
|
|
121
|
+
# https://stackoverflow.com/a/1792930 - 68 bytes, 184 characters in a string
|
|
70
122
|
MAXIMUM_SID_STRING_LENGTH = 184
|
|
71
123
|
|
|
72
124
|
# Convert a SID pointer to a SID string, e.g. "S-1-5-32-544".
|
|
73
125
|
def sid_ptr_to_string(psid)
|
|
74
|
-
if ! psid.
|
|
126
|
+
if ! psid.kind_of?(FFI::Pointer) || IsValidSid(psid) == FFI::WIN32_FALSE
|
|
75
127
|
raise Puppet::Util::Windows::Error.new("Invalid SID")
|
|
76
128
|
end
|
|
77
129
|
|
|
@@ -131,9 +183,19 @@ module Puppet::Util::Windows
|
|
|
131
183
|
end
|
|
132
184
|
module_function :valid_sid?
|
|
133
185
|
|
|
186
|
+
def get_length_sid(sid_ptr)
|
|
187
|
+
# MSDN states IsValidSid should be called on pointer first
|
|
188
|
+
if ! sid_ptr.kind_of?(FFI::Pointer) || IsValidSid(sid_ptr) == FFI::WIN32_FALSE
|
|
189
|
+
raise Puppet::Util::Windows::Error.new("Invalid SID")
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
GetLengthSid(sid_ptr)
|
|
193
|
+
end
|
|
194
|
+
module_function :get_length_sid
|
|
195
|
+
|
|
134
196
|
ffi_convention :stdcall
|
|
135
197
|
|
|
136
|
-
#
|
|
198
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379151(v=vs.85).aspx
|
|
137
199
|
# BOOL WINAPI IsValidSid(
|
|
138
200
|
# _In_ PSID pSid
|
|
139
201
|
# );
|
|
@@ -141,7 +203,7 @@ module Puppet::Util::Windows
|
|
|
141
203
|
attach_function_private :IsValidSid,
|
|
142
204
|
[:pointer], :win32_bool
|
|
143
205
|
|
|
144
|
-
#
|
|
206
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa376399(v=vs.85).aspx
|
|
145
207
|
# BOOL ConvertSidToStringSid(
|
|
146
208
|
# _In_ PSID Sid,
|
|
147
209
|
# _Out_ LPTSTR *StringSid
|
|
@@ -150,7 +212,7 @@ module Puppet::Util::Windows
|
|
|
150
212
|
attach_function_private :ConvertSidToStringSidW,
|
|
151
213
|
[:pointer, :pointer], :win32_bool
|
|
152
214
|
|
|
153
|
-
#
|
|
215
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa376402(v=vs.85).aspx
|
|
154
216
|
# BOOL WINAPI ConvertStringSidToSid(
|
|
155
217
|
# _In_ LPCTSTR StringSid,
|
|
156
218
|
# _Out_ PSID *Sid
|
|
@@ -158,5 +220,12 @@ module Puppet::Util::Windows
|
|
|
158
220
|
ffi_lib :advapi32
|
|
159
221
|
attach_function_private :ConvertStringSidToSidW,
|
|
160
222
|
[:lpcwstr, :pointer], :win32_bool
|
|
223
|
+
|
|
224
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446642(v=vs.85).aspx
|
|
225
|
+
# DWORD WINAPI GetLengthSid(
|
|
226
|
+
# _In_ PSID pSid
|
|
227
|
+
# );
|
|
228
|
+
ffi_lib :advapi32
|
|
229
|
+
attach_function_private :GetLengthSid, [:pointer], :dword
|
|
161
230
|
end
|
|
162
231
|
end
|
|
@@ -84,7 +84,7 @@ module Win32
|
|
|
84
84
|
SCHED_S_TASK_HAS_NOT_RUN = 0x00041303
|
|
85
85
|
SCHED_S_TASK_NOT_SCHEDULED = 0x00041305
|
|
86
86
|
# HRESULT error codes
|
|
87
|
-
#
|
|
87
|
+
# https://blogs.msdn.com/b/eldar/archive/2007/04/03/a-lot-of-hresult-codes.aspx
|
|
88
88
|
# in Ruby, an 0x8XXXXXXX style HRESULT can be resolved to 2s complement
|
|
89
89
|
# by using "0x8XXXXXXX".to_i(16) - - 0x100000000
|
|
90
90
|
SCHED_E_ACCOUNT_INFORMATION_NOT_SET = -2147216625 # 0x8004130F
|
|
@@ -1002,7 +1002,7 @@ module Win32
|
|
|
1002
1002
|
|
|
1003
1003
|
public
|
|
1004
1004
|
|
|
1005
|
-
#
|
|
1005
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381811(v=vs.85).aspx
|
|
1006
1006
|
ITaskScheduler = com::Interface[com::IUnknown,
|
|
1007
1007
|
FFI::WIN32::GUID['148BD527-A2AB-11CE-B11F-00AA00530503'],
|
|
1008
1008
|
|
|
@@ -1025,7 +1025,7 @@ module Win32
|
|
|
1025
1025
|
TaskScheduler = com::Factory[ITaskScheduler,
|
|
1026
1026
|
FFI::WIN32::GUID['148BD52A-A2AB-11CE-B11F-00AA00530503']]
|
|
1027
1027
|
|
|
1028
|
-
#
|
|
1028
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa380706(v=vs.85).aspx
|
|
1029
1029
|
IEnumWorkItems = com::Interface[com::IUnknown,
|
|
1030
1030
|
FFI::WIN32::GUID['148BD528-A2AB-11CE-B11F-00AA00530503'],
|
|
1031
1031
|
|
|
@@ -1039,7 +1039,7 @@ module Win32
|
|
|
1039
1039
|
|
|
1040
1040
|
EnumWorkItems = com::Instance[IEnumWorkItems]
|
|
1041
1041
|
|
|
1042
|
-
#
|
|
1042
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381216(v=vs.85).aspx
|
|
1043
1043
|
IScheduledWorkItem = com::Interface[com::IUnknown,
|
|
1044
1044
|
FFI::WIN32::GUID['a6b952f0-a4b1-11d0-997d-00aa006887ec'],
|
|
1045
1045
|
|
|
@@ -1091,7 +1091,7 @@ module Win32
|
|
|
1091
1091
|
GetAccountInformation: [[:pointer], :hresult]
|
|
1092
1092
|
]
|
|
1093
1093
|
|
|
1094
|
-
#
|
|
1094
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381311(v=vs.85).aspx
|
|
1095
1095
|
ITask = com::Interface[IScheduledWorkItem,
|
|
1096
1096
|
FFI::WIN32::GUID['148BD524-A2AB-11CE-B11F-00AA00530503'],
|
|
1097
1097
|
|
|
@@ -1117,14 +1117,14 @@ module Win32
|
|
|
1117
1117
|
|
|
1118
1118
|
Task = com::Instance[ITask]
|
|
1119
1119
|
|
|
1120
|
-
#
|
|
1120
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms688695(v=vs.85).aspx
|
|
1121
1121
|
IPersist = com::Interface[com::IUnknown,
|
|
1122
1122
|
FFI::WIN32::GUID['0000010c-0000-0000-c000-000000000046'],
|
|
1123
1123
|
# CLSID *
|
|
1124
1124
|
GetClassID: [[:pointer], :hresult]
|
|
1125
1125
|
]
|
|
1126
1126
|
|
|
1127
|
-
#
|
|
1127
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms687223(v=vs.85).aspx
|
|
1128
1128
|
IPersistFile = com::Interface[IPersist,
|
|
1129
1129
|
FFI::WIN32::GUID['0000010b-0000-0000-C000-000000000046'],
|
|
1130
1130
|
|
|
@@ -1138,7 +1138,7 @@ module Win32
|
|
|
1138
1138
|
|
|
1139
1139
|
PersistFile = com::Instance[IPersistFile]
|
|
1140
1140
|
|
|
1141
|
-
#
|
|
1141
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381864(v=vs.85).aspx
|
|
1142
1142
|
ITaskTrigger = com::Interface[com::IUnknown,
|
|
1143
1143
|
FFI::WIN32::GUID['148BD52B-A2AB-11CE-B11F-00AA00530503'],
|
|
1144
1144
|
|
|
@@ -1149,7 +1149,7 @@ module Win32
|
|
|
1149
1149
|
|
|
1150
1150
|
TaskTrigger = com::Instance[ITaskTrigger]
|
|
1151
1151
|
|
|
1152
|
-
#
|
|
1152
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa383620(v=vs.85).aspx
|
|
1153
1153
|
# The TASK_TRIGGER_TYPE field of the TASK_TRIGGER structure determines
|
|
1154
1154
|
# which member of the TRIGGER_TYPE_UNION field to use.
|
|
1155
1155
|
TASK_TRIGGER_TYPE = enum(
|
|
@@ -1163,31 +1163,31 @@ module Win32
|
|
|
1163
1163
|
:TASK_EVENT_TRIGGER_AT_LOGON, 7 # Ignore the Type field
|
|
1164
1164
|
)
|
|
1165
1165
|
|
|
1166
|
-
#
|
|
1166
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446857(v=vs.85).aspx
|
|
1167
1167
|
class DAILY < FFI::Struct
|
|
1168
1168
|
layout :DaysInterval, :word
|
|
1169
1169
|
end
|
|
1170
1170
|
|
|
1171
|
-
#
|
|
1171
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa384014(v=vs.85).aspx
|
|
1172
1172
|
class WEEKLY < FFI::Struct
|
|
1173
1173
|
layout :WeeksInterval, :word,
|
|
1174
1174
|
:rgfDaysOfTheWeek, :word
|
|
1175
1175
|
end
|
|
1176
1176
|
|
|
1177
|
-
#
|
|
1177
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
|
|
1178
1178
|
class MONTHLYDATE < FFI::Struct
|
|
1179
1179
|
layout :rgfDays, :dword,
|
|
1180
1180
|
:rgfMonths, :word
|
|
1181
1181
|
end
|
|
1182
1182
|
|
|
1183
|
-
#
|
|
1183
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa381918(v=vs.85).aspx
|
|
1184
1184
|
class MONTHLYDOW < FFI::Struct
|
|
1185
1185
|
layout :wWhichWeek, :word,
|
|
1186
1186
|
:rgfDaysOfTheWeek, :word,
|
|
1187
1187
|
:rgfMonths, :word
|
|
1188
1188
|
end
|
|
1189
1189
|
|
|
1190
|
-
#
|
|
1190
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa384002(v=vs.85).aspx
|
|
1191
1191
|
class TRIGGER_TYPE_UNION < FFI::Union
|
|
1192
1192
|
layout :Daily, DAILY,
|
|
1193
1193
|
:Weekly, WEEKLY,
|
|
@@ -1195,7 +1195,7 @@ module Win32
|
|
|
1195
1195
|
:MonthlyDOW, MONTHLYDOW
|
|
1196
1196
|
end
|
|
1197
1197
|
|
|
1198
|
-
#
|
|
1198
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa383618(v=vs.85).aspx
|
|
1199
1199
|
class TASK_TRIGGER < FFI::Struct
|
|
1200
1200
|
layout :cbTriggerSize, :word, # Structure size.
|
|
1201
1201
|
:Reserved1, :word, # Reserved. Must be zero.
|
|
@@ -19,7 +19,7 @@ module Puppet::Util::Windows::User
|
|
|
19
19
|
module_function :admin?
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
#
|
|
22
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ee207397(v=vs.85).aspx
|
|
23
23
|
SECURITY_MAX_SID_SIZE = 68
|
|
24
24
|
|
|
25
25
|
def check_token_membership
|
|
@@ -43,7 +43,7 @@ module Puppet::Util::Windows::User
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
# Is administrators SID enabled in calling thread's access token?
|
|
46
|
-
is_admin = ismember_pointer.read_win32_bool
|
|
46
|
+
is_admin = ismember_pointer.read_win32_bool
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -106,7 +106,7 @@ module Puppet::Util::Windows::User
|
|
|
106
106
|
|
|
107
107
|
ffi_convention :stdcall
|
|
108
108
|
|
|
109
|
-
#
|
|
109
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v=vs.85).aspx
|
|
110
110
|
# BOOL LogonUser(
|
|
111
111
|
# _In_ LPTSTR lpszUsername,
|
|
112
112
|
# _In_opt_ LPTSTR lpszDomain,
|
|
@@ -119,7 +119,7 @@ module Puppet::Util::Windows::User
|
|
|
119
119
|
attach_function_private :LogonUserW,
|
|
120
120
|
[:lpwstr, :lpwstr, :lpwstr, :dword, :dword, :phandle], :win32_bool
|
|
121
121
|
|
|
122
|
-
#
|
|
122
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/bb773378(v=vs.85).aspx
|
|
123
123
|
# typedef struct _PROFILEINFO {
|
|
124
124
|
# DWORD dwSize;
|
|
125
125
|
# DWORD dwFlags;
|
|
@@ -143,7 +143,7 @@ module Puppet::Util::Windows::User
|
|
|
143
143
|
:hProfile, :handle
|
|
144
144
|
end
|
|
145
145
|
|
|
146
|
-
#
|
|
146
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/bb762281(v=vs.85).aspx
|
|
147
147
|
# BOOL WINAPI LoadUserProfile(
|
|
148
148
|
# _In_ HANDLE hToken,
|
|
149
149
|
# _Inout_ LPPROFILEINFO lpProfileInfo
|
|
@@ -152,7 +152,7 @@ module Puppet::Util::Windows::User
|
|
|
152
152
|
attach_function_private :LoadUserProfileW,
|
|
153
153
|
[:handle, :pointer], :win32_bool
|
|
154
154
|
|
|
155
|
-
#
|
|
155
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/bb762282(v=vs.85).aspx
|
|
156
156
|
# BOOL WINAPI UnloadUserProfile(
|
|
157
157
|
# _In_ HANDLE hToken,
|
|
158
158
|
# _In_ HANDLE hProfile
|
|
@@ -161,7 +161,7 @@ module Puppet::Util::Windows::User
|
|
|
161
161
|
attach_function_private :UnloadUserProfile,
|
|
162
162
|
[:handle, :handle], :win32_bool
|
|
163
163
|
|
|
164
|
-
#
|
|
164
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa376389(v=vs.85).aspx
|
|
165
165
|
# BOOL WINAPI CheckTokenMembership(
|
|
166
166
|
# _In_opt_ HANDLE TokenHandle,
|
|
167
167
|
# _In_ PSID SidToCheck,
|
|
@@ -171,7 +171,7 @@ module Puppet::Util::Windows::User
|
|
|
171
171
|
attach_function_private :CheckTokenMembership,
|
|
172
172
|
[:handle, :pointer, :pbool], :win32_bool
|
|
173
173
|
|
|
174
|
-
#
|
|
174
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379650(v=vs.85).aspx
|
|
175
175
|
WELL_KNOWN_SID_TYPE = enum(
|
|
176
176
|
:WinNullSid , 0,
|
|
177
177
|
:WinWorldSid , 1,
|
|
@@ -270,7 +270,7 @@ module Puppet::Util::Windows::User
|
|
|
270
270
|
:WinCapabilityRemovableStorageSid , 94
|
|
271
271
|
)
|
|
272
272
|
|
|
273
|
-
#
|
|
273
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa446585(v=vs.85).aspx
|
|
274
274
|
# BOOL WINAPI CreateWellKnownSid(
|
|
275
275
|
# _In_ WELL_KNOWN_SID_TYPE WellKnownSidType,
|
|
276
276
|
# _In_opt_ PSID DomainSid,
|
|
@@ -281,7 +281,7 @@ module Puppet::Util::Windows::User
|
|
|
281
281
|
attach_function_private :CreateWellKnownSid,
|
|
282
282
|
[WELL_KNOWN_SID_TYPE, :pointer, :pointer, :lpdword], :win32_bool
|
|
283
283
|
|
|
284
|
-
#
|
|
284
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379151(v=vs.85).aspx
|
|
285
285
|
# BOOL WINAPI IsValidSid(
|
|
286
286
|
# _In_ PSID pSid
|
|
287
287
|
# );
|
data/lib/puppet/util/windows.rb
CHANGED
|
@@ -6,6 +6,9 @@ module Puppet::Util::Windows
|
|
|
6
6
|
end
|
|
7
7
|
module Registry
|
|
8
8
|
end
|
|
9
|
+
module SID
|
|
10
|
+
class Principal; end
|
|
11
|
+
end
|
|
9
12
|
|
|
10
13
|
if Puppet::Util::Platform.windows?
|
|
11
14
|
# these reference platform specific gems
|
|
@@ -14,6 +17,7 @@ module Puppet::Util::Windows
|
|
|
14
17
|
require 'puppet/util/windows/error'
|
|
15
18
|
require 'puppet/util/windows/com'
|
|
16
19
|
require 'puppet/util/windows/sid'
|
|
20
|
+
require 'puppet/util/windows/principal'
|
|
17
21
|
require 'puppet/util/windows/file'
|
|
18
22
|
require 'puppet/util/windows/security'
|
|
19
23
|
require 'puppet/util/windows/user'
|