# File webrick/httpservlet/filehandler.rb, line 131
def self.add_handler(suffix, handler)
HandlerTable[suffix] = handler
end
# File webrick/httpservlet/filehandler.rb, line 139
def initialize(server, root, options={}, default=Config::FileHandler)
@config = server.config
@logger = @config[:Logger]
@root = File.expand_path(root)
if options == true || options == false
options = { :FancyIndexing => options }
end
@options = default.dup.update(options)
end
# File webrick/httpservlet/filehandler.rb, line 170
def do_GET(req, res)
unless exec_handler(req, res)
set_dir_list(req, res)
end
end
# File webrick/httpservlet/filehandler.rb, line 182
def do_OPTIONS(req, res)
unless exec_handler(req, res)
super(req, res)
end
end
# File webrick/httpservlet/filehandler.rb, line 176
def do_POST(req, res)
unless exec_handler(req, res)
raise HTTPStatus::NotFound, "`#{req.path}' not found."
end
end
# File webrick/httpservlet/filehandler.rb, line 149
def service(req, res)
# if this class is mounted on "/" and /~username is requested.
# we're going to override path informations before invoking service.
if defined?(Etc) && @options[:UserDir] && req.script_name.empty?
if %r^(/~([^/]+))| =~ req.path_info
script_name, user = $1, $2
path_info = $'
begin
passwd = Etc::getpwnam(user)
@root = File::join(passwd.dir, @options[:UserDir])
req.script_name = script_name
req.path_info = path_info
rescue
@logger.debug "#{self.class}#do_GET: getpwnam(#{user}) failed"
end
end
end
prevent_directory_traversal(req, res)
super(req, res)
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.