puppet 6.21.1-x64-mingw32 → 7.4.1-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/Gemfile +1 -4
- data/Gemfile.lock +5 -5
- data/README.md +1 -1
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -2
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +2 -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 +172 -98
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/filebucket.rb +13 -9
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +27 -29
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +57 -162
- data/lib/puppet/environments.rb +8 -23
- data/lib/puppet/face/facts.rb +73 -49
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node/clean.rb +8 -0
- 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 +6 -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 +25 -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/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/formats.rb +67 -0
- 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/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/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/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/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/directoryservice.rb +0 -10
- data/lib/puppet/reference/configuration.rb +7 -5
- 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 +45 -33
- 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/type/user.rb +1 -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/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 +521 -1226
- data/man/man5/puppet.conf.5 +34 -94
- data/man/man8/puppet-facts.8 +56 -35
- data/man/man8/puppet-filebucket.8 +3 -3
- data/man/man8/puppet-module.8 +0 -57
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/integration/application/agent_spec.rb +24 -11
- data/spec/integration/application/apply_spec.rb +1 -1
- 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 +7 -3
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
- 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/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -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 +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/facts_spec.rb +86 -0
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/ssl_spec.rb +2 -2
- 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/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +22 -47
- data/spec/unit/environments_spec.rb +0 -3
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +14 -2
- 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 +22 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- 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/facts/facter_spec.rb +113 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- 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/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/network/authconfig_spec.rb +2 -129
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +45 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -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/functions/create_resources_spec.rb +2 -20
- 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/provider/nameservice_spec.rb +0 -57
- 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/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_spec.rb +0 -12
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +0 -56
- 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 +17 -0
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +19 -55
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- 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 +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -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/source_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +12 -6
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/run_mode_spec.rb +21 -121
- 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 +0 -18
- metadata +47 -218
- 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/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/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/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/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
@@ -1,283 +0,0 @@
|
|
1
|
-
# standard module for determining whether a given hostname or IP has access to
|
2
|
-
# the requested resource
|
3
|
-
|
4
|
-
require 'ipaddr'
|
5
|
-
require 'puppet/util/logging'
|
6
|
-
|
7
|
-
module Puppet
|
8
|
-
class AuthStoreError < Puppet::Error; end
|
9
|
-
class AuthorizationError < Puppet::Error; end
|
10
|
-
|
11
|
-
class Network::AuthStore
|
12
|
-
include Puppet::Util::Logging
|
13
|
-
|
14
|
-
# Is a given combination of name and ip address allowed? If either input
|
15
|
-
# is non-nil, then both inputs must be provided. If neither input
|
16
|
-
# is provided, then the authstore is considered local and defaults to "true".
|
17
|
-
def allowed?(name, ip)
|
18
|
-
if name or ip
|
19
|
-
# This is probably unnecessary, and can cause some weirdness in
|
20
|
-
# cases where we're operating over localhost but don't have a real
|
21
|
-
# IP defined.
|
22
|
-
raise Puppet::DevError, _("Name and IP must be passed to 'allowed?'") unless name and ip
|
23
|
-
# else, we're networked and such
|
24
|
-
else
|
25
|
-
# we're local
|
26
|
-
return true
|
27
|
-
end
|
28
|
-
|
29
|
-
# yay insecure overrides
|
30
|
-
return true if globalallow?
|
31
|
-
|
32
|
-
decl = declarations.find { |d| d.match?(name, ip) }
|
33
|
-
if decl
|
34
|
-
return decl.result
|
35
|
-
end
|
36
|
-
|
37
|
-
info _("defaulting to no access for %{name}") % { name: name }
|
38
|
-
false
|
39
|
-
end
|
40
|
-
|
41
|
-
# Mark a given pattern as allowed.
|
42
|
-
def allow(pattern)
|
43
|
-
# a simple way to allow anyone at all to connect
|
44
|
-
if pattern == "*"
|
45
|
-
@globalallow = true
|
46
|
-
else
|
47
|
-
store(:allow, pattern)
|
48
|
-
end
|
49
|
-
|
50
|
-
nil
|
51
|
-
end
|
52
|
-
|
53
|
-
def allow_ip(pattern)
|
54
|
-
store(:allow_ip, pattern)
|
55
|
-
end
|
56
|
-
|
57
|
-
# Deny a given pattern.
|
58
|
-
def deny(pattern)
|
59
|
-
store(:deny, pattern)
|
60
|
-
end
|
61
|
-
|
62
|
-
def deny_ip(pattern)
|
63
|
-
store(:deny_ip, pattern)
|
64
|
-
end
|
65
|
-
|
66
|
-
# Is global allow enabled?
|
67
|
-
def globalallow?
|
68
|
-
@globalallow
|
69
|
-
end
|
70
|
-
|
71
|
-
# does this auth store has any rules?
|
72
|
-
def empty?
|
73
|
-
@globalallow.nil? && @declarations.size == 0
|
74
|
-
end
|
75
|
-
|
76
|
-
def initialize
|
77
|
-
@globalallow = nil
|
78
|
-
@declarations = []
|
79
|
-
end
|
80
|
-
|
81
|
-
def to_s
|
82
|
-
"authstore"
|
83
|
-
end
|
84
|
-
|
85
|
-
def interpolate(match)
|
86
|
-
@modified_declarations = @declarations.collect { |ace| ace.interpolate(match) }.sort
|
87
|
-
end
|
88
|
-
|
89
|
-
def reset_interpolation
|
90
|
-
@modified_declarations = nil
|
91
|
-
end
|
92
|
-
|
93
|
-
private
|
94
|
-
|
95
|
-
# Returns our ACEs list, but if we have a modification of it, let's return
|
96
|
-
# it. This is used if we want to override the this purely immutable list
|
97
|
-
# by a modified version.
|
98
|
-
def declarations
|
99
|
-
@modified_declarations || @declarations
|
100
|
-
end
|
101
|
-
|
102
|
-
# Store the results of a pattern into our hash. Basically just
|
103
|
-
# converts the pattern and sticks it into the hash.
|
104
|
-
def store(type, pattern)
|
105
|
-
@declarations << Declaration.new(type, pattern)
|
106
|
-
@declarations.sort!
|
107
|
-
|
108
|
-
nil
|
109
|
-
end
|
110
|
-
|
111
|
-
# A single declaration. Stores the info for a given declaration,
|
112
|
-
# provides the methods for determining whether a declaration matches,
|
113
|
-
# and handles sorting the declarations appropriately.
|
114
|
-
class Declaration
|
115
|
-
include Puppet::Util
|
116
|
-
include Comparable
|
117
|
-
|
118
|
-
# The type of declaration: either :allow or :deny
|
119
|
-
attr_reader :type
|
120
|
-
VALID_TYPES = [ :allow, :deny, :allow_ip, :deny_ip ]
|
121
|
-
|
122
|
-
attr_accessor :name
|
123
|
-
|
124
|
-
# The pattern we're matching against. Can be an IPAddr instance,
|
125
|
-
# or an array of strings, resulting from reversing a hostname
|
126
|
-
# or domain name.
|
127
|
-
attr_reader :pattern
|
128
|
-
|
129
|
-
# The length. Only used for iprange and domain.
|
130
|
-
attr_accessor :length
|
131
|
-
|
132
|
-
# Sort the declarations most specific first.
|
133
|
-
def <=>(other)
|
134
|
-
compare(exact?, other.exact?) ||
|
135
|
-
compare(ip?, other.ip?) ||
|
136
|
-
((length != other.length) && (other.length <=> length)) ||
|
137
|
-
compare(deny?, other.deny?) ||
|
138
|
-
( ip? ? pattern.to_s <=> other.pattern.to_s : pattern <=> other.pattern)
|
139
|
-
end
|
140
|
-
|
141
|
-
def deny?
|
142
|
-
type == :deny
|
143
|
-
end
|
144
|
-
|
145
|
-
def exact?
|
146
|
-
@exact == :exact
|
147
|
-
end
|
148
|
-
|
149
|
-
def initialize(type, pattern)
|
150
|
-
self.type = type
|
151
|
-
self.pattern = pattern
|
152
|
-
end
|
153
|
-
|
154
|
-
# Are we an IP type?
|
155
|
-
def ip?
|
156
|
-
name == :ip
|
157
|
-
end
|
158
|
-
|
159
|
-
# Does this declaration match the name/ip combo?
|
160
|
-
def match?(name, ip)
|
161
|
-
if ip?
|
162
|
-
pattern.include?(IPAddr.new(ip))
|
163
|
-
else
|
164
|
-
matchname?(name)
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
# Set the pattern appropriately. Also sets the name and length.
|
169
|
-
def pattern=(pattern)
|
170
|
-
if [:allow_ip, :deny_ip].include?(self.type)
|
171
|
-
parse_ip(pattern)
|
172
|
-
else
|
173
|
-
parse(pattern)
|
174
|
-
end
|
175
|
-
@orig = pattern
|
176
|
-
end
|
177
|
-
|
178
|
-
# Mapping a type of statement into a return value.
|
179
|
-
def result
|
180
|
-
[:allow, :allow_ip].include?(type)
|
181
|
-
end
|
182
|
-
|
183
|
-
def to_s
|
184
|
-
"#{type}: #{pattern}"
|
185
|
-
end
|
186
|
-
|
187
|
-
# Set the declaration type. Either :allow or :deny.
|
188
|
-
def type=(type)
|
189
|
-
type = type.intern
|
190
|
-
raise ArgumentError, _("Invalid declaration type %{type}") % { type: type } unless VALID_TYPES.include?(type)
|
191
|
-
@type = type
|
192
|
-
end
|
193
|
-
|
194
|
-
# interpolate a pattern to replace any
|
195
|
-
# backreferences by the given match
|
196
|
-
# for instance if our pattern is $1.reductivelabs.com
|
197
|
-
# and we're called with a MatchData whose capture 1 is puppet
|
198
|
-
# we'll return a pattern of puppet.reductivelabs.com
|
199
|
-
def interpolate(match)
|
200
|
-
clone = dup
|
201
|
-
if @name == :dynamic
|
202
|
-
clone.pattern = clone.pattern.reverse.collect do |p|
|
203
|
-
p.gsub(/\$(\d)/) { |m| match[$1.to_i] }
|
204
|
-
end.join(".")
|
205
|
-
end
|
206
|
-
clone
|
207
|
-
end
|
208
|
-
|
209
|
-
private
|
210
|
-
|
211
|
-
# Returns nil if both values are true or both are false, returns
|
212
|
-
# -1 if the first is true, and 1 if the second is true. Used
|
213
|
-
# in the <=> operator.
|
214
|
-
def compare(me, them)
|
215
|
-
(me and them) ? nil : me ? -1 : them ? 1 : nil
|
216
|
-
end
|
217
|
-
|
218
|
-
# Does the name match our pattern?
|
219
|
-
def matchname?(name)
|
220
|
-
case @name
|
221
|
-
when :domain, :dynamic, :opaque
|
222
|
-
name = munge_name(name)
|
223
|
-
(pattern == name) or (not exact? and pattern.zip(name).all? { |p,n| p == n })
|
224
|
-
when :regex
|
225
|
-
Regexp.new(pattern.slice(1..-2)).match(name)
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
# Convert the name to a common pattern.
|
230
|
-
def munge_name(name)
|
231
|
-
# Change to name.downcase.split(".",-1).reverse for FQDN support
|
232
|
-
name.downcase.split(".").reverse
|
233
|
-
end
|
234
|
-
|
235
|
-
# Parse our input pattern and figure out what kind of allowable
|
236
|
-
# statement it is. The output of this is used for later matching.
|
237
|
-
Octet = '(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])'
|
238
|
-
IPv4 = "#{Octet}\.#{Octet}\.#{Octet}\.#{Octet}"
|
239
|
-
IPv6_full = "_:_:_:_:_:_:_:_|_:_:_:_:_:_::_?|_:_:_:_:_::((_:)?_)?|_:_:_:_::((_:){0,2}_)?|_:_:_::((_:){0,3}_)?|_:_::((_:){0,4}_)?|_::((_:){0,5}_)?|::((_:){0,6}_)?"
|
240
|
-
IPv6_partial = "_:_:_:_:_:_:|_:_:_:_::(_:)?|_:_::(_:){0,2}|_::(_:){0,3}"
|
241
|
-
# It should be:
|
242
|
-
# IP = "#{IPv4}|#{IPv6_full}|(#{IPv6_partial}#{IPv4})".gsub(/_/,'([0-9a-fA-F]{1,4})').gsub(/\(/,'(?:')
|
243
|
-
# but ruby's ipaddr lib doesn't support the hybrid format
|
244
|
-
IP = "#{IPv4}|#{IPv6_full}".gsub(/_/,'([0-9a-fA-F]{1,4})').gsub(/\(/,'(?:')
|
245
|
-
|
246
|
-
def parse_ip(value)
|
247
|
-
@name = :ip
|
248
|
-
@exact, @length, @pattern = *case value
|
249
|
-
when /^(?:#{IP})\/(\d+)$/ # 12.34.56.78/24, a001:b002::efff/120, c444:1000:2000::9:192.168.0.1/112
|
250
|
-
[:inexact, $1.to_i, IPAddr.new(value)]
|
251
|
-
when /^(#{IP})$/ # 10.20.30.40,
|
252
|
-
[:exact, nil, IPAddr.new(value)]
|
253
|
-
when /^(#{Octet}\.){1,3}\*$/ # an ip address with a '*' at the end
|
254
|
-
segments = value.split(".")[0..-2]
|
255
|
-
bits = 8*segments.length
|
256
|
-
[:inexact, bits, IPAddr.new((segments+[0,0,0])[0,4].join(".") + "/#{bits}")]
|
257
|
-
else
|
258
|
-
raise AuthStoreError, _("Invalid IP pattern %{value}") % { value: value }
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
def parse(value)
|
263
|
-
@name,@exact,@length,@pattern = *case value
|
264
|
-
when /^(\w[-\w]*\.)+[-\w]+$/ # a full hostname
|
265
|
-
# Change to /^(\w[-\w]*\.)+[-\w]+\.?$/ for FQDN support
|
266
|
-
[:domain,:exact,nil,munge_name(value)]
|
267
|
-
when /^\*(\.(\w[-\w]*)){1,}$/ # *.domain.com
|
268
|
-
host_sans_star = munge_name(value)[0..-2]
|
269
|
-
[:domain,:inexact,host_sans_star.length,host_sans_star]
|
270
|
-
when /\$\d+/ # a backreference pattern ala $1.reductivelabs.com or 192.168.0.$1 or $1.$2
|
271
|
-
[:dynamic,:exact,nil,munge_name(value)]
|
272
|
-
when /^\w[-.@\w]*$/ # ? Just like a host name but allow '@'s and ending '.'s
|
273
|
-
[:opaque,:exact,nil,[value]]
|
274
|
-
when /^\/.*\/$/ # a regular expression
|
275
|
-
[:regex,:inexact,nil,value]
|
276
|
-
else
|
277
|
-
raise AuthStoreError, "Invalid pattern #{value}"
|
278
|
-
end
|
279
|
-
end
|
280
|
-
end
|
281
|
-
end
|
282
|
-
end
|
283
|
-
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'puppet/network/authorization'
|
2
|
-
|
3
|
-
class Puppet::Network::HTTP::API::Master::V3::Authorization
|
4
|
-
include Puppet::Network::Authorization
|
5
|
-
|
6
|
-
def wrap(&block)
|
7
|
-
lambda do |request, response|
|
8
|
-
begin
|
9
|
-
authconfig.check_authorization(:find, request.path, request.params)
|
10
|
-
rescue Puppet::Network::AuthorizationError => e
|
11
|
-
raise Puppet::Network::HTTP::Error::HTTPNotAuthorizedError.new(e.message, Puppet::Network::HTTP::Issues::FAILED_AUTHORIZATION)
|
12
|
-
end
|
13
|
-
|
14
|
-
block.call.call(request, response)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
@@ -1,88 +0,0 @@
|
|
1
|
-
require 'puppet/util/json'
|
2
|
-
require 'puppet/parser/environment_compiler'
|
3
|
-
|
4
|
-
# @deprecated application orchestration will be removed in puppet 7
|
5
|
-
class Puppet::Network::HTTP::API::Master::V3::Environment
|
6
|
-
def call(request, response)
|
7
|
-
Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
|
8
|
-
|
9
|
-
env_name = request.routing_path.split('/').last
|
10
|
-
env = Puppet.lookup(:environments).get(env_name)
|
11
|
-
code_id = request.params[:code_id]
|
12
|
-
|
13
|
-
if env.nil?
|
14
|
-
raise Puppet::Network::HTTP::Error::HTTPNotFoundError.new(_("%{env_name} is not a known environment") % { env_name: env_name }, Puppet::Network::HTTP::Issues::RESOURCE_NOT_FOUND)
|
15
|
-
end
|
16
|
-
|
17
|
-
catalog = Puppet::Parser::EnvironmentCompiler.compile(env, code_id).to_resource
|
18
|
-
|
19
|
-
env_graph = build_environment_graph(catalog)
|
20
|
-
|
21
|
-
response.respond_with(200, "application/json", Puppet::Util::Json.dump(env_graph))
|
22
|
-
end
|
23
|
-
|
24
|
-
def build_environment_graph(catalog)
|
25
|
-
# This reads catalog and code_id off the catalog rather than using the one
|
26
|
-
# from the request. There shouldn't really be a case where the two differ,
|
27
|
-
# but if they do, the one from the catalog itself is authoritative.
|
28
|
-
env_graph = {:environment => catalog.environment, :applications => {}, :code_id => catalog.code_id}
|
29
|
-
applications = catalog.resources.select do |res|
|
30
|
-
type = res.resource_type
|
31
|
-
type.is_a?(Puppet::Resource::Type) && type.application?
|
32
|
-
end
|
33
|
-
applications.each do |app|
|
34
|
-
file, line = app.file, app.line
|
35
|
-
nodes = app['nodes']
|
36
|
-
|
37
|
-
required_components = catalog.direct_dependents_of(app).map {|comp| comp.ref}
|
38
|
-
mapped_components = nodes.values.flatten.map {|comp| comp.ref}
|
39
|
-
|
40
|
-
nonexistent_components = mapped_components - required_components
|
41
|
-
if nonexistent_components.any?
|
42
|
-
raise Puppet::ParseError.new(
|
43
|
-
_("Application %{application} assigns nodes to non-existent components: %{component_list}") %
|
44
|
-
{ application: app, component_list: nonexistent_components.join(', ') }, file, line)
|
45
|
-
end
|
46
|
-
|
47
|
-
missing_components = required_components - mapped_components
|
48
|
-
if missing_components.any?
|
49
|
-
raise Puppet::ParseError.new(_("Application %{application} has components without assigned nodes: %{component_list}") %
|
50
|
-
{ application: app, component_list: missing_components.join(', ') }, file, line)
|
51
|
-
end
|
52
|
-
|
53
|
-
# Turn the 'nodes' hash into a map component ref => node name
|
54
|
-
node_mapping = {}
|
55
|
-
nodes.each do |node, comps|
|
56
|
-
comps = [comps] unless comps.is_a?(Array)
|
57
|
-
comps.each do |comp|
|
58
|
-
raise Puppet::ParseError.new(_("Application %{app} assigns multiple nodes to component %{comp}") % { app: app, comp: comp }, file, line) if node_mapping.include?(comp.ref)
|
59
|
-
node_mapping[comp.ref] = node.title
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
app_components = {}
|
64
|
-
catalog.direct_dependents_of(app).each do |comp|
|
65
|
-
app_components[comp.ref] = {
|
66
|
-
:produces => comp.export.map(&:ref),
|
67
|
-
:consumes => prerequisites(comp).map(&:ref),
|
68
|
-
:node => node_mapping[comp.ref]
|
69
|
-
}
|
70
|
-
end
|
71
|
-
env_graph[:applications][app.ref] = app_components
|
72
|
-
end
|
73
|
-
|
74
|
-
env_graph
|
75
|
-
end
|
76
|
-
|
77
|
-
private
|
78
|
-
|
79
|
-
# Finds all the prerequisites of component +comp+. They are all the
|
80
|
-
# capability resources that +comp+ depends on; this includes resources
|
81
|
-
# that +comp+ consumes but also resources it merely requires
|
82
|
-
def prerequisites(comp)
|
83
|
-
params = Puppet::Type.relationship_params.select { |p| p.direction == :in }.map(&:name)
|
84
|
-
params.map { |rel| comp[rel] }.flatten.compact.select do |rel|
|
85
|
-
rel.resource_type && rel.resource_type.is_capability?
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# Base pool for HTTP connections.
|
2
|
-
#
|
3
|
-
# @api private
|
4
|
-
class Puppet::Network::HTTP::BasePool
|
5
|
-
def start(site, verifier, http)
|
6
|
-
Puppet.debug("Starting connection for #{site}")
|
7
|
-
if site.use_ssl?
|
8
|
-
verifier.setup_connection(http)
|
9
|
-
begin
|
10
|
-
http.start
|
11
|
-
print_ssl_info(http) if Puppet::Util::Log.sendlevel?(:debug)
|
12
|
-
rescue OpenSSL::SSL::SSLError => error
|
13
|
-
verifier.handle_connection_error(http, error)
|
14
|
-
end
|
15
|
-
else
|
16
|
-
http.start
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def print_ssl_info(http)
|
23
|
-
buffered_io = http.instance_variable_get(:@socket)
|
24
|
-
return unless buffered_io
|
25
|
-
|
26
|
-
socket = buffered_io.io
|
27
|
-
return unless socket
|
28
|
-
|
29
|
-
cipher = if Puppet::Util::Platform.jruby?
|
30
|
-
socket.cipher
|
31
|
-
else
|
32
|
-
socket.cipher.first
|
33
|
-
end
|
34
|
-
Puppet.debug("Using #{socket.ssl_version} with cipher #{cipher}")
|
35
|
-
end
|
36
|
-
end
|
@@ -1,127 +0,0 @@
|
|
1
|
-
require 'puppet/network/http'
|
2
|
-
|
3
|
-
module Puppet::Network::HTTP::Compression
|
4
|
-
# from https://github.com/ruby/ruby/blob/v2_1_3/lib/net/http/generic_request.rb#L40
|
5
|
-
ACCEPT_ENCODING = "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
|
6
|
-
|
7
|
-
# this module function allows to use the right underlying
|
8
|
-
# methods depending on zlib presence
|
9
|
-
def module
|
10
|
-
return(Puppet.features.zlib? ? Active : None)
|
11
|
-
end
|
12
|
-
module_function :module
|
13
|
-
|
14
|
-
module Active
|
15
|
-
require 'zlib'
|
16
|
-
require 'stringio'
|
17
|
-
|
18
|
-
# return an uncompressed body if the response has been
|
19
|
-
# compressed
|
20
|
-
def uncompress_body(response)
|
21
|
-
case response['content-encoding']
|
22
|
-
when 'gzip'
|
23
|
-
Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress_body is deprecated.'))
|
24
|
-
# ZLib::GzipReader has an associated encoding, by default Encoding.default_external
|
25
|
-
return Zlib::GzipReader.new(StringIO.new(response.body), :encoding => Encoding::BINARY).read
|
26
|
-
when 'deflate'
|
27
|
-
Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress_body is deprecated.'))
|
28
|
-
return Zlib::Inflate.new.inflate(response.body)
|
29
|
-
when nil, 'identity'
|
30
|
-
return response.body
|
31
|
-
else
|
32
|
-
raise Net::HTTPError.new(_("Unknown content encoding - %{encoding}") % { encoding: response['content-encoding'] }, response)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def uncompress(response)
|
37
|
-
Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress is deprecated.'))
|
38
|
-
raise Net::HTTPError.new("No block passed", response) unless block_given?
|
39
|
-
|
40
|
-
case response['content-encoding']
|
41
|
-
when 'gzip','deflate'
|
42
|
-
uncompressor = ZlibAdapter.new
|
43
|
-
when nil, 'identity'
|
44
|
-
uncompressor = IdentityAdapter.new
|
45
|
-
else
|
46
|
-
raise Net::HTTPError.new(_("Unknown content encoding - %{encoding}") % { encoding: response['content-encoding'] }, response)
|
47
|
-
end
|
48
|
-
|
49
|
-
begin
|
50
|
-
yield uncompressor
|
51
|
-
ensure
|
52
|
-
uncompressor.close
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def add_accept_encoding(headers={})
|
57
|
-
headers['accept-encoding'] = Puppet::Network::HTTP::Compression::ACCEPT_ENCODING
|
58
|
-
headers
|
59
|
-
end
|
60
|
-
|
61
|
-
# This adapters knows how to uncompress both 'zlib' stream (the deflate algorithm from Content-Encoding)
|
62
|
-
# and GZip streams.
|
63
|
-
class ZlibAdapter
|
64
|
-
def initialize(uncompressor = Zlib::Inflate.new(15 + 32))
|
65
|
-
# Create an inflater that knows to parse GZip streams and zlib streams.
|
66
|
-
# This uses a property of the C Zlib library, documented as follow:
|
67
|
-
# windowBits can also be greater than 15 for optional gzip decoding. Add
|
68
|
-
# 32 to windowBits to enable zlib and gzip decoding with automatic header
|
69
|
-
# detection, or add 16 to decode only the gzip format (the zlib format will
|
70
|
-
# return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is
|
71
|
-
# a crc32 instead of an adler32.
|
72
|
-
@uncompressor = uncompressor
|
73
|
-
@first = true
|
74
|
-
end
|
75
|
-
|
76
|
-
def uncompress(chunk)
|
77
|
-
Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::ZlibAdapter#uncompress is deprecated.'))
|
78
|
-
out = @uncompressor.inflate(chunk)
|
79
|
-
@first = false
|
80
|
-
return out
|
81
|
-
rescue Zlib::DataError
|
82
|
-
# it can happen that we receive a raw deflate stream
|
83
|
-
# which might make our inflate throw a data error.
|
84
|
-
# in this case, we try with a verbatim (no header)
|
85
|
-
# deflater.
|
86
|
-
@uncompressor = Zlib::Inflate.new
|
87
|
-
if @first then
|
88
|
-
@first = false
|
89
|
-
retry
|
90
|
-
end
|
91
|
-
raise
|
92
|
-
end
|
93
|
-
|
94
|
-
def close
|
95
|
-
@uncompressor.finish
|
96
|
-
ensure
|
97
|
-
@uncompressor.close
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
module None
|
103
|
-
def uncompress_body(response)
|
104
|
-
Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::None#uncompress_body is deprecated.'))
|
105
|
-
response.body
|
106
|
-
end
|
107
|
-
|
108
|
-
def add_accept_encoding(headers)
|
109
|
-
headers
|
110
|
-
end
|
111
|
-
|
112
|
-
def uncompress(response)
|
113
|
-
Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::None#uncompress is deprecated.'))
|
114
|
-
yield IdentityAdapter.new
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
class IdentityAdapter
|
119
|
-
def uncompress(chunk)
|
120
|
-
Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::IdentityAdapter#uncompress is deprecated.'))
|
121
|
-
chunk
|
122
|
-
end
|
123
|
-
|
124
|
-
def close
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|