diff --git a/.rubocop.yml b/.rubocop.yml index e1836452b..bdef02a60 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -6,6 +6,7 @@ inherit_from: .rubocop_todo.yml AllCops: TargetRubyVersion: 2.7 + NewCops: enable Bundler/OrderedGems: Enabled: false diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index dacf86b16..7a2e63593 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,19 +1,19 @@ # This configuration was generated by # `rubocop --auto-gen-config --no-offense-counts --no-auto-gen-timestamp` -# using RuboCop version 1.56.0 +# using RuboCop version 1.56.3. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: with_first_argument, with_fixed_indentation Layout/ArgumentAlignment: Exclude: - 'modules/realm_freeipa/realm_freeipa_plugin.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, IndentOneStep, IndentationWidth. # SupportedStyles: case, end Layout/CaseIndentation: @@ -26,8 +26,8 @@ Layout/CaseIndentation: - 'modules/dns_common/dns_common.rb' - 'test/puppet/puppet_api_test.rb' -# This cop supports safe auto-correction (--auto-correct). -# Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, AllowAdjacentOneLineDefs, NumberOfEmptyLines. +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, DefLikeMacros, AllowAdjacentOneLineDefs, NumberOfEmptyLines. Layout/EmptyLineBetweenDefs: Exclude: - 'lib/proxy/pluggable.rb' @@ -37,7 +37,7 @@ Layout/EmptyLineBetweenDefs: - 'test/plugins/plugin_group_test.rb' - 'test/plugins/plugin_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowAliasSyntax, AllowedMethods. # AllowedMethods: alias_method, public, protected, private Layout/EmptyLinesAroundAttributeAccessor: @@ -51,7 +51,7 @@ Layout/EmptyLinesAroundAttributeAccessor: - 'test/plugins/plugin_group_test.rb' - 'test/puppet/puppet_api_environments_retriever_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: symmetrical, new_line, same_line Layout/MultilineHashBraceLayout: @@ -59,13 +59,13 @@ Layout/MultilineHashBraceLayout: - 'modules/bmc/bmc_api.rb' - 'test/puppet/puppet_api_v3_environment_classes_retriever_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: symmetrical, new_line, same_line Layout/MultilineMethodCallBraceLayout: Enabled: false -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: aligned, indented Layout/MultilineOperationIndentation: @@ -73,31 +73,32 @@ Layout/MultilineOperationIndentation: - 'modules/dhcp_native_ms/dhcp_native_ms_main.rb' - 'modules/dns/dns_api.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Layout/SpaceAroundMethodCallOperator: Exclude: - 'extra/dhcpd_config_check.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces. # SupportedStyles: space, no_space, compact # SupportedStylesForEmptyBraces: space, no_space Layout/SpaceInsideHashLiteralBraces: Enabled: false -# Configuration parameters: IgnoredMethods. +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowedMethods, AllowedPatterns. Lint/AmbiguousBlockAssociation: Exclude: - 'modules/puppetca_token_whitelisting/puppetca_token_whitelisting_token_storage.rb' - 'test/plugins/plugin_initializer_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Lint/AmbiguousOperator: Exclude: - 'config.ru' - 'test/dns_common/record_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Lint/DeprecatedClassMethods: Exclude: - 'extra/puppet_sign.rb' @@ -106,6 +107,14 @@ Lint/DuplicateMethods: Exclude: - 'modules/dhcp_common/isc/configuration_parser.rb' +# Configuration parameters: AllowComments. +Lint/EmptyClass: + Exclude: + - 'test/plugins/module_loader_test.rb' + - 'test/plugins/plugin_test.rb' + - 'test/puppetca/puppetca_api_test.rb' + +# Configuration parameters: AllowedParentClasses. Lint/MissingSuper: Exclude: - 'extra/migrate_settings.rb' @@ -120,7 +129,7 @@ Lint/MixedRegexpCaptureTypes: Exclude: - 'modules/dns_dnscmd/dns_dnscmd_main.rb' -# This cop supports unsafe auto-correction (--auto-correct-all). +# This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedImplicitNamespaces. # AllowedImplicitNamespaces: Gem Lint/RaiseException: @@ -130,25 +139,24 @@ Lint/RaiseException: - 'modules/realm_freeipa/ipa_config_parser.rb' - 'modules/realm_freeipa/provider.rb' -# This cop supports unsafe auto-correction (--auto-correct-all). +# This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedMethods. # AllowedMethods: instance_of?, kind_of?, is_a?, eql?, respond_to?, equal? Lint/RedundantSafeNavigation: Exclude: - 'lib/proxy/log_buffer/decorator.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Lint/ScriptPermission: Exclude: - 'extra/puppet_sign.rb' -# This cop supports unsafe auto-correction (--auto-correct-all). +# This cop supports unsafe autocorrection (--autocorrect-all). Lint/UselessMethodDefinition: Exclude: - - 'modules/dns_dnscmd/dns_dnscmd_main.rb' - 'test/puppet/puppet_api_test.rb' -# This cop supports unsafe auto-correction (--auto-correct-all). +# This cop supports unsafe autocorrection (--autocorrect-all). Lint/UselessTimes: Exclude: - 'test/dhcp_isc/trigger_event_overflow.rb' @@ -159,7 +167,7 @@ Naming/ConstantName: - 'test/dhcp/conf_parser_test.rb' # Configuration parameters: ForbiddenDelimiters. -# ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$)) +# ForbiddenDelimiters: (?i-mx:(^|\s)(EO[A-Z]{1}|END)(\s|$)) Naming/HeredocDelimiterNaming: Exclude: - 'smart_proxy.gemspec' @@ -167,6 +175,7 @@ Naming/HeredocDelimiterNaming: - 'test/puppet/puppet_api_v3_environment_classes_retriever_test.rb' - 'test/realm/ipa_config_parser_test.rb' +# This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyleForLeadingUnderscores. # SupportedStylesForLeadingUnderscores: disallowed, required, optional Naming/MemoizedInstanceVariableName: @@ -174,14 +183,14 @@ Naming/MemoizedInstanceVariableName: - 'modules/dhcp_native_ms/dhcp_native_ms_main.rb' - 'modules/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner.rb' -# Configuration parameters: EnforcedStyle, AllowedPatterns, IgnoredPatterns. +# Configuration parameters: EnforcedStyle, AllowedPatterns. # SupportedStyles: snake_case, camelCase Naming/MethodName: Exclude: - 'modules/dhcp_common/isc/omapi_provider.rb' # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames. -# AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to +# AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to Naming/MethodParameterName: Exclude: - 'modules/dhcp_common/isc/configuration_parser.rb' @@ -198,19 +207,18 @@ Naming/PredicateName: - 'spec/**/*' - 'modules/puppet_proxy_common/puppet_class.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: PreferredName. Naming/RescuedExceptionsVariableName: Exclude: - 'lib/proxy/log.rb' - 'modules/dhcp_common/pingable.rb' -# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers. +# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns. # SupportedStyles: snake_case, normalcase, non_integer -# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339 +# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64 Naming/VariableNumber: Exclude: - - 'lib/proxy/settings/global.rb' - 'test/dhcp/dhcp_api_test.rb' - 'test/dhcp_ms_native/server_ms_test.rb' - 'test/global_settings_test.rb' @@ -222,7 +230,7 @@ Naming/VariableNumber: - 'test/templates/templates_unattended_api_test.rb' - 'test/util_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports unsafe autocorrection (--autocorrect-all). Security/JSONLoad: Exclude: - 'modules/puppet_proxy_common/api_request.rb' @@ -236,13 +244,7 @@ Security/Open: Exclude: - 'modules/puppetca_hostname_whitelisting/puppetca_hostname_whitelisting_autosigner.rb' -# This cop supports safe auto-correction (--auto-correct). -Security/YAMLLoad: - Exclude: - - 'extra/migrate_settings.rb' - - 'lib/proxy/settings.rb' - -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: separated, grouped Style/AccessorGrouping: @@ -250,23 +252,15 @@ Style/AccessorGrouping: - 'extra/migrate_settings.rb' - 'modules/puppet_proxy_common/puppet_class.rb' -# This cop supports unsafe auto-correction (--auto-correct-all). -Style/CaseLikeIf: - Exclude: - - 'modules/dhcp_isc/configuration_loader.rb' - - 'modules/dns_common/dns_common.rb' - - 'modules/realm_freeipa/ipa_config_parser.rb' - - 'modules/templates/proxy_request.rb' - -# This cop supports safe auto-correction (--auto-correct). +# This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: nested, compact Style/ClassAndModuleChildren: Enabled: false -# This cop supports safe auto-correction (--auto-correct). -# Configuration parameters: IgnoredMethods. -# IgnoredMethods: ==, equal?, eql? +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowedMethods, AllowedPatterns. +# AllowedMethods: ==, equal?, eql? Style/ClassEqualityComparison: Exclude: - 'test/dhcp/conf_parser_test.rb' @@ -279,7 +273,7 @@ Style/ClassVars: - 'lib/proxy/log_buffer/decorator.rb' - 'lib/proxy/log_buffer/trace_decorator.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: Keywords, RequireColon. # Keywords: TODO, FIXME, OPTIMIZE, HACK, REVIEW, NOTE Style/CommentAnnotation: @@ -288,19 +282,19 @@ Style/CommentAnnotation: - 'modules/dhcp_common/record.rb' - 'test/bmc/bmc_api_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: allowed_in_returns, forbidden Style/DoubleNegation: Exclude: - 'modules/puppet_proxy_puppet_api/v3_environment_classes_api_classes_retriever.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/EvalWithLocation: Exclude: - 'test/util_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/ExplicitBlockArgument: Exclude: - 'lib/proxy/log_buffer/buffer.rb' @@ -309,7 +303,7 @@ Style/ExplicitBlockArgument: - 'modules/dhcp_common/subnet_service.rb' - 'modules/puppetca_token_whitelisting/puppetca_token_whitelisting_token_storage.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: format, sprintf, percent Style/FormatString: @@ -324,7 +318,8 @@ Style/FormatString: - 'modules/templates/proxy_request.rb' - 'test/dhcp_isc/trigger_event_overflow.rb' -# Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, IgnoredMethods. +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns. # SupportedStyles: annotated, template, unannotated Style/FormatStringToken: Exclude: @@ -335,11 +330,12 @@ Style/FormatStringToken: - 'modules/templates/proxy_request.rb' - 'test/http_download_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports unsafe autocorrection (--autocorrect-all). Style/GlobalStdStream: Exclude: - 'extra/puppet_sign.rb' +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals. Style/GuardClause: Exclude: @@ -349,8 +345,9 @@ Style/GuardClause: - 'modules/realm_freeipa/provider.rb' - 'test/test_helper.rb' -# This cop supports unsafe auto-correction (--auto-correct-all). +# This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedReceivers. +# AllowedReceivers: Thread.current Style/HashEachMethods: Exclude: - 'extra/migrations/20150611000000_migrate_dns_settings.rb' @@ -359,15 +356,14 @@ Style/HashEachMethods: - 'extra/migrations/20161209000000_migrate_realm_settings.rb' - 'extra/migrations/20170523000000_migrate_autosign_setting.rb' -# This cop supports unsafe auto-correction (--auto-correct-all). +# This cop supports unsafe autocorrection (--autocorrect-all). Style/HashTransformKeys: Exclude: - 'modules/registration/proxy_request.rb' - 'modules/templates/proxy_request.rb' - - 'test/test_helper.rb' -# This cop supports safe auto-correction (--auto-correct). -# Configuration parameters: IgnoredMethods. +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowedMethods, AllowedPatterns. Style/MethodCallWithoutArgsParentheses: Enabled: false @@ -382,7 +378,7 @@ Style/MixinUsage: - 'extra/register_service.rb' - 'test/test_helper.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: literals, strict Style/MutableConstant: @@ -402,14 +398,14 @@ Style/MutableConstant: - 'test/dhcp_isc/trigger_event_overflow.rb' - 'test/puppet/puppet_api_v3_environment_classes_retriever_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, MinBodyLength. # SupportedStyles: skip_modifier_ifs, always Style/Next: Exclude: - 'extra/migrations/20150611000000_migrate_dns_settings.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedOctalStyle. # SupportedOctalStyles: zero_with_o, zero_only Style/NumericLiteralPrefix: @@ -417,6 +413,20 @@ Style/NumericLiteralPrefix: - 'lib/proxy/file_lock.rb' - 'modules/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner.rb' +Style/OpenStructUse: + Exclude: + - 'lib/proxy/pluggable.rb' + - 'lib/proxy/settings/global.rb' + - 'lib/proxy/settings/plugin.rb' + - 'test/dhcp_libvirt/libvirt_dhcp_network_test.rb' + - 'test/dns_libvirt/libvirt_dns_network_test.rb' + - 'test/plugins/plugin_group_test.rb' + +# This cop supports safe autocorrection (--autocorrect). +Style/OperatorMethodCall: + Exclude: + - 'modules/dhcp_common/isc/configuration_parser.rb' + # Configuration parameters: AllowedMethods. # AllowedMethods: respond_to_missing? Style/OptionalBooleanParameter: @@ -431,7 +441,7 @@ Style/OptionalBooleanParameter: - 'modules/bmc/ssh.rb' - 'modules/dhcp_common/isc/omapi_provider.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: PreferredDelimiters. Style/PercentLiteralDelimiters: Exclude: @@ -442,12 +452,12 @@ Style/PercentLiteralDelimiters: - 'test/dhcp/isc_omapi_provider_test.rb' - 'test/tftp/tftp_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/PerlBackrefs: Exclude: - 'lib/proxy/helpers.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, AllowedCompactTypes. # SupportedStyles: compact, exploded Style/RaiseArgs: @@ -468,40 +478,39 @@ Style/RaiseArgs: - 'modules/realm_freeipa/provider.rb' - 'test/puppet/puppet_api_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/RandomWithOffset: Exclude: - 'test/test_helper.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/RedundantAssignment: Exclude: - 'lib/proxy/request.rb' - 'test/puppet/puppet_api_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/RedundantBegin: Exclude: - 'test/dhcp_isc/trigger_event_overflow.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/RedundantFileExtensionInRequire: Exclude: - 'modules/registration/registration.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/RedundantPercentQ: Exclude: - 'test/dhcp/isc_omapi_provider_test.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/RedundantRegexpEscape: Exclude: - 'lib/proxy/pluggable.rb' - - 'modules/dhcp_common/isc/configuration_parser.rb' - 'modules/dhcp_common/isc/omapi_provider.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, AllowInnerSlashes. # SupportedStyles: slashes, percent_r, mixed Style/RegexpLiteral: @@ -511,7 +520,7 @@ Style/RegexpLiteral: - 'modules/dhcp_common/isc/configuration_parser.rb' - 'modules/tftp/server.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). Style/RescueModifier: Exclude: - 'extra/register_service.rb' @@ -520,13 +529,13 @@ Style/RescueModifier: - 'modules/dhcp_native_ms/dhcp_native_ms_main.rb' - 'modules/logs/logs_api.rb' -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: implicit, explicit Style/RescueStandardError: Enabled: false -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle. # SupportedStyles: only_raise, only_fail, semantic Style/SignalException: @@ -534,12 +543,12 @@ Style/SignalException: - 'test/log_buffer/buffer_test.rb' - 'test/log_buffer/ring_buffer_test.rb' -# This cop supports unsafe auto-correction (--auto-correct-all). +# This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Mode. Style/StringConcatenation: Enabled: false -# This cop supports safe auto-correction (--auto-correct). +# This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowNamedUnderscoreVariables. Style/TrailingUnderscoreVariable: Exclude: diff --git a/Rakefile b/Rakefile index 2f85cff2a..549e3409f 100644 --- a/Rakefile +++ b/Rakefile @@ -46,9 +46,9 @@ task :migrate_settings do FileUtils.touch(migrations_state_file_path) Dir.mktmpdir do |working_dir| - ::Proxy::Migrator.new( + Proxy::Migrator.new( working_dir, migrations_dir_path, config_src_path, modules_config_src_path, - ::Proxy::Migrations.new(migrations_state_file_path).load_past_migrations!).migrate + Proxy::Migrations.new(migrations_state_file_path).load_past_migrations!).migrate FileUtils.mv(File.join(app_dir, "config"), File.join(app_dir, "config_#{Time.now.strftime('%Y%m%d%H%M%S')}")) FileUtils.mv(File.join(working_dir, "result"), File.join(app_dir, "config")) diff --git a/config.ru b/config.ru index 691ab4671..22b286839 100644 --- a/config.ru +++ b/config.ru @@ -1,5 +1,5 @@ $LOAD_PATH.unshift *Dir[File.expand_path('lib', __dir__), File.expand_path('modules', __dir__)] require 'smart_proxy_main' -::Proxy::PluginInitializer.new(::Proxy::Plugins.instance).initialize_plugins -::Proxy::Plugins.instance.select { |p| p[:state] == :running && p[:https_enabled] }.each { |p| instance_eval(p[:class].https_rackup) } +Proxy::PluginInitializer.new(Proxy::Plugins.instance).initialize_plugins +Proxy::Plugins.instance.select { |p| p[:state] == :running && p[:https_enabled] }.each { |p| instance_eval(p[:class].https_rackup) } diff --git a/extra/changelog b/extra/changelog index 469a2c997..992169df9 100755 --- a/extra/changelog +++ b/extra/changelog @@ -10,7 +10,7 @@ contributors_file = "Contributors" cmd.each_line do |l| date, author, subject = l.chomp.split('___') - date, _, _ = date.split(" ") + date, _, _ = date.split id = "#{date}\t#{author}" unless list[id] diff --git a/extra/dhcpd_config_check.rb b/extra/dhcpd_config_check.rb index 0ecb9b9c7..12dec53db 100644 --- a/extra/dhcpd_config_check.rb +++ b/extra/dhcpd_config_check.rb @@ -33,7 +33,7 @@ def parse_cli_options(args) if $PROGRAM_NAME == __FILE__ begin options = parse_cli_options(ARGV) - parser = ::Proxy::DHCP::CommonISC::ConfigurationParser.new + parser = Proxy::DHCP::CommonISC::ConfigurationParser.new subnets, hosts, _, ignored = parser.subnets_hosts_and_leases(File.read(options[:cfg_path]), options[:cfg_path]) puts "Subnets: %s" % [subnets.map { |s| "#{s.subnet_address}/#{s.subnet_mask}" }.join(', ')] puts "Hosts and leases: %s" % [hosts.map { |h| h.respond_to?(:ip_address) ? "Lease: #{h.ip_address}" : "Host: #{h.name}" }.join(', ')] diff --git a/extra/migrate_settings.rb b/extra/migrate_settings.rb index fba654a55..6f08bd5cf 100644 --- a/extra/migrate_settings.rb +++ b/extra/migrate_settings.rb @@ -91,7 +91,7 @@ def create_migration_dirs end def underscore(src) - src = src.gsub(/::/, '/') + src = src.gsub("::", '/') src = src.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') src = src.gsub(/([a-z\d])([A-Z])/, '\1_\2') src = src.tr("-", "_") @@ -244,7 +244,7 @@ def parse_cli_options(args) end def load_main_config_file(main_config_file_path) - YAML.load(File.read(main_config_file_path)) || {} + YAML.load_file(main_config_file_path) || {} end def module_configuration_dir(main_config_file) @@ -260,8 +260,8 @@ def module_configuration_dir(main_config_file) migrations_dir_path = options[:migrations_dir] migrations_state_file_path = options[:migrations_state] - ::Proxy::Migrator.new( + Proxy::Migrator.new( working_dir_path, migrations_dir_path, config_src_path, modules_config_src_path, - ::Proxy::Migrations.new(migrations_state_file_path).load_past_migrations!).migrate + Proxy::Migrations.new(migrations_state_file_path).load_past_migrations!).migrate exit(0) end diff --git a/extra/migrations/20150327000000_migrate_monolithic_config.rb b/extra/migrations/20150327000000_migrate_monolithic_config.rb index 0049a3f3f..77ad3119b 100644 --- a/extra/migrations/20150327000000_migrate_monolithic_config.rb +++ b/extra/migrations/20150327000000_migrate_monolithic_config.rb @@ -7,7 +7,7 @@ require 'fileutils' require 'yaml' -class MigrateMonolithicConfig < ::Proxy::Migration +class MigrateMonolithicConfig < Proxy::Migration def migrate # Skip the migration if we are dealing with modularized proxy if File.directory?(File.join(src_dir, "settings.d")) diff --git a/extra/migrations/20150611000000_migrate_dns_settings.rb b/extra/migrations/20150611000000_migrate_dns_settings.rb index 16ee5104d..e53fa90a0 100644 --- a/extra/migrations/20150611000000_migrate_dns_settings.rb +++ b/extra/migrations/20150611000000_migrate_dns_settings.rb @@ -1,6 +1,6 @@ require 'yaml' -class MigrateDnsSettings < ::Proxy::Migration +class MigrateDnsSettings < Proxy::Migration def migrate dns_config = path(src_dir, "settings.d", "dns.yml") unless File.exist?(dns_config) diff --git a/extra/migrations/20150826000000_migrate_dhcp_settings.rb b/extra/migrations/20150826000000_migrate_dhcp_settings.rb index f8b2020bb..a384f1e4d 100644 --- a/extra/migrations/20150826000000_migrate_dhcp_settings.rb +++ b/extra/migrations/20150826000000_migrate_dhcp_settings.rb @@ -1,6 +1,6 @@ require 'yaml' -class MigrateDhcpSettings < ::Proxy::Migration +class MigrateDhcpSettings < Proxy::Migration KNOWN_PARAMETERS = { :enabled => [:dhcp, :enabled], :dhcp_vendor => [:dhcp, :use_provider, :old_provider_name_to_new], diff --git a/extra/migrations/20160411000000_migrate_libvirt_settings.rb b/extra/migrations/20160411000000_migrate_libvirt_settings.rb index b9248e0c3..92214a636 100644 --- a/extra/migrations/20160411000000_migrate_libvirt_settings.rb +++ b/extra/migrations/20160411000000_migrate_libvirt_settings.rb @@ -1,7 +1,7 @@ require 'fileutils' require 'yaml' -class MigrateVirshToLibvirtConfig < ::Proxy::Migration +class MigrateVirshToLibvirtConfig < Proxy::Migration def migrate input_yaml = YAML.load_file(path(src_dir, "settings.yml")) copy_original_configuration_except("settings.yml", @@ -46,8 +46,6 @@ def transform_dhcp_libvirt_yaml(yaml) end def write_yaml(filepath, yaml) - File.open(filepath, 'w') do |f| - f.write(yaml.to_yaml) - end + File.write(filepath, yaml.to_yaml) end end diff --git a/extra/migrations/20160413000000_migrate_puppet_settings.rb b/extra/migrations/20160413000000_migrate_puppet_settings.rb index dd9c767bf..d38a3e445 100644 --- a/extra/migrations/20160413000000_migrate_puppet_settings.rb +++ b/extra/migrations/20160413000000_migrate_puppet_settings.rb @@ -1,6 +1,6 @@ require 'yaml' -class MigratePuppetSettings < ::Proxy::Migration +class MigratePuppetSettings < Proxy::Migration KNOWN_PARAMETERS = { :enabled => [:puppet, :enabled], :puppet_provider => [:puppet, :use_provider], diff --git a/extra/migrations/20161209000000_migrate_realm_settings.rb b/extra/migrations/20161209000000_migrate_realm_settings.rb index 8a1ba62af..38c633b53 100644 --- a/extra/migrations/20161209000000_migrate_realm_settings.rb +++ b/extra/migrations/20161209000000_migrate_realm_settings.rb @@ -1,6 +1,6 @@ require 'yaml' -class MigrateRealmSettings < ::Proxy::Migration +class MigrateRealmSettings < Proxy::Migration KNOWN_PARAMETERS = { :enabled => [:realm, :enabled], :realm_provider => [:realm, :use_provider], diff --git a/extra/migrations/20170523000000_migrate_autosign_setting.rb b/extra/migrations/20170523000000_migrate_autosign_setting.rb index b09ca4e3b..274fd2e15 100644 --- a/extra/migrations/20170523000000_migrate_autosign_setting.rb +++ b/extra/migrations/20170523000000_migrate_autosign_setting.rb @@ -1,6 +1,6 @@ require 'yaml' -class MigrateAutosignSetting < ::Proxy::Migration +class MigrateAutosignSetting < Proxy::Migration def migrate puppetca_config = path(src_dir, "settings.d", "puppetca.yml") unless File.exist?(puppetca_config) @@ -40,9 +40,7 @@ def migrate_autosign_configuration(to_migrate) def write_to_files(output) output.keys.each do |m| next if output[m].empty? || m == :unknown - File.open(path(dst_dir, "settings.d", "#{m}.yml"), 'w') do |f| - f.write(strip_ruby_symbol_encoding(output[m].to_yaml)) - end + File.write(path(dst_dir, "settings.d", "#{m}.yml"), strip_ruby_symbol_encoding(output[m].to_yaml)) end end end diff --git a/extra/migrations/2018062000000_migrate_puppetca_settings.rb b/extra/migrations/2018062000000_migrate_puppetca_settings.rb index 324bef13e..536c82adf 100644 --- a/extra/migrations/2018062000000_migrate_puppetca_settings.rb +++ b/extra/migrations/2018062000000_migrate_puppetca_settings.rb @@ -1,6 +1,6 @@ require 'yaml' -class MigratePuppetCaSettings < ::Proxy::Migration +class MigratePuppetCaSettings < Proxy::Migration def migrate copy_original_configuration_except(path('settings.d', 'puppetca.yml'), path('settings.d', 'puppetca_hostname_whitelisting.yml.example')) @@ -30,8 +30,6 @@ def transform_provider_yaml(module_settings, provider_settings) end def write_yaml(filepath, yaml) - File.open(filepath, 'w') do |f| - f.write(yaml.to_yaml) - end + File.write(filepath, yaml.to_yaml) end end diff --git a/extra/migrations/20181016000000_migrate_puppetca_puppet_cert_settings.rb b/extra/migrations/20181016000000_migrate_puppetca_puppet_cert_settings.rb index 7516259c5..99efb860f 100644 --- a/extra/migrations/20181016000000_migrate_puppetca_puppet_cert_settings.rb +++ b/extra/migrations/20181016000000_migrate_puppetca_puppet_cert_settings.rb @@ -1,6 +1,6 @@ require 'yaml' -class MigratePuppetCaSettings < ::Proxy::Migration +class MigratePuppetCaSettings < Proxy::Migration def migrate copy_original_configuration_except(path('settings.d', 'puppetca.yml'), path('settings.d', 'puppetca_puppet_cert.yml.example')) @@ -33,9 +33,7 @@ def transform_provider_yaml(module_settings, provider_settings) end def write_yaml(filepath, yaml) - File.open(filepath, 'w') do |f| - f.write(yaml.to_yaml) - end + File.write(filepath, yaml.to_yaml) end def settings_moved_to_provider diff --git a/extra/register_service.rb b/extra/register_service.rb index 05c4e99b3..430eab412 100755 --- a/extra/register_service.rb +++ b/extra/register_service.rb @@ -17,7 +17,7 @@ cmd = "#{ruby} -C #{working_dir} \"#{executable}\"" puts "Installing #{cmd} as a service" -default_user = ENV["USERNAME"] +default_user = ENV.fetch("USERNAME", nil) default_user = ENV["USERDOMAIN"] + '\\' + default_user if ENV["USERDOMAIN"] default_service_name = 'smart proxy' diff --git a/lib/proxy/helpers.rb b/lib/proxy/helpers.rb index 92a95ab98..f708f1732 100644 --- a/lib/proxy/helpers.rb +++ b/lib/proxy/helpers.rb @@ -13,7 +13,7 @@ def log_halt(code = nil, exception_or_msg = nil, custom_msg = nil) message = "#{custom_msg}: #{message}" if custom_msg exception = exception_or_msg.is_a?(Exception) ? exception_or_msg : Exception.new(exception_or_msg) # just in case exception is passed in the 3rd parameter let's not loose the valuable info - exception = custom_msg.is_a?(Exception) ? custom_msg : exception + exception = custom_msg if custom_msg.is_a?(Exception) begin if block_given? return yield diff --git a/lib/proxy/log.rb b/lib/proxy/log.rb index 0e2744f42..226378051 100644 --- a/lib/proxy/log.rb +++ b/lib/proxy/log.rb @@ -87,9 +87,7 @@ def call(env) logger.trace do if env['rack.input'] && !(body = env['rack.input'].read).empty? env['rack.input'].rewind - if env['CONTENT_TYPE'] == 'application/json' && body.size < @max_body_size - "Body: #{body}" - elsif env['CONTENT_TYPE'] == 'text/plain' && body.size < @max_body_size + if ['application/json', 'text/plain'].include?(env['CONTENT_TYPE']) && body.size < @max_body_size "Body: #{body}" else "Body: [filtered out]" diff --git a/lib/proxy/plugins.rb b/lib/proxy/plugins.rb index 7fc7dfc39..f44cdf8a3 100644 --- a/lib/proxy/plugins.rb +++ b/lib/proxy/plugins.rb @@ -1,8 +1,8 @@ -class ::Proxy::PluginNotFound < ::StandardError; end -class ::Proxy::PluginVersionMismatch < ::StandardError; end -class ::Proxy::PluginMisconfigured < ::StandardError; end -class ::Proxy::PluginProviderNotFound < ::StandardError; end -class ::Proxy::PluginLoadingAborted < ::StandardError; end +class ::Proxy::PluginNotFound < StandardError; end +class ::Proxy::PluginVersionMismatch < StandardError; end +class ::Proxy::PluginMisconfigured < StandardError; end +class ::Proxy::PluginProviderNotFound < StandardError; end +class ::Proxy::PluginLoadingAborted < StandardError; end class ::Proxy::Plugins include ::Proxy::Log diff --git a/lib/proxy/settings.rb b/lib/proxy/settings.rb index 1e601a50a..18450c106 100644 --- a/lib/proxy/settings.rb +++ b/lib/proxy/settings.rb @@ -8,13 +8,13 @@ module Proxy::Settings SETTINGS_PATH = Pathname.new(__dir__).join("..", "..", "config", "settings.yml") def self.initialize_global_settings(settings_path = nil, argv = ARGV) - ::Proxy::Settings::Global.new(YAML.load(File.read(settings_path || SETTINGS_PATH))) + ::Proxy::Settings::Global.new(YAML.load_file(settings_path || SETTINGS_PATH)) end def self.load_plugin_settings(defaults, settings_file, settings_directory = nil) settings = {} begin - settings = YAML.load(File.read(File.join(settings_directory || ::Proxy::SETTINGS.settings_directory, settings_file))) || {} + settings = YAML.load_file(File.join(settings_directory || ::Proxy::SETTINGS.settings_directory, settings_file)) || {} rescue Errno::ENOENT logger.warn("Couldn't find settings file #{settings_directory || ::Proxy::SETTINGS.settings_directory}/#{settings_file}. Using default settings.") end @@ -22,6 +22,6 @@ def self.load_plugin_settings(defaults, settings_file, settings_directory = nil) end def self.read_settings_file(settings_file, settings_directory = nil) - YAML.load(File.read(File.join(settings_directory || ::Proxy::SETTINGS.settings_directory, settings_file))) || {} + YAML.load_file(File.join(settings_directory || ::Proxy::SETTINGS.settings_directory, settings_file)) || {} end end diff --git a/lib/proxy/settings/global.rb b/lib/proxy/settings/global.rb index ccefcca4f..b9287e296 100644 --- a/lib/proxy/settings/global.rb +++ b/lib/proxy/settings/global.rb @@ -36,9 +36,9 @@ def initialize(settings) @used_defaults = DEFAULT_SETTINGS.keys - settings.keys default_and_user_settings = DEFAULT_SETTINGS.merge(settings) - settings_to_use = Hash[ default_and_user_settings.map do |key, value| + settings_to_use = default_and_user_settings.to_h do |key, value| [key, normalize_setting(key, value, HOW_TO_NORMALIZE)] - end ] + end super(settings_to_use) end diff --git a/lib/smart_proxy_for_testing.rb b/lib/smart_proxy_for_testing.rb index c617beea3..3ecd27639 100644 --- a/lib/smart_proxy_for_testing.rb +++ b/lib/smart_proxy_for_testing.rb @@ -25,11 +25,11 @@ require 'sinatra/base' require 'sinatra/authorization' -Proxy::SETTINGS = ::Proxy::Settings::Global.new(:log_file => './logs/test.log', :log_level => 'DEBUG') +Proxy::SETTINGS = Proxy::Settings::Global.new(:log_file => './logs/test.log', :log_level => 'DEBUG') Proxy::VERSION = File.read(File.join(__dir__, '..', 'VERSION')).chomp -::Sinatra::Base.set :run, false -::Sinatra::Base.register ::Sinatra::Authorization +Sinatra::Base.set :run, false +Sinatra::Base.register Sinatra::Authorization module ::Proxy::Pluggable def load_test_settings(a_hash = {}) diff --git a/modules/bmc/bmc_api.rb b/modules/bmc/bmc_api.rb index cbcc48d79..112099e01 100644 --- a/modules/bmc/bmc_api.rb +++ b/modules/bmc/bmc_api.rb @@ -376,11 +376,11 @@ def find_ipmi_provider(provider_type) else logger.warn "Invalid BMC type: #{provider_type}, must be one of #{Proxy::BMC::IPMI.providers.join(',')}" end - if !Proxy::BMC::IPMI.providers_installed.empty? + if Proxy::BMC::IPMI.providers_installed.empty? + log_halt 400, "No BMC providers are installed, please install at least freeipmi or ipmitool" + else provider_type = Proxy::BMC::IPMI.providers_installed.first logger.warn "Using #{provider_type} as the default BMC provider" - else - log_halt 400, "No BMC providers are installed, please install at least freeipmi or ipmitool" end end provider_type diff --git a/modules/dhcp/dhcp_api.rb b/modules/dhcp/dhcp_api.rb index c53eb1f31..915b4fe79 100644 --- a/modules/dhcp/dhcp_api.rb +++ b/modules/dhcp/dhcp_api.rb @@ -1,6 +1,6 @@ require "proxy/validations" -class Proxy::DhcpApi < ::Sinatra::Base +class Proxy::DhcpApi < Sinatra::Base extend Proxy::DHCP::DependencyInjection include Proxy::Validations diff --git a/modules/dhcp/dhcp_plugin.rb b/modules/dhcp/dhcp_plugin.rb index 0df30fe9a..6632a849b 100644 --- a/modules/dhcp/dhcp_plugin.rb +++ b/modules/dhcp/dhcp_plugin.rb @@ -1,4 +1,4 @@ -class Proxy::DhcpPlugin < ::Proxy::Plugin +class Proxy::DhcpPlugin < Proxy::Plugin rackup_path File.expand_path("http_config.ru", __dir__) uses_provider diff --git a/modules/dhcp_common/dhcp_common.rb b/modules/dhcp_common/dhcp_common.rb index 07eee9986..81abbc7f8 100644 --- a/modules/dhcp_common/dhcp_common.rb +++ b/modules/dhcp_common/dhcp_common.rb @@ -35,7 +35,7 @@ def self.ipv4_to_i(ipv4_address) def self.i_to_ipv4(ipv4_as_i) octets = [3, 2, 1, 0].each_with_object([]) do |i, all| - all.push((ipv4_as_i >> i * 8) & 0xff) + all.push((ipv4_as_i >> (i * 8)) & 0xff) end octets.join(".") end diff --git a/modules/dhcp_common/isc/omapi_provider.rb b/modules/dhcp_common/isc/omapi_provider.rb index eea8c3a63..651dd61c2 100644 --- a/modules/dhcp_common/isc/omapi_provider.rb +++ b/modules/dhcp_common/isc/omapi_provider.rb @@ -98,9 +98,9 @@ def report(msg, response = "") logger.debug(format_omshell_output(response)) if response.nil? || (!response.empty? && !response.grep(/can't|no more|not connected|Syntax error/).empty?) logger.error "Omshell failed: " + (response.nil? ? "Problem launching omshell" : format_omshell_output(response)) - msg.sub!(/Removed/, "remove") - msg.sub!(/Added/, "add") - msg.sub!(/Enumerated/, "enumerate") + msg.sub!("Removed", "remove") + msg.sub!("Added", "add") + msg.sub!("Enumerated", "enumerate") msg = "Failed to #{msg}" msg += ": Entry already exists" if response && !response.grep(/object: already exists/).empty? msg += ": No response from DHCP server" if response.nil? || !response.grep(/(not connected|no more)/).empty? diff --git a/modules/dhcp_common/record/lease.rb b/modules/dhcp_common/record/lease.rb index 6e22e5cf3..16780f68f 100644 --- a/modules/dhcp_common/record/lease.rb +++ b/modules/dhcp_common/record/lease.rb @@ -22,7 +22,7 @@ def ==(other) end def to_json(*opts) - Hash[[:name, :ip, :mac, :subnet, :starts, :ends, :state, :type].map { |s| [s, send(s)] }].merge(options).to_json(*opts) + [:name, :ip, :mac, :subnet, :starts, :ends, :state, :type].to_h { |s| [s, send(s)] }.merge(options).to_json(*opts) end end end diff --git a/modules/dhcp_common/record/reservation.rb b/modules/dhcp_common/record/reservation.rb index 8572c1a33..237750f91 100644 --- a/modules/dhcp_common/record/reservation.rb +++ b/modules/dhcp_common/record/reservation.rb @@ -23,7 +23,7 @@ def ==(other) end def to_json(*opts) - Hash[[:name, :ip, :mac, :subnet, :type].map { |s| [s, send(s)] }].merge(options).to_json(*opts) + [:name, :ip, :mac, :subnet, :type].to_h { |s| [s, send(s)] }.merge(options).to_json(*opts) end end end diff --git a/modules/dhcp_common/subnet.rb b/modules/dhcp_common/subnet.rb index bc609c8f1..f7df2328f 100644 --- a/modules/dhcp_common/subnet.rb +++ b/modules/dhcp_common/subnet.rb @@ -78,7 +78,7 @@ def subnet_range_addresses(from_address = nil, to_address = nil) mask_as_i = ::Proxy::DHCP.ipv4_to_i(netmask) subnet_start_address = (network_address_as_i & mask_as_i) + 1 - subnet_end_address = network_address_as_i | (0xffffffff ^ mask_as_i) - 1 + subnet_end_address = network_address_as_i | ((0xffffffff ^ mask_as_i) - 1) from_address_as_i = from_address.nil? ? 0 : ::Proxy::DHCP.ipv4_to_i(from_address) to_address_as_i = to_address.nil? ? 0xffffffff : ::Proxy::DHCP.ipv4_to_i(to_address) diff --git a/modules/dns/dns_api.rb b/modules/dns/dns_api.rb index c873ef056..89b30ce22 100644 --- a/modules/dns/dns_api.rb +++ b/modules/dns/dns_api.rb @@ -76,7 +76,7 @@ class Api < ::Sinatra::Base end def validate_srv_value!(value) - parts = value.split(' ') + parts = value.split priority, weight, port, target = parts validate_dns_name!(target, 'SRV') unless parts.size == 4 && diff --git a/modules/dns_dnscmd/dns_dnscmd_main.rb b/modules/dns_dnscmd/dns_dnscmd_main.rb index c5b852afa..fc6725f4e 100644 --- a/modules/dns_dnscmd/dns_dnscmd_main.rb +++ b/modules/dns_dnscmd/dns_dnscmd_main.rb @@ -6,10 +6,6 @@ class Record < ::Proxy::Dns::Record include Proxy::Log include Proxy::Util - def initialize(a_server, a_ttl) - super(a_server, a_ttl) - end - def do_create(name, value, type) zone = match_zone(name, enum_zones) msg = "Added #{type} entry #{name} => #{value}" @@ -63,8 +59,8 @@ def report(msg, response, error_only) if response.grep(/completed successfully/).empty? logger.error "Command dnscmd failed:\n" + response.join("\n") - msg.sub!(/Removed/, "remove") - msg.sub!(/Added/, "add") + msg.sub!("Removed", "remove") + msg.sub!("Added", "add") msg = "Failed to #{msg}" raise Proxy::Dns::Error.new(msg) unless response.grep(/DNS_ERROR_NAME_DOES_NOT_EXIST/).any? && msg == "Failed to EnumRecords" else @@ -101,7 +97,7 @@ def enum_zones response = execute '/EnumZones', msg: 'EnumZones', error_only: true response.each do |line| next unless line =~ / Primary / - zones << line.sub(/^ +/, '').sub(/ +.*$/, '').chomp("\n") + zones << line.sub(/^ +/, '').sub(/ +.*$/, '').chomp end logger.debug "Enumerated authoritative dns zones: #{zones}" zones diff --git a/modules/facts/facts_plugin.rb b/modules/facts/facts_plugin.rb index 7c798718a..112518578 100644 --- a/modules/facts/facts_plugin.rb +++ b/modules/facts/facts_plugin.rb @@ -1,4 +1,4 @@ -class Proxy::FactsPlugin < ::Proxy::Plugin +class Proxy::FactsPlugin < Proxy::Plugin rackup_path File.expand_path("http_config.ru", __dir__) default_settings :enabled => false diff --git a/modules/logs/logs_plugin.rb b/modules/logs/logs_plugin.rb index 31a3ea12c..7c2a50df9 100644 --- a/modules/logs/logs_plugin.rb +++ b/modules/logs/logs_plugin.rb @@ -1,4 +1,4 @@ -class ::Proxy::LogsPlugin < ::Proxy::Plugin +class ::Proxy::LogsPlugin < Proxy::Plugin rackup_path File.expand_path("http_config.ru", __dir__) plugin :logs, ::Proxy::VERSION diff --git a/modules/puppet_proxy/puppet_api.rb b/modules/puppet_proxy/puppet_api.rb index 77cc927ac..ba1c2464b 100644 --- a/modules/puppet_proxy/puppet_api.rb +++ b/modules/puppet_proxy/puppet_api.rb @@ -1,4 +1,4 @@ -class Proxy::Puppet::Api < ::Sinatra::Base +class Proxy::Puppet::Api < Sinatra::Base extend Proxy::Puppet::DependencyInjection helpers ::Proxy::Helpers diff --git a/modules/puppetca_hostname_whitelisting/puppetca_hostname_whitelisting_autosigner.rb b/modules/puppetca_hostname_whitelisting/puppetca_hostname_whitelisting_autosigner.rb index e769f8351..75c733cef 100644 --- a/modules/puppetca_hostname_whitelisting/puppetca_hostname_whitelisting_autosigner.rb +++ b/modules/puppetca_hostname_whitelisting/puppetca_hostname_whitelisting_autosigner.rb @@ -13,11 +13,11 @@ def disable(certname) found = false entries = File.readlines(autosign_file).collect do |l| - if l.chomp != certname - l - else + if l.chomp == certname found = true nil + else + l end end.uniq.compact if found @@ -47,9 +47,7 @@ def autosign(certname, ttl) # list of hosts which are now allowed to be installed via autosign def autosign_list return [] unless File.exist?(autosign_file) - File.read(autosign_file).split("\n").reject do |v| - v =~ /^\s*#.*|^$/ ## Remove comments and empty lines - end.map(&:chomp) + File.read(autosign_file).split("\n").grep_v(/^\s*#.*|^$/).map(&:chomp) end end end diff --git a/modules/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner.rb b/modules/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner.rb index d7dfc6c59..0c36f226d 100644 --- a/modules/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner.rb +++ b/modules/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner.rb @@ -54,7 +54,7 @@ def disable(certname) # Create a new token for a certname def autosign(certname, ttl) ttl = (ttl.to_i > 0) ? ttl.to_i : token_ttl - payload = { certname: certname, exp: Time.now.to_i + ttl * 60 } + payload = { certname: certname, exp: Time.now.to_i + (ttl * 60) } token = JWT.encode payload, smartproxy_cert, JWT_ALGORITHM storage.add token { generated_token: token }.to_json diff --git a/modules/registration/proxy_request.rb b/modules/registration/proxy_request.rb index 6ad9e99ee..e1ead7a02 100644 --- a/modules/registration/proxy_request.rb +++ b/modules/registration/proxy_request.rb @@ -46,7 +46,7 @@ def register_url(request) end def headers(request) - Hash[request.env.select { |k, v| k =~ /^HTTP_/ && k !~ /^HTTP_(VERSION|HOST)$/ }.map { |k, v| [k[5..], v] }] + request.env.select { |k, v| k =~ /^HTTP_/ && k !~ /^HTTP_(VERSION|HOST)$/ }.to_h { |k, v| [k[5..], v] } rescue Exception => e logger.warn "Unable to extract request headers: #{e}" {} diff --git a/modules/registration/registration_api.rb b/modules/registration/registration_api.rb index c4ad22273..cba03fb96 100644 --- a/modules/registration/registration_api.rb +++ b/modules/registration/registration_api.rb @@ -1,6 +1,6 @@ require 'registration/proxy_request' -class Proxy::Registration::Api < ::Sinatra::Base +class Proxy::Registration::Api < Sinatra::Base get '/' do response = Proxy::Registration::ProxyRequest.new.global_register(request) handle_response(response) diff --git a/modules/root/root_api.rb b/modules/root/root_api.rb index e45c3aa44..af2ebb9a6 100644 --- a/modules/root/root_api.rb +++ b/modules/root/root_api.rb @@ -13,7 +13,7 @@ class Proxy::RootApi < Sinatra::Base get "/version" do content_type :json enabled_plugins = ::Proxy::Plugins.instance.select { |p| p[:state] == :running && p[:class].ancestors.include?(::Proxy::Plugin) } - modules = Hash[enabled_plugins.map { |plugin| [plugin[:name].to_s, plugin[:version].to_s] }].reject { |key| key == 'foreman_proxy' } + modules = enabled_plugins.to_h { |plugin| [plugin[:name].to_s, plugin[:version].to_s] }.reject { |key| key == 'foreman_proxy' } {:version => Proxy::VERSION, :modules => modules}.to_json rescue => e log_halt 400, e diff --git a/modules/root/root_module_loader.rb b/modules/root/root_module_loader.rb index ba9fd2b8d..a31964ff8 100644 --- a/modules/root/root_module_loader.rb +++ b/modules/root/root_module_loader.rb @@ -1,4 +1,4 @@ -class ::Proxy::RootPluginLoader < ::Proxy::DefaultModuleLoader +class ::Proxy::RootPluginLoader < Proxy::DefaultModuleLoader # this is a special case: 'root' module doesn't have configuration file def load_configuration_file(settings_file) {} diff --git a/modules/root/root_plugin.rb b/modules/root/root_plugin.rb index d2c7b43e6..995ddfdba 100644 --- a/modules/root/root_plugin.rb +++ b/modules/root/root_plugin.rb @@ -1,4 +1,4 @@ -class ::Proxy::RootPlugin < ::Proxy::Plugin +class ::Proxy::RootPlugin < Proxy::Plugin plugin :foreman_proxy, ::Proxy::VERSION default_settings :enabled => true diff --git a/modules/root/root_v2_api.rb b/modules/root/root_v2_api.rb index 505d96292..6a363e98f 100644 --- a/modules/root/root_v2_api.rb +++ b/modules/root/root_v2_api.rb @@ -14,7 +14,7 @@ class Proxy::RootV2Api < Sinatra::Base attributes = [:http_enabled, :https_enabled, :settings, :state] plugins = enabled_plugins.each_with_object({}) do |plugin, hash| - result = Hash[attributes.map { |attribute| [attribute, plugin[attribute]] }] + result = attributes.to_h { |attribute| [attribute, plugin[attribute]] } result[:capabilities] = process_capabilities(plugin[:state], plugin[:capabilities]) hash[plugin[:name]] = result end diff --git a/modules/templates/proxy_request.rb b/modules/templates/proxy_request.rb index bbb6d4ad9..5a914800b 100644 --- a/modules/templates/proxy_request.rb +++ b/modules/templates/proxy_request.rb @@ -17,7 +17,7 @@ def post(path, env, params, body) end def extract_request_headers(env) - Hash[env.select { |k, v| k =~ /^HTTP_/ && k !~ /^HTTP_(VERSION|HOST)$/ }.map { |k, v| [k[5..], v] }] + env.select { |k, v| k =~ /^HTTP_/ && k !~ /^HTTP_(VERSION|HOST)$/ }.to_h { |k, v| [k[5..], v] } rescue Exception => e logger.warn "Unable to extract request headers: #{e}" {} diff --git a/modules/tftp/server.rb b/modules/tftp/server.rb index 98218d8bd..9508634c6 100644 --- a/modules/tftp/server.rb +++ b/modules/tftp/server.rb @@ -51,7 +51,7 @@ def read_file(file) def write_file(file, contents) FileUtils.mkdir_p(File.dirname(file)) - File.open(file, 'w') { |f| f.write(contents) } + File.write(file, contents) logger.debug "TFTP: #{file} created successfully" end diff --git a/smart_proxy.gemspec b/smart_proxy.gemspec index cb5cb1283..545bc87bd 100644 --- a/smart_proxy.gemspec +++ b/smart_proxy.gemspec @@ -9,7 +9,6 @@ Gem::Specification.new do |s| s.files = (Dir.glob("{bin,public,config,views,lib,modules}/**/*") + ["VERSION"]) s.executables << 'smart-proxy' s.require_paths = ["lib", "modules"] - s.test_files = Dir.glob("{test}/**/*test.rb") s.license = 'GPL-3.0' s.extra_rdoc_files = ["README.md"] s.required_ruby_version = '>= 2.7' @@ -23,4 +22,6 @@ Gem::Specification.new do |s| Foreman Proxy is used via The Foreman Project, it allows Foreman to manage Remote DHCP, DNS, TFTP and Puppet servers via a REST API EOF + # The gem isn't really published, so this doesn't matter + s.metadata['rubygems_mfa_required'] = 'true' end diff --git a/test/dhcp_isc/dhcp_isc_config_test.rb b/test/dhcp_isc/dhcp_isc_config_test.rb index 732a9e8d8..5769f9a58 100644 --- a/test/dhcp_isc/dhcp_isc_config_test.rb +++ b/test/dhcp_isc/dhcp_isc_config_test.rb @@ -1,7 +1,7 @@ require 'test_helper' require 'dhcp_isc/dhcp_isc' -class DhcpIscConfigTest < ::Test::Unit::TestCase +class DhcpIscConfigTest < Test::Unit::TestCase def test_default_configuration Proxy::DHCP::ISC::Plugin.load_test_settings() assert_equal '7911', Proxy::DHCP::ISC::Plugin.settings.omapi_port diff --git a/test/dhcp_libvirt/dhcp_libvirt_provider_test.rb b/test/dhcp_libvirt/dhcp_libvirt_provider_test.rb index 6f52ac978..3b6191efd 100644 --- a/test/dhcp_libvirt/dhcp_libvirt_provider_test.rb +++ b/test/dhcp_libvirt/dhcp_libvirt_provider_test.rb @@ -15,12 +15,12 @@ def setup end def test_should_add_record - record_hash = { :name => "test.example.com", :ip => "192.168.122.95", :mac => "00:11:bb:cc:dd:ee", :network => "192.168.122.0/255.255.255.0", :subnet => @subnet } + record_hash = { "name" => "test.example.com", "ip" => "192.168.122.95", "mac" => "00:11:bb:cc:dd:ee", "network" => "192.168.122.0/255.255.255.0", "subnet" => @subnet } record = Proxy::DHCP::Reservation.new("test.example.com", "192.168.122.95", "00:11:bb:cc:dd:ee", @subnet) @service.add_subnet(@subnet) @subject.libvirt_network.expects(:add_dhcp_record).with(record) ::Proxy::DHCP::Server.any_instance.expects(:add_record).returns(record) - @subject.add_record(hash_symbols_to_strings(record_hash)) + @subject.add_record(record_hash) end def test_should_remove_record diff --git a/test/migrations/1_test_migration_one.rb b/test/migrations/1_test_migration_one.rb index cfa3cd411..33f9ce705 100644 --- a/test/migrations/1_test_migration_one.rb +++ b/test/migrations/1_test_migration_one.rb @@ -1,4 +1,4 @@ -class TestMigrationOne < ::Proxy::Migration +class TestMigrationOne < Proxy::Migration def migrate end end diff --git a/test/migrations/2_test_migration_two.rb b/test/migrations/2_test_migration_two.rb index 5873e6485..2254ecfac 100644 --- a/test/migrations/2_test_migration_two.rb +++ b/test/migrations/2_test_migration_two.rb @@ -1,4 +1,4 @@ -class TestMigrationTwo < ::Proxy::Migration +class TestMigrationTwo < Proxy::Migration def migrate end end diff --git a/test/migrations/3_test_migration_three.rb b/test/migrations/3_test_migration_three.rb index 1afe8f36f..17c07bea2 100644 --- a/test/migrations/3_test_migration_three.rb +++ b/test/migrations/3_test_migration_three.rb @@ -1,4 +1,4 @@ -class TestMigrationThree < ::Proxy::Migration +class TestMigrationThree < Proxy::Migration def migrate end end diff --git a/test/migrations/autosign_migration_test.rb b/test/migrations/autosign_migration_test.rb index c840e18ff..1d069f659 100644 --- a/test/migrations/autosign_migration_test.rb +++ b/test/migrations/autosign_migration_test.rb @@ -1,7 +1,7 @@ require 'test_helper' require File.join(__dir__, '../../extra/migrate_settings') -::Proxy::Migration.inject_migrations_instance(::Proxy::Migrations.new("dummy")) +Proxy::Migration.inject_migrations_instance(Proxy::Migrations.new("dummy")) require File.join(__dir__, '../../extra/migrations/20170523000000_migrate_autosign_setting.rb') class ProxyAutosignMigrationTest < Test::Unit::TestCase diff --git a/test/migrations/dhcp_migration_test.rb b/test/migrations/dhcp_migration_test.rb index 0bc0ae55b..2abea70e6 100644 --- a/test/migrations/dhcp_migration_test.rb +++ b/test/migrations/dhcp_migration_test.rb @@ -1,7 +1,7 @@ require 'test_helper' require File.join(__dir__, '../../extra/migrate_settings') -::Proxy::Migration.inject_migrations_instance(::Proxy::Migrations.new("dummy")) +Proxy::Migration.inject_migrations_instance(Proxy::Migrations.new("dummy")) require File.join(__dir__, '../../extra/migrations/20150826000000_migrate_dhcp_settings') class ProxyDhcpMigrationTest < Test::Unit::TestCase diff --git a/test/migrations/dns_migration_test.rb b/test/migrations/dns_migration_test.rb index caec199d5..a758547ab 100644 --- a/test/migrations/dns_migration_test.rb +++ b/test/migrations/dns_migration_test.rb @@ -1,6 +1,6 @@ require 'test_helper' require File.join(__dir__, '../../extra/migrate_settings') -::Proxy::Migration.inject_migrations_instance(::Proxy::Migrations.new("dummy")) +Proxy::Migration.inject_migrations_instance(Proxy::Migrations.new("dummy")) require File.join(__dir__, '../../extra/migrations/20150611000000_migrate_dns_settings') class ProxyDnsMigrationTest < Test::Unit::TestCase diff --git a/test/migrations/libvirt_migration_test.rb b/test/migrations/libvirt_migration_test.rb index 2c387759c..ef9549c4d 100644 --- a/test/migrations/libvirt_migration_test.rb +++ b/test/migrations/libvirt_migration_test.rb @@ -1,6 +1,6 @@ require 'test_helper' require File.join(__dir__, '../../extra/migrate_settings') -::Proxy::Migration.inject_migrations_instance(::Proxy::Migrations.new("dummy")) +Proxy::Migration.inject_migrations_instance(Proxy::Migrations.new("dummy")) require File.join(__dir__, '../../extra/migrations/20160411000000_migrate_libvirt_settings') class ProxyLibvirtMigrationTest < Test::Unit::TestCase diff --git a/test/migrations/monolithic_config_file_migration_test.rb b/test/migrations/monolithic_config_file_migration_test.rb index c125e9df1..9eab0a741 100644 --- a/test/migrations/monolithic_config_file_migration_test.rb +++ b/test/migrations/monolithic_config_file_migration_test.rb @@ -1,6 +1,6 @@ require 'test_helper' require File.join(__dir__, '../../extra/migrate_settings') -::Proxy::Migration.inject_migrations_instance(::Proxy::Migrations.new("dummy")) +Proxy::Migration.inject_migrations_instance(Proxy::Migrations.new("dummy")) require File.join(__dir__, '../../extra/migrations/20150327000000_migrate_monolithic_config') class MonolithicConfigMigrationTest < Test::Unit::TestCase diff --git a/test/migrations/puppet_migration_test.rb b/test/migrations/puppet_migration_test.rb index bb6f9be8d..18e1baa65 100644 --- a/test/migrations/puppet_migration_test.rb +++ b/test/migrations/puppet_migration_test.rb @@ -1,7 +1,7 @@ require 'test_helper' require File.join(__dir__, '../../extra/migrate_settings') -::Proxy::Migration.inject_migrations_instance(::Proxy::Migrations.new("dummy")) +Proxy::Migration.inject_migrations_instance(Proxy::Migrations.new("dummy")) require File.join(__dir__, '../../extra/migrations/20160413000000_migrate_puppet_settings.rb') class ProxyPuppetMigrationTest < Test::Unit::TestCase diff --git a/test/migrations/realm_migration_test.rb b/test/migrations/realm_migration_test.rb index a7e070384..1937474ce 100644 --- a/test/migrations/realm_migration_test.rb +++ b/test/migrations/realm_migration_test.rb @@ -1,7 +1,7 @@ require 'test_helper' require File.join(__dir__, '../../extra/migrate_settings') -::Proxy::Migration.inject_migrations_instance(::Proxy::Migrations.new("dummy")) +Proxy::Migration.inject_migrations_instance(Proxy::Migrations.new("dummy")) require File.join(__dir__, '../../extra/migrations/20161209000000_migrate_realm_settings.rb') class ProxyRealmMigrationTest < Test::Unit::TestCase diff --git a/test/puppet/puppet_api_test.rb b/test/puppet/puppet_api_test.rb index 7c2c0804b..aae90b2f1 100644 --- a/test/puppet/puppet_api_test.rb +++ b/test/puppet/puppet_api_test.rb @@ -5,7 +5,7 @@ require 'puppet_proxy_common/environments_retriever_base' require 'puppet_proxy_common/errors' -class ApiTestEnvironmentsRetriever < ::Proxy::Puppet::EnvironmentsRetrieverBase +class ApiTestEnvironmentsRetriever < Proxy::Puppet::EnvironmentsRetrieverBase attr_reader :first, :second def initialize diff --git a/test/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner_test.rb b/test/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner_test.rb index 690bc9b66..2f86d403b 100644 --- a/test/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner_test.rb +++ b/test/puppetca_token_whitelisting/puppetca_token_whitelisting_autosigner_test.rb @@ -48,7 +48,7 @@ def test_should_create_correct_token token = JSON.parse(response)['generated_token'] decoded = JWT.decode(token, @autosigner.smartproxy_cert.public_key, true, algorithm: 'RS512') assert_equal decoded.first['certname'], 'baz.example.com' - assert((decoded.first['exp'] - Time.now.to_i - 360 * 60).abs < 100) + assert((decoded.first['exp'] - Time.now.to_i - (360 * 60)).abs < 100) end def test_should_remove_autosign_entry diff --git a/test/root/root_api_test.rb b/test/root/root_api_test.rb index 0b9682ba5..877fb58a9 100644 --- a/test/root/root_api_test.rb +++ b/test/root/root_api_test.rb @@ -5,15 +5,15 @@ ENV['RACK_ENV'] = 'test' -class TestPlugin0 < ::Proxy::Plugin +class TestPlugin0 < Proxy::Plugin plugin :foreman_proxy, "0.0.1" end -class TestPlugin2 < ::Proxy::Plugin +class TestPlugin2 < Proxy::Plugin plugin :test2, "0.0.1" end -class TestPlugin3 < ::Proxy::Plugin +class TestPlugin3 < Proxy::Plugin plugin :test3, "0.0.1" end @@ -42,7 +42,7 @@ def test_version get "/version" assert_equal(Proxy::VERSION, JSON.parse(last_response.body)["version"]) - modules = Hash[all_modules.collect { |plugin| [plugin[:name].to_s, plugin[:version].to_s] }].reject { |key| key == 'foreman_proxy' } + modules = all_modules.to_h { |plugin| [plugin[:name].to_s, plugin[:version].to_s] }.reject { |key| key == 'foreman_proxy' } assert_equal(modules, JSON.parse(last_response.body)["modules"]) end end diff --git a/test/root/root_v2_api_test.rb b/test/root/root_v2_api_test.rb index bd914c1a4..b3ef2517d 100644 --- a/test/root/root_v2_api_test.rb +++ b/test/root/root_v2_api_test.rb @@ -5,15 +5,15 @@ ENV['RACK_ENV'] = 'test' -class TestPlugin1 < ::Proxy::Plugin +class TestPlugin1 < Proxy::Plugin plugin :foreman_proxy, "0.0.1" end -class TestPlugin2 < ::Proxy::Plugin +class TestPlugin2 < Proxy::Plugin plugin :test2, "0.0.1" end -class TestPlugin3 < ::Proxy::Plugin +class TestPlugin3 < Proxy::Plugin plugin :test3, "0.0.1" end diff --git a/test/test_helper.rb b/test/test_helper.rb index d8c45a9f2..522dd3b14 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -6,7 +6,7 @@ $LOAD_PATH << File.join(__dir__, '..', 'modules') logdir = File.join(__dir__, '..', 'logs') -FileUtils.mkdir_p(logdir) unless File.exist?(logdir) +FileUtils.mkdir_p(logdir) ENV['RACK_ENV'] = 'test' @@ -25,10 +25,6 @@ include DhcpProviderInterfaceValidation -def hash_symbols_to_strings(hash) - Hash[hash.collect { |k, v| [k.to_s, v] }] -end - # Starts up a real smart proxy instance under WEBrick # Use sparingly. API tests should use rack-test etc. module Proxy::IntegrationTestCase diff --git a/test/tftp/tftp_server_test.rb b/test/tftp/tftp_server_test.rb index 42d6f1071..2fc2dfb4b 100644 --- a/test/tftp/tftp_server_test.rb +++ b/test/tftp/tftp_server_test.rb @@ -74,7 +74,7 @@ def test_read_file def test_write_file tmp_filename = File.join(Dir.tmpdir(), 'foreman-proxy-tftp-server-write-file.txt') @subject.write_file(tmp_filename, "test") - assert_equal "test", File.open(tmp_filename, "rb").read + assert_equal "test", File.binread(tmp_filename) ensure File.unlink(tmp_filename) if tmp_filename end @@ -84,7 +84,7 @@ def test_delete_file @subject.delete_file tmp_filename assert_equal false, File.exist?(tmp_filename) ensure - File.unlink(tmp_filename) if File.exist?(tmp_filename) + FileUtils.rm_f(tmp_filename) end end