Class: WEBrick::HTTPRequest

Inherits:
Object show all
Defined in:
lib/arachni/ruby/webrick/httprequest.rb

Overview

Copyright 2010-2022 Ecsypno <www.ecsypno.com>

This file is part of the Arachni Framework project and is subject to
redistribution and commercial restrictions. Please see the Arachni Framework
web site for more information on licensing and terms of use.

Instance Method Summary collapse

Instance Method Details

#parse_uri(str, scheme = "http") ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/arachni/ruby/webrick/httprequest.rb', line 11

def parse_uri(str, scheme="http")
    if @config[:Escape8bitURI]
        str = HTTPUtils::escape8bit(str)
    end
    str.sub!(%r{\A/+}o, '/')
    uri = Arachni::URI( str )
    return uri if uri.absolute?
    if @forwarded_host
        host, port = @forwarded_host, @forwarded_port
    elsif self["host"]
        pattern = /\A(#{URI::REGEXP::PATTERN::HOST})(?::(\d+))?\z/n
        host, port = *self['host'].scan(pattern)[0]
    elsif @addr.size > 0
        host, port = @addr[2], @addr[1]
    else
        host, port = @config[:ServerName], @config[:Port]
    end
    uri.scheme = @forwarded_proto || scheme
    uri.host = host
    uri.port = port ? port.to_i : nil
    return URI::parse(uri.to_s)
end