| #!/usr/bin/env ruby |
| # iExploder - Generates bad HTML files to perform QA for web browsers. |
| # Developed for the Mozilla Foundation. |
| ##################### |
| # |
| # Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org> |
| # |
| # This software is provided 'as-is', without any express or implied warranty. |
| # In no event will the authors be held liable for any damages arising from the |
| # use of this software. |
| # |
| # Permission is granted to anyone to use this software for any purpose, |
| # including commercial applications, and to alter it and redistribute it |
| # freely, subject to the following restrictions: |
| # |
| # 1. The origin of this software must not be misrepresented; you must not |
| # claim that you wrote the original software. If you use this software in a |
| # product, an acknowledgment in the product documentation would be appreciated |
| # but is not required. |
| # |
| # 2. Altered source versions must be plainly marked as such, and must not be |
| # misrepresented as being the original software. |
| # |
| # 3. This notice may not be removed or altered from any source distribution. |
| |
| require 'webrick' |
| require 'iexploder'; |
| require 'config'; |
| |
| include WEBrick |
| ### THE INTERACTION ################################## |
| $ie_preload = IExploder.new($HTML_MAX_TAGS, $HTML_MAX_ATTRS, $CSS_MAX_PROPS) |
| $ie_preload.readTagFiles() |
| $ie_preload.url='/iexploder.cgi' |
| |
| if ARGV[0] |
| port = ARGV[0].to_i |
| else |
| port = 2000 |
| end |
| |
| puts "* iExploder #{$VERSION} will be available at http://localhost:#{port}" |
| puts "* Max Tags: #$HTML_MAX_TAGS Max Attrs: #$HTML_MAX_ATTRS Max Props: #$CSS_MAX_PROPS" |
| puts |
| |
| s = HTTPServer.new( :Port => port ) |
| class IEServlet < HTTPServlet::AbstractServlet |
| def do_GET(req, res) |
| ie = $ie_preload.dup |
| ie.test_num = req.query['test'].to_i |
| ie.subtest_num = req.query['subtest'].to_i || 0 |
| ie.random_mode = req.query['random'] |
| ie.lookup_mode = req.query['lookup'] |
| ie.stop_num = req.query['stop'].to_i |
| ie.setRandomSeed |
| |
| res['Content-Type'] = 'text/html' |
| res.body = ie.buildPage() |
| end |
| end |
| |
| class IEForm < HTTPServlet::AbstractServlet |
| def do_GET(req, res) |
| res['Content-Type'] = 'text/html' |
| res.body = File.open("index.html").readlines.join("\n") |
| end |
| end |
| |
| |
| |
| s.mount("/iexploder.cgi", IEServlet) |
| s.mount("/", IEForm) |
| trap("INT") { s.shutdown } |
| |
| s.start |