$42 GRAYBYTE WORDPRESS FILE MANAGER $16

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.23
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/ruby30/share/gems/gems/rack-3.0.8/lib/rack/

HOME
Current File : /opt/alt/ruby30/share/gems/gems/rack-3.0.8/lib/rack//urlmap.rb
# frozen_string_literal: true

require 'set'

require_relative 'constants'

module Rack
  # Rack::URLMap takes a hash mapping urls or paths to apps, and
  # dispatches accordingly.  Support for HTTP/1.1 host names exists if
  # the URLs start with <tt>http://</tt> or <tt>https://</tt>.
  #
  # URLMap modifies the SCRIPT_NAME and PATH_INFO such that the part
  # relevant for dispatch is in the SCRIPT_NAME, and the rest in the
  # PATH_INFO.  This should be taken care of when you need to
  # reconstruct the URL in order to create links.
  #
  # URLMap dispatches in such a way that the longest paths are tried
  # first, since they are most specific.

  class URLMap
    def initialize(map = {})
      remap(map)
    end

    def remap(map)
      @known_hosts = Set[]
      @mapping = map.map { |location, app|
        if location =~ %r{\Ahttps?://(.*?)(/.*)}
          host, location = $1, $2
          @known_hosts << host
        else
          host = nil
        end

        unless location[0] == ?/
          raise ArgumentError, "paths need to start with /"
        end

        location = location.chomp('/')
        match = Regexp.new("^#{Regexp.quote(location).gsub('/', '/+')}(.*)", Regexp::NOENCODING)

        [host, location, match, app]
      }.sort_by do |(host, location, _, _)|
        [host ? -host.size : Float::INFINITY, -location.size]
      end
    end

    def call(env)
      path        = env[PATH_INFO]
      script_name = env[SCRIPT_NAME]
      http_host   = env[HTTP_HOST]
      server_name = env[SERVER_NAME]
      server_port = env[SERVER_PORT]

      is_same_server = casecmp?(http_host, server_name) ||
                       casecmp?(http_host, "#{server_name}:#{server_port}")

      is_host_known = @known_hosts.include? http_host

      @mapping.each do |host, location, match, app|
        unless casecmp?(http_host, host) \
            || casecmp?(server_name, host) \
            || (!host && is_same_server) \
            || (!host && !is_host_known) # If we don't have a matching host, default to the first without a specified host
          next
        end

        next unless m = match.match(path.to_s)

        rest = m[1]
        next unless !rest || rest.empty? || rest[0] == ?/

        env[SCRIPT_NAME] = (script_name + location)
        env[PATH_INFO] = rest

        return app.call(env)
      end

      [404, { CONTENT_TYPE => "text/plain", "x-cascade" => "pass" }, ["Not Found: #{path}"]]

    ensure
      env[PATH_INFO]   = path
      env[SCRIPT_NAME] = script_name
    end

    private
    def casecmp?(v1, v2)
      # if both nil, or they're the same string
      return true if v1 == v2

      # if either are nil... (but they're not the same)
      return false if v1.nil?
      return false if v2.nil?

      # otherwise check they're not case-insensitive the same
      v1.casecmp(v2).zero?
    end
  end
end


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
1 Jan 1970 12.00 AM
root / root
0
auth
--
21 Mar 2024 12.54 PM
root / root
0755
multipart
--
21 Mar 2024 12.54 PM
root / root
0755
body_proxy.rb
1.3 KB
12 Feb 2024 9.23 PM
root / root
0644
builder.rb
8.562 KB
12 Feb 2024 9.23 PM
root / root
0644
cascade.rb
2.251 KB
12 Feb 2024 9.23 PM
root / root
0644
chunked.rb
3.301 KB
12 Feb 2024 9.23 PM
root / root
0644
common_logger.rb
3.117 KB
12 Feb 2024 9.23 PM
root / root
0644
conditional_get.rb
2.989 KB
12 Feb 2024 9.23 PM
root / root
0644
config.rb
0.4 KB
12 Feb 2024 9.23 PM
root / root
0644
constants.rb
2.474 KB
12 Feb 2024 9.23 PM
root / root
0644
content_length.rb
0.787 KB
12 Feb 2024 9.23 PM
root / root
0644
content_type.rb
0.679 KB
12 Feb 2024 9.23 PM
root / root
0644
deflater.rb
5.506 KB
12 Feb 2024 9.23 PM
root / root
0644
directory.rb
6.023 KB
12 Feb 2024 9.23 PM
root / root
0644
etag.rb
1.866 KB
12 Feb 2024 9.23 PM
root / root
0644
events.rb
4.801 KB
12 Feb 2024 9.23 PM
root / root
0644
file.rb
0.163 KB
12 Feb 2024 9.23 PM
root / root
0644
files.rb
5.661 KB
12 Feb 2024 9.23 PM
root / root
0644
head.rb
0.512 KB
12 Feb 2024 9.23 PM
root / root
0644
headers.rb
2.957 KB
12 Feb 2024 9.23 PM
root / root
0644
lint.rb
36.089 KB
12 Feb 2024 9.23 PM
root / root
0755
lock.rb
0.56 KB
12 Feb 2024 9.23 PM
root / root
0644
logger.rb
0.404 KB
12 Feb 2024 9.23 PM
root / root
0644
media_type.rb
1.399 KB
12 Feb 2024 9.23 PM
root / root
0644
method_override.rb
1.445 KB
12 Feb 2024 9.23 PM
root / root
0644
mime.rb
32.688 KB
12 Feb 2024 9.23 PM
root / root
0644
mock.rb
0.062 KB
12 Feb 2024 9.23 PM
root / root
0644
mock_request.rb
5.37 KB
12 Feb 2024 9.23 PM
root / root
0644
mock_response.rb
3.276 KB
12 Feb 2024 9.23 PM
root / root
0644
multipart.rb
1.166 KB
12 Feb 2024 9.23 PM
root / root
0644
null_logger.rb
1.185 KB
12 Feb 2024 9.23 PM
root / root
0644
query_parser.rb
8.37 KB
12 Feb 2024 9.23 PM
root / root
0644
recursive.rb
1.779 KB
12 Feb 2024 9.23 PM
root / root
0644
reloader.rb
3.022 KB
12 Feb 2024 9.23 PM
root / root
0644
request.rb
24.569 KB
12 Feb 2024 9.23 PM
root / root
0644
response.rb
10.724 KB
12 Feb 2024 9.23 PM
root / root
0644
rewindable_input.rb
3.123 KB
12 Feb 2024 9.23 PM
root / root
0644
runtime.rb
0.85 KB
12 Feb 2024 9.23 PM
root / root
0644
sendfile.rb
5.555 KB
12 Feb 2024 9.23 PM
root / root
0644
show_exceptions.rb
13.734 KB
12 Feb 2024 9.23 PM
root / root
0644
show_status.rb
3.576 KB
12 Feb 2024 9.23 PM
root / root
0644
static.rb
5.999 KB
12 Feb 2024 9.23 PM
root / root
0644
tempfile_reaper.rb
0.76 KB
12 Feb 2024 9.23 PM
root / root
0644
urlmap.rb
2.81 KB
12 Feb 2024 9.23 PM
root / root
0644
utils.rb
21.097 KB
12 Feb 2024 9.23 PM
root / root
0644
version.rb
0.936 KB
12 Feb 2024 9.23 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF