Description:
git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@229 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r110:89e2f87ebc06 - - 1 file changed: 2 inserted, 2 deleted

@@ -1,39 +1,39
1 class SizeFilterHandler < Mongrel::HttpHandler
1 class SizeFilterHandler < Mongrel::HttpHandler
2
2
3 def initialize(options = {})
3 def initialize(options = {})
4 @max_size = options[:max_size] || -1
4 @max_size = options[:max_size] || -1
5 @redirect_url = options[:redirect_url]
5 @redirect_url = options[:redirect_url]
6 @request_notify = true
6 @request_notify = true
7 end
7 end
8
8
9 def request_begins(params)
9 def request_begins(params)
10 @request_too_large = false
10 @request_too_large = false
11
11
12 # Only operate on POST requests
12 # Only operate on POST requests
13 return unless params[Mongrel::Const::REQUEST_METHOD] == 'POST'
13 return unless params[Mongrel::Const::REQUEST_METHOD] == 'POST'
14
14
15 if params[Mongrel::Const::CONTENT_LENGTH]!=nil
15 if params[Mongrel::Const::CONTENT_LENGTH]!=nil
16 req_size = params[Mongrel::Const::CONTENT_LENGTH].to_i
16 req_size = params[Mongrel::Const::CONTENT_LENGTH].to_i
17 if @max_size!=-1 and req_size > @max_size
17 if @max_size!=-1 and req_size > @max_size
18 @request_too_large = true
18 @request_too_large = true
19 end
19 end
20 else
20 else
21 @request_too_large = true
21 @request_too_large = true
22 end
22 end
23 end
23 end
24
24
25 def process(request, response)
25 def process(request, response)
26 if @request_too_large
26 if @request_too_large
27 if @redirect_url != nil
27 if @redirect_url != nil
28 response.socket.write(Mongrel::Const::REDIRECT % @redirect_url)
28 response.socket.write(Mongrel::Const::REDIRECT % @redirect_url)
29 else
29 else
30 response.socket.write(Mongrel::Const::STATUS_FORMAT % [403, "Forbidden"])
30 response.socket.write(Mongrel::Const::STATUS_FORMAT % [403, "Forbidden"])
31 end
31 end
32 response.finished()
32 response.finished()
33 end
33 end
34 end
34 end
35 end
35 end
36
36
37 - uri "/", :handler => SizeFilterHandler.new(:max_size => 200_000,
37 + uri "/", :handler => SizeFilterHandler.new(:max_size => 2_100_000,
38 - :redirect_url => "/main/list"),
38 + :redirect_url => "/main/error"),
39 :in_front => true
39 :in_front => true
You need to be logged in to leave comments. Login now