Description:
git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@227 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

r108:79cec9e5ddcb - - 2 files changed: 39 inserted, 2 deleted

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