Current Path: > > opt > alt > > ruby34 > share > rubygems > rubygems
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
commands | Directory | - | - | |
core_ext | Directory | - | - | |
defaults | Directory | - | - | |
ext | Directory | - | - | |
gemcutter_utilities | Directory | - | - | |
package | Directory | - | - | |
request | Directory | - | - | |
request_set | Directory | - | - | |
resolver | Directory | - | - | |
safe_marshal | Directory | - | - | |
security | Directory | - | - | |
source | Directory | - | - | |
ssl_certs | Directory | - | - | |
util | Directory | - | - | |
vendor | Directory | - | - | |
available_set.rb | File | 3075 bytes | May 29 2025 13:39:48. | |
basic_specification.rb | File | 8329 bytes | May 29 2025 13:39:49. | |
bundler_version_finder.rb | File | 2009 bytes | May 29 2025 13:39:49. | |
ci_detector.rb | File | 3801 bytes | May 29 2025 13:39:48. | |
command.rb | File | 16179 bytes | May 29 2025 13:39:49. | |
command_manager.rb | File | 5778 bytes | May 29 2025 13:39:49. | |
compatibility.rb | File | 1022 bytes | May 29 2025 13:39:48. | |
config_file.rb | File | 16700 bytes | May 29 2025 13:39:49. | |
defaults.rb | File | 7558 bytes | May 29 2025 13:39:49. | |
dependency.rb | File | 8652 bytes | May 29 2025 13:39:49. | |
dependency_installer.rb | File | 10144 bytes | May 29 2025 13:39:49. | |
dependency_list.rb | File | 5684 bytes | May 29 2025 13:39:49. | |
deprecate.rb | File | 5159 bytes | May 29 2025 13:39:49. | |
doctor.rb | File | 3204 bytes | May 29 2025 13:39:48. | |
errors.rb | File | 4635 bytes | May 29 2025 13:39:48. | |
exceptions.rb | File | 7298 bytes | May 29 2025 13:39:49. | |
ext.rb | File | 498 bytes | May 29 2025 13:39:49. | |
gem_runner.rb | File | 2187 bytes | May 29 2025 13:39:49. | |
gemcutter_utilities.rb | File | 11515 bytes | May 29 2025 13:39:48. | |
gemspec_helpers.rb | File | 394 bytes | May 29 2025 13:39:49. | |
install_default_message.rb | File | 349 bytes | May 29 2025 13:39:49. | |
install_message.rb | File | 323 bytes | May 29 2025 13:39:49. | |
install_update_options.rb | File | 6722 bytes | May 29 2025 13:39:48. | |
installer.rb | File | 28403 bytes | May 29 2025 13:39:49. | |
installer_uninstaller_utils.rb | File | 771 bytes | May 29 2025 13:39:48. | |
local_remote_options.rb | File | 3675 bytes | May 29 2025 13:39:48. | |
name_tuple.rb | File | 2442 bytes | May 29 2025 13:39:49. | |
openssl.rb | File | 125 bytes | May 29 2025 13:39:49. | |
package.rb | File | 19281 bytes | May 29 2025 13:39:48. | |
package_task.rb | File | 3879 bytes | May 29 2025 13:39:48. | |
path_support.rb | File | 1816 bytes | May 29 2025 13:39:49. | |
platform.rb | File | 8608 bytes | May 29 2025 13:39:49. | |
psych_tree.rb | File | 855 bytes | May 29 2025 13:39:49. | |
query_utils.rb | File | 8703 bytes | May 29 2025 13:39:48. | |
rdoc.rb | File | 660 bytes | May 29 2025 13:39:49. | |
remote_fetcher.rb | File | 9604 bytes | May 29 2025 13:39:48. | |
request.rb | File | 8910 bytes | May 29 2025 13:39:49. | |
request_set.rb | File | 11558 bytes | May 29 2025 13:39:49. | |
requirement.rb | File | 7298 bytes | May 29 2025 13:39:48. | |
resolver.rb | File | 9659 bytes | May 29 2025 13:39:49. | |
s3_uri_signer.rb | File | 6106 bytes | May 29 2025 13:39:49. | |
safe_marshal.rb | File | 1969 bytes | May 29 2025 13:39:49. | |
safe_yaml.rb | File | 1067 bytes | May 29 2025 13:39:49. | |
security.rb | File | 22214 bytes | May 29 2025 13:39:49. | |
security_option.rb | File | 1084 bytes | May 29 2025 13:39:49. | |
shellwords.rb | File | 66 bytes | May 29 2025 13:39:49. | |
source.rb | File | 5922 bytes | May 29 2025 13:39:49. | |
source_list.rb | File | 2482 bytes | May 29 2025 13:39:49. | |
spec_fetcher.rb | File | 7868 bytes | May 29 2025 13:39:49. | |
specification.rb | File | 70688 bytes | May 29 2025 13:39:49. | |
specification_policy.rb | File | 15964 bytes | May 29 2025 13:39:48. | |
specification_record.rb | File | 5332 bytes | May 29 2025 13:39:48. | |
stub_specification.rb | File | 5078 bytes | May 29 2025 13:39:48. | |
target_rbconfig.rb | File | 1273 bytes | May 29 2025 13:39:49. | |
text.rb | File | 2114 bytes | May 29 2025 13:39:49. | |
uninstaller.rb | File | 11179 bytes | May 29 2025 13:39:49. | |
unknown_command_spell_checker.rb | File | 411 bytes | May 29 2025 13:39:49. | |
update_suggestion.rb | File | 1899 bytes | May 29 2025 13:39:49. | |
uri.rb | File | 2436 bytes | May 29 2025 13:39:48. | |
uri_formatter.rb | File | 784 bytes | May 29 2025 13:39:48. | |
user_interaction.rb | File | 13417 bytes | May 29 2025 13:39:48. | |
util.rb | File | 2519 bytes | May 29 2025 13:39:48. | |
validator.rb | File | 3717 bytes | May 29 2025 13:39:48. | |
vendored_molinillo.rb | File | 81 bytes | May 29 2025 13:39:49. | |
vendored_net_http.rb | File | 233 bytes | May 29 2025 13:39:48. | |
vendored_optparse.rb | File | 79 bytes | May 29 2025 13:39:49. | |
vendored_securerandom.rb | File | 87 bytes | May 29 2025 13:39:48. | |
vendored_timeout.rb | File | 228 bytes | May 29 2025 13:39:48. | |
vendored_tsort.rb | File | 73 bytes | May 29 2025 13:39:49. | |
version.rb | File | 13668 bytes | May 29 2025 13:39:49. | |
version_option.rb | File | 2227 bytes | May 29 2025 13:39:48. | |
yaml_serializer.rb | File | 2474 bytes | May 29 2025 13:39:48. |
# frozen_string_literal: true require_relative "openssl" ## # S3URISigner implements AWS SigV4 for S3 Source to avoid a dependency on the aws-sdk-* gems # More on AWS SigV4: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html class Gem::S3URISigner class ConfigurationError < Gem::Exception def initialize(message) super message end def to_s # :nodoc: super.to_s end end class InstanceProfileError < Gem::Exception def initialize(message) super message end def to_s # :nodoc: super.to_s end end attr_accessor :uri def initialize(uri) @uri = uri end ## # Signs S3 URI using query-params according to the reference: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html def sign(expiration = 86_400) s3_config = fetch_s3_config current_time = Time.now.utc date_time = current_time.strftime("%Y%m%dT%H%m%SZ") date = date_time[0,8] credential_info = "#{date}/#{s3_config.region}/s3/aws4_request" canonical_host = "#{uri.host}.s3.#{s3_config.region}.amazonaws.com" query_params = generate_canonical_query_params(s3_config, date_time, credential_info, expiration) canonical_request = generate_canonical_request(canonical_host, query_params) string_to_sign = generate_string_to_sign(date_time, credential_info, canonical_request) signature = generate_signature(s3_config, date, string_to_sign) Gem::URI.parse("https://#{canonical_host}#{uri.path}?#{query_params}&X-Amz-Signature=#{signature}") end private S3Config = Struct.new :access_key_id, :secret_access_key, :security_token, :region def generate_canonical_query_params(s3_config, date_time, credential_info, expiration) canonical_params = {} canonical_params["X-Amz-Algorithm"] = "AWS4-HMAC-SHA256" canonical_params["X-Amz-Credential"] = "#{s3_config.access_key_id}/#{credential_info}" canonical_params["X-Amz-Date"] = date_time canonical_params["X-Amz-Expires"] = expiration.to_s canonical_params["X-Amz-SignedHeaders"] = "host" canonical_params["X-Amz-Security-Token"] = s3_config.security_token if s3_config.security_token # Sorting is required to generate proper signature canonical_params.sort.to_h.map do |key, value| "#{base64_uri_escape(key)}=#{base64_uri_escape(value)}" end.join("&") end def generate_canonical_request(canonical_host, query_params) [ "GET", uri.path, query_params, "host:#{canonical_host}", "", # empty params "host", "UNSIGNED-PAYLOAD", ].join("\n") end def generate_string_to_sign(date_time, credential_info, canonical_request) [ "AWS4-HMAC-SHA256", date_time, credential_info, OpenSSL::Digest::SHA256.hexdigest(canonical_request), ].join("\n") end def generate_signature(s3_config, date, string_to_sign) date_key = OpenSSL::HMAC.digest("sha256", "AWS4" + s3_config.secret_access_key, date) date_region_key = OpenSSL::HMAC.digest("sha256", date_key, s3_config.region) date_region_service_key = OpenSSL::HMAC.digest("sha256", date_region_key, "s3") signing_key = OpenSSL::HMAC.digest("sha256", date_region_service_key, "aws4_request") OpenSSL::HMAC.hexdigest("sha256", signing_key, string_to_sign) end ## # Extracts S3 configuration for S3 bucket def fetch_s3_config return S3Config.new(uri.user, uri.password, nil, "us-east-1") if uri.user && uri.password s3_source = Gem.configuration[:s3_source] || Gem.configuration["s3_source"] host = uri.host raise ConfigurationError.new("no s3_source key exists in .gemrc") unless s3_source auth = s3_source[host] || s3_source[host.to_sym] raise ConfigurationError.new("no key for host #{host} in s3_source in .gemrc") unless auth provider = auth[:provider] || auth["provider"] case provider when "env" id = ENV["AWS_ACCESS_KEY_ID"] secret = ENV["AWS_SECRET_ACCESS_KEY"] security_token = ENV["AWS_SESSION_TOKEN"] when "instance_profile" credentials = ec2_metadata_credentials_json id = credentials["AccessKeyId"] secret = credentials["SecretAccessKey"] security_token = credentials["Token"] else id = auth[:id] || auth["id"] secret = auth[:secret] || auth["secret"] security_token = auth[:security_token] || auth["security_token"] end raise ConfigurationError.new("s3_source for #{host} missing id or secret") unless id && secret region = auth[:region] || auth["region"] || "us-east-1" S3Config.new(id, secret, security_token, region) end def base64_uri_escape(str) str.gsub(%r{[\+/=\n]}, BASE64_URI_TRANSLATE) end def ec2_metadata_credentials_json require_relative "vendored_net_http" require_relative "request" require_relative "request/connection_pools" require "json" iam_info = ec2_metadata_request(EC2_IAM_INFO) # Expected format: arn:aws:iam::<id>:instance-profile/<role_name> role_name = iam_info["InstanceProfileArn"].split("/").last ec2_metadata_request(EC2_IAM_SECURITY_CREDENTIALS + role_name) end def ec2_metadata_request(url) uri = Gem::URI(url) @request_pool ||= create_request_pool(uri) request = Gem::Request.new(uri, Gem::Net::HTTP::Get, nil, @request_pool) response = request.fetch case response when Gem::Net::HTTPOK then JSON.parse(response.body) else raise InstanceProfileError.new("Unable to fetch AWS metadata from #{uri}: #{response.message} #{response.code}") end end def create_request_pool(uri) proxy_uri = Gem::Request.proxy_uri(Gem::Request.get_proxy_from_env(uri.scheme)) certs = Gem::Request.get_cert_files Gem::Request::ConnectionPools.new(proxy_uri, certs).pool_for(uri) end BASE64_URI_TRANSLATE = { "+" => "%2B", "/" => "%2F", "=" => "%3D", "\n" => "" }.freeze EC2_IAM_INFO = "http://169.254.169.254/latest/meta-data/iam/info" EC2_IAM_SECURITY_CREDENTIALS = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" end
SILENT KILLER Tool