require 'webrick' module SmallCage class HTTPServer def initialize(document_root, port) # logger = WEBrick::Log.new(nil, 1) @server = WEBrick::HTTPServer.new({ :DocumentRoot => document_root, :Port => port, :AccessLog => [] }) WEBrick::HTTPServlet::FileHandler.remove_handler('cgi') WEBrick::HTTPServlet::FileHandler.remove_handler('rhtml') @server.mount('/_smc/update_uri', UpdateUriServlet) @server.mount('/_smc/auto', AutoServlet) end def start @server.start end def shutdown @server.shutdown end def updated_uri=(uri) UpdateUriServlet.uri = uri end def reload UpdateUriServlet.uri = ':reload' end end class UpdateUriServlet < WEBrick::HTTPServlet::AbstractServlet @@uri = '/index.html' @@update_time = '' def do_GET(req, res) res['content-type'] = 'text/plain' res.body = @@uri + "\n" + @@update_time end def self.uri=(uri) @@uri = uri update_time end def self.update_time @@update_time = Time.now.to_s end end class AutoServlet < WEBrick::HTTPServlet::AbstractServlet def do_GET(req, res) res['content-type'] = 'text/html' html = File.dirname(__FILE__) + '/resources/auto.html' res.body = File.read(html) end end end