GRAYBYTE WORDPRESS FILE MANAGER4496

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.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
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/alt/ruby26/lib64/ruby/2.6.0/bundler/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/ruby26/lib64/ruby/2.6.0/bundler//mirror.rb
# 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[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
          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 = 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

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
March 03 2024 22:47:39
root / root
0755
cli
--
March 03 2024 22:47:32
root / linksafe
0755
compact_index_client
--
March 03 2024 22:47:32
root / linksafe
0755
fetcher
--
March 03 2024 22:47:32
root / linksafe
0755
installer
--
March 03 2024 22:47:32
root / linksafe
0755
plugin
--
March 03 2024 22:47:32
root / linksafe
0755
resolver
--
March 03 2024 22:47:32
root / linksafe
0755
settings
--
March 03 2024 22:47:32
root / linksafe
0755
source
--
March 03 2024 22:47:32
root / linksafe
0755
ssl_certs
--
March 03 2024 22:47:32
root / linksafe
0755
templates
--
March 03 2024 22:47:32
root / linksafe
0755
ui
--
March 03 2024 22:47:32
root / linksafe
0755
vendor
--
March 03 2024 22:47:32
root / linksafe
0755
build_metadata.rb
1.614 KB
April 12 2022 11:50:11
root / linksafe
0644
capistrano.rb
0.858 KB
April 12 2022 11:50:11
root / linksafe
0644
cli.rb
35.123 KB
April 12 2022 11:50:11
root / linksafe
0644
compact_index_client.rb
3.271 KB
April 12 2022 11:50:11
root / linksafe
0644
compatibility_guard.rb
0.506 KB
April 12 2022 11:50:11
root / linksafe
0644
constants.rb
0.207 KB
April 12 2022 11:50:11
root / linksafe
0644
current_ruby.rb
2.187 KB
April 12 2022 11:50:11
root / linksafe
0644
definition.rb
36.444 KB
April 12 2022 11:50:11
root / linksafe
0644
dep_proxy.rb
0.808 KB
April 12 2022 11:50:11
root / linksafe
0644
dependency.rb
4.434 KB
April 12 2022 11:50:11
root / linksafe
0644
deployment.rb
3.191 KB
April 12 2022 11:50:11
root / linksafe
0644
deprecate.rb
0.855 KB
April 12 2022 11:50:11
root / linksafe
0644
dsl.rb
21.46 KB
April 12 2022 11:50:11
root / linksafe
0644
endpoint_specification.rb
3.908 KB
April 12 2022 11:50:11
root / linksafe
0644
env.rb
5.221 KB
April 12 2022 11:50:11
root / linksafe
0644
environment_preserver.rb
1.306 KB
April 12 2022 11:50:11
root / linksafe
0644
errors.rb
4.59 KB
April 12 2022 11:50:11
root / linksafe
0644
feature_flag.rb
3.066 KB
April 12 2022 11:50:11
root / linksafe
0644
fetcher.rb
10.831 KB
April 12 2022 11:50:11
root / linksafe
0644
friendly_errors.rb
4.33 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_helper.rb
5.876 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_helpers.rb
3.186 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_remote_fetcher.rb
1.459 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_tasks.rb
0.134 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_version_promoter.rb
6.523 KB
April 12 2022 11:50:11
root / linksafe
0644
gemdeps.rb
0.413 KB
April 12 2022 11:50:11
root / linksafe
0644
graph.rb
4.999 KB
April 12 2022 11:50:11
root / linksafe
0644
index.rb
5.242 KB
April 12 2022 11:50:11
root / linksafe
0644
injector.rb
8.612 KB
April 12 2022 11:50:11
root / linksafe
0644
inline.rb
2.33 KB
April 12 2022 11:50:11
root / linksafe
0644
installer.rb
11.846 KB
April 12 2022 11:50:11
root / linksafe
0644
lazy_specification.rb
3.615 KB
April 12 2022 11:50:11
root / linksafe
0644
lockfile_generator.rb
2.179 KB
April 12 2022 11:50:11
root / linksafe
0644
lockfile_parser.rb
8.622 KB
April 12 2022 11:50:11
root / linksafe
0644
match_platform.rb
0.644 KB
April 12 2022 11:50:11
root / linksafe
0644
mirror.rb
5.79 KB
April 12 2022 11:50:11
root / linksafe
0644
plugin.rb
9.121 KB
April 12 2022 11:50:11
root / linksafe
0644
process_lock.rb
0.686 KB
April 12 2022 11:50:11
root / linksafe
0644
psyched_yaml.rb
0.833 KB
April 12 2022 11:50:11
root / linksafe
0644
remote_specification.rb
3.457 KB
April 12 2022 11:50:11
root / linksafe
0644
resolver.rb
14.196 KB
April 12 2022 11:50:11
root / linksafe
0644
retry.rb
1.603 KB
April 12 2022 11:50:11
root / linksafe
0644
ruby_dsl.rb
0.743 KB
April 12 2022 11:50:11
root / linksafe
0644
ruby_version.rb
4.963 KB
April 12 2022 11:50:11
root / linksafe
0644
rubygems_ext.rb
5.878 KB
April 12 2022 11:50:11
root / linksafe
0644
rubygems_gem_installer.rb
3.486 KB
April 12 2022 11:50:11
root / linksafe
0644
rubygems_integration.rb
25.008 KB
April 12 2022 11:50:11
root / linksafe
0644
runtime.rb
10.951 KB
April 12 2022 11:50:11
root / linksafe
0644
settings.rb
12.382 KB
April 12 2022 11:50:11
root / linksafe
0644
setup.rb
0.703 KB
April 12 2022 11:50:11
root / linksafe
0644
shared_helpers.rb
12.002 KB
April 12 2022 11:50:11
root / linksafe
0644
similarity_detector.rb
1.836 KB
April 12 2022 11:50:11
root / linksafe
0644
source.rb
2.655 KB
April 12 2022 11:50:11
root / linksafe
0644
source_list.rb
5.868 KB
April 12 2022 11:50:11
root / linksafe
0644
spec_set.rb
5.344 KB
April 12 2022 11:50:11
root / linksafe
0644
stub_specification.rb
2.777 KB
April 12 2022 11:50:11
root / linksafe
0644
ui.rb
0.193 KB
April 12 2022 11:50:11
root / linksafe
0644
uri_credentials_filter.rb
1.204 KB
April 12 2022 11:50:11
root / linksafe
0644
vendored_fileutils.rb
0.188 KB
April 12 2022 11:50:11
root / linksafe
0644
vendored_molinillo.rb
0.098 KB
April 12 2022 11:50:11
root / linksafe
0644
vendored_persistent.rb
1.61 KB
April 12 2022 11:50:11
root / linksafe
0644
vendored_thor.rb
0.188 KB
April 12 2022 11:50:11
root / linksafe
0644
version.rb
0.802 KB
April 12 2022 11:50:11
root / linksafe
0644
version_ranges.rb
2.864 KB
April 12 2022 11:50:11
root / linksafe
0644
vlad.rb
0.455 KB
April 12 2022 11:50:11
root / linksafe
0644
worker.rb
2.568 KB
April 12 2022 11:50:11
root / linksafe
0644
yaml_serializer.rb
2.406 KB
April 12 2022 11:50:11
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF