def cgi_env(script_name, pass_auth=false)
env = Hash.new
env['GATEWAY_INTERFACE'] = 'CGI/1.1'
env['REQUEST_METHOD'] = @method
env['SCRIPT_NAME'] = script_name
env['PATH_INFO'] = subpath(script_name)[1]
env['QUERY_STRING'] = @query || ''
if (has_header? 'Host') then
host = header('Host')
if (host =~ /:\d+$/) then
name, port = host.split(/:/, 2)
env['SERVER_NAME'] = name
env['SERVER_PORT'] = port
else
env['SERVER_NAME'] = host
env['SERVER_PORT'] = '80'
end
else
env['SERVER_NAME'] = @server_name || @server_address
env['SERVER_PORT'] = @server_port.to_s
end
env['SERVER_PROTOCOL'] = @version
env['SERVER_SOFTWARE'] = SERVER_TOKEN_LIST
env['REMOTE_HOST'] = @client_name || @client_address
env['REMOTE_ADDR'] = @client_address
each_header do |name, value|
case (name)
when 'Content-Type', 'Content-Length'
cgi_name = name.upcase
cgi_name.gsub!(/-/, '_')
env[cgi_name] = value
else
unless (pass_auth) then
if (name =~ /Authorization/) then
next
end
end
cgi_name = name.upcase
cgi_name.gsub!(/-/, '_')
env['HTTP_' + cgi_name] = value
end
end
env
end