|
1 #!/usr/bin/ruby |
|
2 # iExploder - Generates bad HTML files to perform QA for web browsers. |
|
3 # Developed for the Mozilla Foundation. |
|
4 ##################### |
|
5 # |
|
6 # Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org> |
|
7 # |
|
8 # This software is provided 'as-is', without any express or implied warranty. |
|
9 # In no event will the authors be held liable for any damages arising from the |
|
10 # use of this software. |
|
11 # |
|
12 # Permission is granted to anyone to use this software for any purpose, |
|
13 # including commercial applications, and to alter it and redistribute it |
|
14 # freely, subject to the following restrictions: |
|
15 # |
|
16 # 1. The origin of this software must not be misrepresented; you must not |
|
17 # claim that you wrote the original software. If you use this software in a |
|
18 # product, an acknowledgment in the product documentation would be appreciated |
|
19 # but is not required. |
|
20 # |
|
21 # 2. Altered source versions must be plainly marked as such, and must not be |
|
22 # misrepresented as being the original software. |
|
23 # |
|
24 # 3. This notice may not be removed or altered from any source distribution. |
|
25 |
|
26 require 'webrick' |
|
27 require 'iexploder'; |
|
28 require 'config'; |
|
29 |
|
30 include WEBrick |
|
31 ### THE INTERACTION ################################## |
|
32 $ie_preload = IExploder.new($HTML_MAX_TAGS, $HTML_MAX_ATTRS, $CSS_MAX_PROPS) |
|
33 $ie_preload.readTagFiles() |
|
34 $ie_preload.url='/iexploder.cgi' |
|
35 |
|
36 if ARGV[0] |
|
37 port = ARGV[0].to_i |
|
38 else |
|
39 port = 2000 |
|
40 end |
|
41 |
|
42 puts "* iExploder #{$VERSION} will be available at http://localhost:#{port}" |
|
43 puts "* Max Tags: #$HTML_MAX_TAGS Max Attrs: #$HTML_MAX_ATTRS Max Props: #$CSS_MAX_PROPS" |
|
44 puts |
|
45 |
|
46 s = HTTPServer.new( :Port => port ) |
|
47 class IEServlet < HTTPServlet::AbstractServlet |
|
48 def do_GET(req, res) |
|
49 ie = $ie_preload.dup |
|
50 ie.test_num = req.query['test'].to_i |
|
51 ie.subtest_num = req.query['subtest'].to_i || 0 |
|
52 ie.random_mode = req.query['random'] |
|
53 ie.lookup_mode = req.query['lookup'] |
|
54 ie.stop_num = req.query['stop'].to_i |
|
55 ie.setRandomSeed |
|
56 |
|
57 res['Content-Type'] = 'text/html' |
|
58 res.body = ie.buildPage() |
|
59 end |
|
60 end |
|
61 |
|
62 class IEForm < HTTPServlet::AbstractServlet |
|
63 def do_GET(req, res) |
|
64 res['Content-Type'] = 'text/html' |
|
65 res.body = File.open("index.html").readlines.join("\n") |
|
66 end |
|
67 end |
|
68 |
|
69 |
|
70 |
|
71 s.mount("/iexploder.cgi", IEServlet) |
|
72 s.mount("/", IEForm) |
|
73 trap("INT") { s.shutdown } |
|
74 |
|
75 s.start |