strelka 0.0.1.pre.265 → 0.0.1.pre.279
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/ChangeLog +122 -1
- data/Manifest.txt +14 -1
- data/README.rdoc +1 -1
- data/Rakefile +8 -8
- data/bin/strelka +2 -2
- data/examples/Procfile +1 -0
- data/examples/apps/upload-demo +74 -0
- data/examples/config.yml +1 -1
- data/examples/gen-config.rb +6 -2
- data/examples/static/examples.html +1 -0
- data/examples/templates/upload-form.tmpl +17 -0
- data/examples/templates/upload-success.tmpl +13 -0
- data/lib/strelka/app.rb +23 -1
- data/lib/strelka/app/restresources.rb +1 -1
- data/lib/strelka/app/templating.rb +4 -2
- data/lib/strelka/exceptions.rb +3 -0
- data/lib/strelka/httprequest.rb +18 -2
- data/lib/strelka/mixins.rb +1 -1
- data/lib/strelka/multipartparser.rb +358 -0
- data/lib/strelka/paramvalidator.rb +1 -0
- data/spec/data/forms/2_images.form +0 -0
- data/spec/data/forms/singleupload.form +12 -0
- data/spec/data/forms/testform.form +40 -0
- data/spec/data/forms/testform_bad.form +20 -0
- data/spec/data/forms/testform_badheaders.form +3 -0
- data/spec/data/forms/testform_metadataonly.form +32 -0
- data/spec/data/forms/testform_msie.form +12 -0
- data/spec/data/forms/testform_multivalue.form +48 -0
- data/spec/data/forms/testform_truncated_metadata.form +12 -0
- data/spec/lib/helpers.rb +17 -3
- data/spec/strelka/app_spec.rb +11 -0
- data/spec/strelka/mixins_spec.rb +5 -0
- data/spec/strelka/multipartparser_spec.rb +169 -0
- metadata +44 -31
- metadata.gz.sig +0 -0
- data/examples/.env +0 -4
data.tar.gz.sig
CHANGED
|
Binary file
|
data/ChangeLog
CHANGED
|
@@ -1,5 +1,126 @@
|
|
|
1
|
+
2012-07-06 Michael Granger <ged@FaerieMUD.org>
|
|
2
|
+
|
|
3
|
+
* .rvm.gems, Rakefile, lib/strelka/app/templating.rb:
|
|
4
|
+
Set encoding on loaded templates.
|
|
5
|
+
|
|
6
|
+
- bump Inversion dependency for encoding support
|
|
7
|
+
- Use the default_internal encoding or UTF-8 if that isn't set as the
|
|
8
|
+
encoding of templates loaded by the :templating plugin.
|
|
9
|
+
[4f7bb0f3a8f7] [tip]
|
|
10
|
+
|
|
11
|
+
* Manifest.txt:
|
|
12
|
+
Add multipart-form support files to the manifest
|
|
13
|
+
[b3367292cf3f]
|
|
14
|
+
|
|
15
|
+
* bin/strelka:
|
|
16
|
+
Fix the wording of the header from the "start" command in
|
|
17
|
+
bin/strelka
|
|
18
|
+
[5d677093466d]
|
|
19
|
+
|
|
20
|
+
2012-07-03 Michael Granger <ged@FaerieMUD.org>
|
|
21
|
+
|
|
22
|
+
* lib/strelka/paramvalidator.rb, manual/src/starting.page,
|
|
23
|
+
manual/src/tutorial.page:
|
|
24
|
+
Documentation/manual updates
|
|
25
|
+
[75c75043ad29]
|
|
26
|
+
|
|
27
|
+
2012-07-03 Mahlon E. Smith <mahlon@martini.nu>
|
|
28
|
+
|
|
29
|
+
* manual/src/plugins.page:
|
|
30
|
+
First round documentation for 'Writing Your Own Strelka Plugin'
|
|
31
|
+
manual page.
|
|
32
|
+
[e1c56057be7a]
|
|
33
|
+
|
|
34
|
+
* .rvm.gems, Rakefile, manual/src/starting.page:
|
|
35
|
+
Fix bootstrap missing quote. Update mongrel2 dependency to 0.27.
|
|
36
|
+
[6ea74939d550]
|
|
37
|
+
|
|
38
|
+
2012-07-03 Michael Granger <ged@FaerieMUD.org>
|
|
39
|
+
|
|
40
|
+
* bin/strelka:
|
|
41
|
+
Make the default bin/strelka command "help"
|
|
42
|
+
[c82aa0ae98c9]
|
|
43
|
+
|
|
44
|
+
* README.rdoc:
|
|
45
|
+
Fix the command-line tool name
|
|
46
|
+
[b6ae193c24e9]
|
|
47
|
+
|
|
48
|
+
2012-06-27 Mahlon E. Smith <mahlon@martini.nu>
|
|
49
|
+
|
|
50
|
+
* lib/strelka/mixins.rb, spec/strelka/mixins_spec.rb:
|
|
51
|
+
Don't deep copy modules/classes.
|
|
52
|
+
[d6cf8e4ac02f]
|
|
53
|
+
|
|
54
|
+
2012-06-25 Michael Granger <ged@FaerieMUD.org>
|
|
55
|
+
|
|
56
|
+
* .hgignore, .rvm.gems, .tm_properties, Rakefile, examples/.env,
|
|
57
|
+
examples/Procfile, examples/apps/upload-demo, examples/config.yml,
|
|
58
|
+
examples/gen-config.rb, examples/static/examples.html,
|
|
59
|
+
examples/templates/upload-form.tmpl, examples/templates/upload-
|
|
60
|
+
success.tmpl, lib/strelka/app.rb, lib/strelka/exceptions.rb,
|
|
61
|
+
lib/strelka/httprequest.rb, lib/strelka/multipartparser.rb,
|
|
62
|
+
spec/data/forms/2_images.form, spec/data/forms/singleupload.form,
|
|
63
|
+
spec/data/forms/testform.form, spec/data/forms/testform_bad.form,
|
|
64
|
+
spec/data/forms/testform_badheaders.form,
|
|
65
|
+
spec/data/forms/testform_metadataonly.form,
|
|
66
|
+
spec/data/forms/testform_msie.form,
|
|
67
|
+
spec/data/forms/testform_multivalue.form,
|
|
68
|
+
spec/data/forms/testform_truncated_metadata.form,
|
|
69
|
+
spec/lib/helpers.rb, spec/strelka/app_spec.rb,
|
|
70
|
+
spec/strelka/multipartparser_spec.rb:
|
|
71
|
+
Added support for multipart/form-data entity bodies
|
|
72
|
+
|
|
73
|
+
- Add a multipart mime document parser, as well as support for
|
|
74
|
+
Mongrel2 asynchronous uploads.
|
|
75
|
+
- Hook up the multipart parser for form data of type 'multipart/form-
|
|
76
|
+
data'.
|
|
77
|
+
- Added an example of async upload and multipart/form-data to the
|
|
78
|
+
examples.
|
|
79
|
+
- Include the Ruby engine + version in the process name
|
|
80
|
+
[cfae502bcec1]
|
|
81
|
+
|
|
82
|
+
* spec/lib/helpers.rb:
|
|
83
|
+
Remove extra include from spec helpers
|
|
84
|
+
[abc12d87868e]
|
|
85
|
+
|
|
86
|
+
* .rvm.gems, Rakefile:
|
|
87
|
+
Bumping Loggability dependency
|
|
88
|
+
[6039fcf3a3e0]
|
|
89
|
+
|
|
90
|
+
2012-06-22 Michael Granger <ged@FaerieMUD.org>
|
|
91
|
+
|
|
92
|
+
* lib/strelka/httpresponse/negotiation.rb,
|
|
93
|
+
spec/strelka/httpresponse/negotiation_spec.rb:
|
|
94
|
+
Fix the entity body for negotiated responses.
|
|
95
|
+
[d2c4f8ac4e07]
|
|
96
|
+
|
|
97
|
+
* lib/strelka/httpresponse.rb, spec/strelka/httpresponse_spec.rb:
|
|
98
|
+
Don't append a charset for non text/* content-type headers
|
|
99
|
+
[4ad96d45bcc2]
|
|
100
|
+
|
|
101
|
+
2012-06-21 Michael Granger <ged@FaerieMUD.org>
|
|
102
|
+
|
|
103
|
+
* Rakefile:
|
|
104
|
+
Depend on mongrel2 0.25.0
|
|
105
|
+
[0f6b09255386]
|
|
106
|
+
|
|
107
|
+
* lib/strelka/app/negotiation.rb, lib/strelka/httprequest.rb,
|
|
108
|
+
lib/strelka/httpresponse.rb,
|
|
109
|
+
lib/strelka/httpresponse/negotiation.rb,
|
|
110
|
+
spec/strelka/app/errors_spec.rb,
|
|
111
|
+
spec/strelka/app/restresources_spec.rb,
|
|
112
|
+
spec/strelka/app/templating_spec.rb, spec/strelka/app_spec.rb,
|
|
113
|
+
spec/strelka/httpresponse/negotiation_spec.rb:
|
|
114
|
+
Mongrel2 stream API fixes
|
|
115
|
+
[6d267b848e8a]
|
|
116
|
+
|
|
1
117
|
2012-06-20 Michael Granger <ged@FaerieMUD.org>
|
|
2
118
|
|
|
119
|
+
* lib/strelka/httprequest/session.rb,
|
|
120
|
+
lib/strelka/httpresponse/session.rb:
|
|
121
|
+
Remove the session from the request when it's destroyed, too.
|
|
122
|
+
[e0f2e2a0e4b8]
|
|
123
|
+
|
|
3
124
|
* lib/strelka/httprequest/session.rb,
|
|
4
125
|
lib/strelka/httpresponse/session.rb, lib/strelka/session.rb,
|
|
5
126
|
lib/strelka/session/default.rb,
|
|
@@ -8,7 +129,7 @@
|
|
|
8
129
|
spec/strelka/session/default_spec.rb:
|
|
9
130
|
Fix session expiration for cookie-based persistance
|
|
10
131
|
* * * Conversion to stream-based Mongrel2 API
|
|
11
|
-
[7389c2f1e8e3]
|
|
132
|
+
[7389c2f1e8e3]
|
|
12
133
|
|
|
13
134
|
2012-06-20 Mahlon E. Smith <mahlon@martini.nu>
|
|
14
135
|
|
data/Manifest.txt
CHANGED
|
@@ -16,12 +16,12 @@ contrib/hoetemplate/data/project/templates/layout.tmpl.erb
|
|
|
16
16
|
contrib/hoetemplate/data/project/templates/top.tmpl.erb
|
|
17
17
|
contrib/hoetemplate/lib/file_name.rb.erb
|
|
18
18
|
contrib/hoetemplate/spec/file_name_spec.rb.erb
|
|
19
|
-
examples/.env
|
|
20
19
|
examples/Procfile
|
|
21
20
|
examples/apps/auth-demo
|
|
22
21
|
examples/apps/auth-demo2
|
|
23
22
|
examples/apps/hello-world
|
|
24
23
|
examples/apps/sessions-demo
|
|
24
|
+
examples/apps/upload-demo
|
|
25
25
|
examples/config.yml
|
|
26
26
|
examples/gen-config.rb
|
|
27
27
|
examples/static/examples.css
|
|
@@ -29,6 +29,8 @@ examples/static/examples.html
|
|
|
29
29
|
examples/templates/auth-form.tmpl
|
|
30
30
|
examples/templates/auth-success.tmpl
|
|
31
31
|
examples/templates/layout.tmpl
|
|
32
|
+
examples/templates/upload-form.tmpl
|
|
33
|
+
examples/templates/upload-success.tmpl
|
|
32
34
|
lib/strelka.rb
|
|
33
35
|
lib/strelka/app.rb
|
|
34
36
|
lib/strelka/app/auth.rb
|
|
@@ -57,6 +59,7 @@ lib/strelka/httpresponse.rb
|
|
|
57
59
|
lib/strelka/httpresponse/negotiation.rb
|
|
58
60
|
lib/strelka/httpresponse/session.rb
|
|
59
61
|
lib/strelka/mixins.rb
|
|
62
|
+
lib/strelka/multipartparser.rb
|
|
60
63
|
lib/strelka/paramvalidator.rb
|
|
61
64
|
lib/strelka/plugins.rb
|
|
62
65
|
lib/strelka/router.rb
|
|
@@ -66,6 +69,15 @@ lib/strelka/session.rb
|
|
|
66
69
|
lib/strelka/session/db.rb
|
|
67
70
|
lib/strelka/session/default.rb
|
|
68
71
|
spec/data/error.tmpl
|
|
72
|
+
spec/data/forms/2_images.form
|
|
73
|
+
spec/data/forms/singleupload.form
|
|
74
|
+
spec/data/forms/testform.form
|
|
75
|
+
spec/data/forms/testform_bad.form
|
|
76
|
+
spec/data/forms/testform_badheaders.form
|
|
77
|
+
spec/data/forms/testform_metadataonly.form
|
|
78
|
+
spec/data/forms/testform_msie.form
|
|
79
|
+
spec/data/forms/testform_multivalue.form
|
|
80
|
+
spec/data/forms/testform_truncated_metadata.form
|
|
69
81
|
spec/data/layout.tmpl
|
|
70
82
|
spec/data/main.tmpl
|
|
71
83
|
spec/lib/constants.rb
|
|
@@ -95,6 +107,7 @@ spec/strelka/httpresponse/negotiation_spec.rb
|
|
|
95
107
|
spec/strelka/httpresponse/session_spec.rb
|
|
96
108
|
spec/strelka/httpresponse_spec.rb
|
|
97
109
|
spec/strelka/mixins_spec.rb
|
|
110
|
+
spec/strelka/multipartparser_spec.rb
|
|
98
111
|
spec/strelka/paramvalidator_spec.rb
|
|
99
112
|
spec/strelka/plugins_spec.rb
|
|
100
113
|
spec/strelka/router/default_spec.rb
|
data/README.rdoc
CHANGED
|
@@ -135,7 +135,7 @@ Here's a tentative list of what kinds of stuff we have planned:
|
|
|
135
135
|
|
|
136
136
|
You'll be able to package up your applications as Rubygems for easy deployment.
|
|
137
137
|
The Strelka::App class already supports application discovery, but we
|
|
138
|
-
want to hook that up to the '
|
|
138
|
+
want to hook that up to the 'strelka' command line tool so you can install
|
|
139
139
|
and run them with a minimum of manual monkeying around with directories,
|
|
140
140
|
migrations, etc.
|
|
141
141
|
|
data/Rakefile
CHANGED
|
@@ -22,17 +22,17 @@ hoespec = Hoe.spec 'strelka' do
|
|
|
22
22
|
|
|
23
23
|
self.developer 'Michael Granger', 'ged@FaerieMUD.org'
|
|
24
24
|
|
|
25
|
-
self.dependency '
|
|
25
|
+
self.dependency 'configurability', '~> 1.2'
|
|
26
|
+
self.dependency 'foreman', '~> 0.47'
|
|
27
|
+
self.dependency 'formvalidator', '~> 0.1'
|
|
26
28
|
self.dependency 'highline', '~> 1.6'
|
|
29
|
+
self.dependency 'inversion', '~> 0.11'
|
|
30
|
+
self.dependency 'loggability', '~> 0.4'
|
|
31
|
+
self.dependency 'mongrel2', '~> 0.28'
|
|
32
|
+
self.dependency 'pluginfactory', '~> 1.0'
|
|
27
33
|
self.dependency 'sysexits', '~> 1.0'
|
|
28
|
-
self.dependency '
|
|
29
|
-
self.dependency 'inversion', '~> 0.10'
|
|
30
|
-
self.dependency 'mongrel2', '~> 0.25'
|
|
34
|
+
self.dependency 'trollop', '~> 1.16'
|
|
31
35
|
self.dependency 'uuidtools', '~> 2.1'
|
|
32
|
-
self.dependency 'configurability', '~> 1.0'
|
|
33
|
-
self.dependency 'pluginfactory', '~> 1.0'
|
|
34
|
-
self.dependency 'loggability', '~> 0.3'
|
|
35
|
-
self.dependency 'foreman', '~> 0.47'
|
|
36
36
|
|
|
37
37
|
self.dependency 'hoe-deveiate', '~> 0.1', :developer
|
|
38
38
|
self.dependency 'hoe-manualgen', '~> 0.3', :developer
|
data/bin/strelka
CHANGED
|
@@ -199,7 +199,7 @@ class Strelka::CLICommand
|
|
|
199
199
|
|
|
200
200
|
### Run the command with the specified +command+ and +args+.
|
|
201
201
|
def run( command, *args )
|
|
202
|
-
command ||= '
|
|
202
|
+
command ||= 'help'
|
|
203
203
|
cmd_method = nil
|
|
204
204
|
|
|
205
205
|
# Set the datadir override if it's given
|
|
@@ -291,7 +291,7 @@ class Strelka::CLICommand
|
|
|
291
291
|
|
|
292
292
|
header "Starting the %s app%s" % [
|
|
293
293
|
appname,
|
|
294
|
-
gemname == '' ? '' : " the #{gemname} gem"
|
|
294
|
+
gemname == '' ? '' : " from the #{gemname} gem"
|
|
295
295
|
]
|
|
296
296
|
fork do
|
|
297
297
|
self.log.debug " in the child."
|
data/examples/Procfile
CHANGED
|
@@ -4,5 +4,6 @@ helloworld: ../bin/strelka -D . -l warn -c config.yml start hello-world
|
|
|
4
4
|
auth: ../bin/strelka -D . -l warn -c config.yml start auth-demo
|
|
5
5
|
auth2: ../bin/strelka -D . -l warn -c config.yml start auth-demo2
|
|
6
6
|
sessions: ../bin/strelka -D . -l debug -c config.yml start sessions-demo
|
|
7
|
+
upload: ../bin/strelka -D . -l debug -c config.yml start upload-demo
|
|
7
8
|
# ws: ../bin/strelka -l info -c config.yml start ws-echo
|
|
8
9
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'strelka'
|
|
4
|
+
|
|
5
|
+
# An example of a file upload handler.
|
|
6
|
+
class UploadDemo < Strelka::App
|
|
7
|
+
|
|
8
|
+
# The route appid that will configure this app if no appid is specified
|
|
9
|
+
ID = 'upload-demo'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
plugins :templating, :routing, :parameters
|
|
13
|
+
|
|
14
|
+
default_type 'text/html'
|
|
15
|
+
|
|
16
|
+
layout 'templates/layout.tmpl'
|
|
17
|
+
templates \
|
|
18
|
+
form: 'templates/upload-form.tmpl',
|
|
19
|
+
success: 'templates/upload-success.tmpl'
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Show the form for any GET
|
|
23
|
+
get do |req|
|
|
24
|
+
return :form
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Show the upload for POST requests
|
|
29
|
+
post do |req|
|
|
30
|
+
req.params.add( :description, :string )
|
|
31
|
+
req.params.add( :uploadfile ) do |input|
|
|
32
|
+
if input.respond_to?( :filename ) && input.respond_to?( :content_type )
|
|
33
|
+
input
|
|
34
|
+
else
|
|
35
|
+
nil
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
unless req.content_type.start_with?( 'multipart/form-data' )
|
|
40
|
+
self.log.error "Not a multipart/form-data request?!"
|
|
41
|
+
finish_with HTTP::BAD_REQUEST,
|
|
42
|
+
"Expecting a mutlipart/form-data request, got: %p" % [ req.content_type ]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
unless req.params.okay?
|
|
46
|
+
self.log.error "Parameter validation error: %s" %
|
|
47
|
+
[ req.params.error_messages.join(', ') ]
|
|
48
|
+
finish_with HTTP::BAD_REQUEST,
|
|
49
|
+
"Form errors: %s" % [ req.params.error_messages.join(', ') ]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
self.log.debug "Successful upload of file %s." % [ req.params[:uploadfile].filename ]
|
|
53
|
+
|
|
54
|
+
tmpl = template :success
|
|
55
|
+
tmpl.upload = req.params[:uploadfile]
|
|
56
|
+
tmpl.description = req.params[:description]
|
|
57
|
+
|
|
58
|
+
return tmpl
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### Override the upload-started notification to allow spooled (asynchronous)
|
|
63
|
+
### uploads.
|
|
64
|
+
def handle_async_upload_start( request )
|
|
65
|
+
self.log.info "Asynchronous upload notice. Spooling entity body to %p" %
|
|
66
|
+
[ request.headers.x_mongrel_upload_start ]
|
|
67
|
+
return nil
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end # class UploadDemo
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# Run the app
|
|
74
|
+
UploadDemo.run if __FILE__ == $0
|
data/examples/config.yml
CHANGED
data/examples/gen-config.rb
CHANGED
|
@@ -22,7 +22,7 @@ server 'examples' do
|
|
|
22
22
|
chroot '/var/mongrel2'
|
|
23
23
|
pid_file '/run/mongrel2.pid'
|
|
24
24
|
|
|
25
|
-
bind_addr '
|
|
25
|
+
bind_addr '0.0.0.0'
|
|
26
26
|
port 8113
|
|
27
27
|
|
|
28
28
|
host 'localhost' do
|
|
@@ -34,6 +34,7 @@ server 'examples' do
|
|
|
34
34
|
route '/sessions', handler( 'tcp://127.0.0.1:9905', 'sessions-demo' )
|
|
35
35
|
route '/auth', handler( 'tcp://127.0.0.1:9910', 'auth-demo' )
|
|
36
36
|
route '/formauth', handler( 'tcp://127.0.0.1:9915', 'auth-demo2' )
|
|
37
|
+
route '/upload', handler( 'tcp://127.0.0.1:9925', 'upload-demo' )
|
|
37
38
|
route '/ws', handler( 'tcp://127.0.0.1:9920', 'ws-echo' )
|
|
38
39
|
|
|
39
40
|
end
|
|
@@ -42,7 +43,10 @@ end
|
|
|
42
43
|
|
|
43
44
|
setting "zeromq.threads", 1
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
setting 'limits.content_length', 8096
|
|
47
|
+
setting 'upload.temp_store', 'var/uploads/mongrel2.upload.XXXXXX'
|
|
48
|
+
|
|
49
|
+
mkdir_p 'var/uploads'
|
|
46
50
|
mkdir_p 'run'
|
|
47
51
|
mkdir_p 'logs'
|
|
48
52
|
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
<li><a href="/sessions">Sessions Demo</a> - Demo of the <code>:sessions</code> plugin.</li>
|
|
26
26
|
<li><a href="/auth">Auth Demo</a> - Demo of the <code>:auth</code> plugin.</li>
|
|
27
27
|
<li><a href="/formauth">Form Auth Demo</a> - Demo of the <code>:auth</code> plugin with the :errors plugin for auth failure management.</li>
|
|
28
|
+
<li><a href="/upload">Upload Demo</a> - Demo of <tt>multipart/form-data</tt> support, Mongrel2 async upload support for larger files.</li>
|
|
28
29
|
</ul>
|
|
29
30
|
|
|
30
31
|
</body>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?import request ?>
|
|
2
|
+
|
|
3
|
+
<?publish title ?>Upload/Multipart-FormData Demo<?end publish ?>
|
|
4
|
+
|
|
5
|
+
<form action="[?call request.uri ?]" method="post" accept-charset="utf-8" enctype="multipart/form-data">
|
|
6
|
+
|
|
7
|
+
<label for="uploadfile">Upload a file:</label>
|
|
8
|
+
<input type="file" name="uploadfile" value="" id="uploadfile-input">
|
|
9
|
+
|
|
10
|
+
<br />
|
|
11
|
+
|
|
12
|
+
<label for="description">Description</label>
|
|
13
|
+
<input type="text" name="description" value="" id="description-input">
|
|
14
|
+
|
|
15
|
+
<p><input type="submit" value="Upload →"></p>
|
|
16
|
+
</form>
|
|
17
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?import request ?>
|
|
2
|
+
|
|
3
|
+
<h2>Upload Successful</h2>
|
|
4
|
+
|
|
5
|
+
<p>You successfully uploaded a file: <tt><?call upload.filename ?></tt>
|
|
6
|
+
(<?call "%0.2fK" % upload.content_length / 1024.0 ?> of
|
|
7
|
+
'<?call upload.content_type ?>' data) with a description of
|
|
8
|
+
<tt><?escape description ?></tt></p>
|
|
9
|
+
|
|
10
|
+
<hr />
|
|
11
|
+
|
|
12
|
+
<?include upload-form.tmpl ?>
|
|
13
|
+
|
data/lib/strelka/app.rb
CHANGED
|
@@ -246,7 +246,7 @@ class Strelka::App < Mongrel2::Handler
|
|
|
246
246
|
|
|
247
247
|
### Run the app -- overriden to set the process name to something interesting.
|
|
248
248
|
def run
|
|
249
|
-
procname = "%p %s" % [ self.class, self.conn ]
|
|
249
|
+
procname = "%s %s: %p %s" % [ RUBY_ENGINE, RUBY_VERSION, self.class, self.conn ]
|
|
250
250
|
$0 = procname
|
|
251
251
|
|
|
252
252
|
super
|
|
@@ -289,6 +289,28 @@ class Strelka::App < Mongrel2::Handler
|
|
|
289
289
|
end
|
|
290
290
|
|
|
291
291
|
|
|
292
|
+
### Handle uploads larger than the server's configured limit with a 413: Request Entity
|
|
293
|
+
### Too Large before dropping the connection.
|
|
294
|
+
def handle_async_upload_start( request )
|
|
295
|
+
status_info = { :status => HTTP::REQUEST_ENTITY_TOO_LARGE, :message => 'Request too large.' }
|
|
296
|
+
response = self.prepare_status_response( request, status_info )
|
|
297
|
+
response.headers.connection = 'close'
|
|
298
|
+
self.conn.reply( response )
|
|
299
|
+
|
|
300
|
+
explanation = "If you wish to handle requests like this, either set your server's "
|
|
301
|
+
explanation << "'limits.content_length' setting to a higher value than %d, or override " %
|
|
302
|
+
[ request.content_length ]
|
|
303
|
+
explanation << "#handle_async_upload_start."
|
|
304
|
+
|
|
305
|
+
self.log.warn "Async upload from %s dropped." % [ request.remote_ip ]
|
|
306
|
+
self.log.info( explanation )
|
|
307
|
+
|
|
308
|
+
self.conn.reply_close( request )
|
|
309
|
+
|
|
310
|
+
return nil
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
|
|
292
314
|
#########
|
|
293
315
|
protected
|
|
294
316
|
#########
|