/
opt
/
cpanel
/
ea-ruby27
/
root
/
usr
/
share
/
ruby
/
ruby-2.7.8
/
bundler
/
/opt/cpanel/ea-ruby27/root/usr/share/ruby/ruby-2.7.8/bundler
mkdir
upload
Name
Size
Mode
Actions
cli/
-
0755
rm
compact_index_client/
-
0755
rm
fetcher/
-
0755
rm
installer/
-
0755
rm
plugin/
-
0755
rm
resolver/
-
0755
rm
settings/
-
0755
rm
source/
-
0755
rm
templates/
-
0755
rm
ui/
-
0755
rm
vendor/
-
0755
rm
build_metadata.rb
1604
0644
edit
dl
rm
capistrano.rb
883
0644
edit
dl
rm
cli.rb
37300
0644
edit
dl
rm
compact_index_client.rb
3671
0644
edit
dl
rm
constants.rb
212
0644
edit
dl
rm
current_ruby.rb
2173
0644
edit
dl
rm
definition.rb
37605
0644
edit
dl
rm
dependency.rb
4955
0644
edit
dl
rm
deployment.rb
3269
0644
edit
dl
rm
deprecate.rb
876
0644
edit
dl
rm
dep_proxy.rb
827
0644
edit
dl
rm
dsl.rb
20918
0644
edit
dl
rm
endpoint_specification.rb
4002
0644
edit
dl
rm
env.rb
5126
0644
edit
dl
rm
environment_preserver.rb
1310
0644
edit
dl
rm
errors.rb
4700
0644
edit
dl
rm
feature_flag.rb
2507
0644
edit
dl
rm
fetcher.rb
11368
0644
edit
dl
rm
friendly_errors.rb
4466
0644
edit
dl
rm
gemdeps.rb
423
0644
edit
dl
rm
gem_helper.rb
6375
0644
edit
dl
rm
gem_helpers.rb
3269
0644
edit
dl
rm
gem_remote_fetcher.rb
1494
0644
edit
dl
rm
gem_tasks.rb
138
0644
edit
dl
rm
gem_version_promoter.rb
6664
0644
edit
dl
rm
graph.rb
5112
0644
edit
dl
rm
index.rb
5368
0644
edit
dl
rm
injector.rb
8973
0644
edit
dl
rm
inline.rb
2829
0644
edit
dl
rm
installer.rb
11874
0644
edit
dl
rm
lazy_specification.rb
3693
0644
edit
dl
rm
lockfile_generator.rb
2231
0644
edit
dl
rm
lockfile_parser.rb
8469
0644
edit
dl
rm
match_platform.rb
660
0644
edit
dl
rm
mirror.rb
5956
0644
edit
dl
rm
plugin.rb
9852
0644
edit
dl
rm
process_lock.rb
702
0644
edit
dl
rm
psyched_yaml.rb
854
0644
edit
dl
rm
remote_specification.rb
3525
0644
edit
dl
rm
resolver.rb
16422
0644
edit
dl
rm
retry.rb
1650
0644
edit
dl
rm
rubygems_ext.rb
4244
0644
edit
dl
rm
rubygems_gem_installer.rb
3574
0644
edit
dl
rm
rubygems_integration.rb
18476
0644
edit
dl
rm
ruby_dsl.rb
761
0644
edit
dl
rm
ruby_version.rb
4554
0644
edit
dl
rm
runtime.rb
10930
0644
edit
dl
rm
settings.rb
11668
0644
edit
dl
rm
setup.rb
802
0644
edit
dl
rm
shared_helpers.rb
11535
0644
edit
dl
rm
similarity_detector.rb
1882
0644
edit
dl
rm
source.rb
2814
0644
edit
dl
rm
source_list.rb
5649
0644
edit
dl
rm
spec_set.rb
5402
0644
edit
dl
rm
stub_specification.rb
2328
0644
edit
dl
rm
ui.rb
255
0644
edit
dl
rm
uri_credentials_filter.rb
1266
0644
edit
dl
rm
vendored_fileutils.rb
101
0644
edit
dl
rm
vendored_molinillo.rb
101
0644
edit
dl
rm
vendored_persistent.rb
1707
0644
edit
dl
rm
vendored_thor.rb
180
0644
edit
dl
rm
vendored_uri.rb
89
0644
edit
dl
rm
version.rb
179
0644
edit
dl
rm
version_ranges.rb
3888
0644
edit
dl
rm
vlad.rb
468
0644
edit
dl
rm
worker.rb
2651
0644
edit
dl
rm
yaml_serializer.rb
2412
0644
edit
dl
rm
Edit:
/opt/cpanel/ea-ruby27/root/usr/share/ruby/ruby-2.7.8/bundler/mirror.rb
(5956B)
# frozen_string_literal: true require "socket" module Bundler class Settings # Class used to build the mirror set and then find a mirror for a given URI # # @param prober [Prober object, nil] by default a TCPSocketProbe, this object # will be used to probe the mirror address to validate that the mirror replies. class Mirrors def initialize(prober = nil) @all = Mirror.new @prober = prober || TCPSocketProbe.new @mirrors = {} end # Returns a mirror for the given uri. # # Depending on the uri having a valid mirror or not, it may be a # mirror that points to the provided uri def for(uri) if @all.validate!(@prober).valid? @all else fetch_valid_mirror_for(Settings.normalize_uri(uri)) end end def each @mirrors.each do |k, v| yield k, v.uri.to_s end end def parse(key, value) config = MirrorConfig.new(key, value) mirror = if config.all? @all else @mirrors[config.uri] ||= Mirror.new end config.update_mirror(mirror) end private def fetch_valid_mirror_for(uri) downcased = uri.to_s.downcase mirror = @mirrors[downcased] || @mirrors[Bundler::URI(downcased).host] || Mirror.new(uri) mirror.validate!(@prober) mirror = Mirror.new(uri) unless mirror.valid? mirror end end # A mirror # # Contains both the uri that should be used as a mirror and the # fallback timeout which will be used for probing if the mirror # replies on time or not. class Mirror DEFAULT_FALLBACK_TIMEOUT = 0.1 attr_reader :uri, :fallback_timeout def initialize(uri = nil, fallback_timeout = 0) self.uri = uri self.fallback_timeout = fallback_timeout @valid = nil end def uri=(uri) @uri = if uri.nil? nil else Bundler::URI(uri.to_s) end @valid = nil end def fallback_timeout=(timeout) case timeout when true, "true" @fallback_timeout = DEFAULT_FALLBACK_TIMEOUT when false, "false" @fallback_timeout = 0 else @fallback_timeout = timeout.to_i end @valid = nil end def ==(other) !other.nil? && uri == other.uri && fallback_timeout == other.fallback_timeout end def valid? return false if @uri.nil? return @valid unless @valid.nil? false end def validate!(probe = nil) @valid = false if uri.nil? if @valid.nil? @valid = fallback_timeout == 0 || (probe || TCPSocketProbe.new).replies?(self) end self end end # Class used to parse one configuration line # # Gets the configuration line and the value. # This object provides a `update_mirror` method # used to setup the given mirror value. class MirrorConfig attr_accessor :uri, :value def initialize(config_line, value) uri, fallback = config_line.match(%r{\Amirror\.(all|.+?)(\.fallback_timeout)?\/?\z}).captures @fallback = !fallback.nil? @all = false if uri == "all" @all = true else @uri = Bundler::URI(uri).absolute? ? Settings.normalize_uri(uri) : uri end @value = value end def all? @all end def update_mirror(mirror) if @fallback mirror.fallback_timeout = @value else mirror.uri = Settings.normalize_uri(@value) end end end # Class used for probing TCP availability for a given mirror. class TCPSocketProbe def replies?(mirror) MirrorSockets.new(mirror).any? do |socket, address, timeout| begin socket.connect_nonblock(address) rescue Errno::EINPROGRESS wait_for_writtable_socket(socket, address, timeout) rescue RuntimeError # Connection failed somehow, again false end end end private def wait_for_writtable_socket(socket, address, timeout) if IO.select(nil, [socket], nil, timeout) probe_writtable_socket(socket, address) else # TCP Handshake timed out, or there is something dropping packets false end end def probe_writtable_socket(socket, address) socket.connect_nonblock(address) rescue Errno::EISCONN true rescue StandardError # Connection failed false end end end # Class used to build the list of sockets that correspond to # a given mirror. # # One mirror may correspond to many different addresses, both # because of it having many dns entries or because # the network interface is both ipv4 and ipv5 class MirrorSockets def initialize(mirror) @timeout = mirror.fallback_timeout @addresses = Socket.getaddrinfo(mirror.uri.host, mirror.uri.port).map do |address| SocketAddress.new(address[0], address[3], address[1]) end end def any? @addresses.any? do |address| socket = Socket.new(Socket.const_get(address.type), Socket::SOCK_STREAM, 0) socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) value = yield socket, address.to_socket_address, @timeout socket.close unless socket.closed? value end end end # Socket address builder. # # Given a socket type, a host and a port, # provides a method to build sockaddr string class SocketAddress attr_reader :type, :host, :port def initialize(type, host, port) @type = type @host = host @port = port end def to_socket_address Socket.pack_sockaddr_in(@port, @host) end end end
Save
cmd:
run