mongrel2 0.42.0 → 0.43.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 67b350991e9a1fb755ab31a976e2ed25cf892834
4
- data.tar.gz: 47b3e6e4899b4e0264f3e7e942403c1e76c0c088
3
+ metadata.gz: 12160066fe026f98304d28971ff0b2e226fd79e9
4
+ data.tar.gz: 0139d54e247c836355752a2e83f30d5242b963cc
5
5
  SHA512:
6
- metadata.gz: 31834138627739c658fb0835498b32dafac43ff4eaa442f266193a875638accea82e0b97392aaa947d0bdd161e330ba44d8cc6ee3efb72444531e946266843a2
7
- data.tar.gz: 3d526fb3b48882ca19667eef7bf9e4c8d27e904053b9e461cb847274616c0ccab0c3f46fb24e74cd0558f9719d656af43434a19f8a0fc0aa1e1ab5592440d022
6
+ metadata.gz: 920463a4faef21f95e5c59acb5d0711dbca704c3a58ca1d58fe7c2e441fab2066acf9e9845d807d28fce13e8ad6aae7f952ae841f33a0629ad02e937b0ebf7c9
7
+ data.tar.gz: 1b8f9649334fafabeac082c4756e300983ea3edbb3138a1e7f46beae032269045bd3606d4df00175dea17a0564ebb7f3665da1ca037b9653472e072e25db870a
@@ -1 +1,2 @@
1
- '�Άԇ�sރ$�~E����
1
+ '�����ѲH& ٔ���XUO$M<
2
+ �jB�wR*�q��̓�$cS���KbSj%��$��Ii<tx��։�m����RhҬC.®p�5�Xą6���&� !��(�:�����]��;~����!��E��K��2^ڊ�Q��>W��#��8������HA�O8�r���ח0 �+��=+��k+<��UȊHR=vS��y�^r�;#0��?I�8�O*��K�y�u�|zr�w$>��������:/�۸Z�3�_a��
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,10 @@
1
+ == v0.43.0 [2014-12-17] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ - Add a Mongrel2::Request#server_chroot
4
+ Used to qualify filesystem paths relative to Mongrel's chroot for
5
+ sendfile, async upload, etc.
6
+
7
+
1
8
  == v0.42.0 [2014-08-27] Michael Granger <ged@FaerieMUD.org>
2
9
 
3
10
  Add support for sending extended replies.
@@ -25,10 +25,10 @@ module Mongrel2
25
25
  abort "\n\n>>> Mongrel2 requires Ruby 1.9.2 or later. <<<\n\n" if RUBY_VERSION < '1.9.2'
26
26
 
27
27
  # Library version constant
28
- VERSION = '0.42.0'
28
+ VERSION = '0.43.0'
29
29
 
30
30
  # Version-control revision constant
31
- REVISION = %q$Revision: b8be09d1fd14 $
31
+ REVISION = %q$Revision: dfce5a80c5bf $
32
32
 
33
33
 
34
34
  require 'mongrel2/constants'
@@ -5,6 +5,9 @@ require 'mongrel2/config' unless defined?( Mongrel2::Config )
5
5
 
6
6
  # Mongrel2 Route configuration class
7
7
  class Mongrel2::Config::Route < Mongrel2::Config( :route )
8
+ extend Loggability
9
+
10
+ log_to :mongrel2
8
11
 
9
12
  ### As of Mongrel2/1.8.0:
10
13
  # CREATE TABLE route (id INTEGER PRIMARY KEY,
@@ -18,6 +21,8 @@ class Mongrel2::Config::Route < Mongrel2::Config( :route )
18
21
  ### Return the Route that corresponds to the given +request+.
19
22
  def self::for_request( request )
20
23
  pattern = request.headers.pattern
24
+ self.log.debug "Searching for the route for the path %p in %p" %
25
+ [ pattern, self.all ]
21
26
  return self.filter( path: pattern ).first
22
27
  end
23
28
 
@@ -190,12 +190,8 @@ class Mongrel2::Request
190
190
  raise Mongrel2::UploadError, "invalid upload: upload headers don't match" unless
191
191
  self.upload_headers_match?
192
192
 
193
- route = Mongrel2::Config::Route.for_request( self ) or
194
- raise Mongrel2::UploadError, "couldn't find the route config for %s" % [ self ]
195
- server = route.host.server
196
-
197
193
  relpath = Pathname( self.headers.x_mongrel2_upload_done )
198
- chrooted = server.chroot_path + relpath
194
+ chrooted = self.server_chroot + relpath
199
195
 
200
196
  if chrooted.exist?
201
197
  return chrooted
@@ -203,13 +199,27 @@ class Mongrel2::Request
203
199
  return relpath
204
200
  else
205
201
  self.log.error "uploaded body %s not found: tried relative to cwd and server chroot (%s)" %
206
- [ relpath, server.chroot ]
202
+ [ relpath, chrooted ]
207
203
  raise Mongrel2::UploadError,
208
204
  "couldn't find the path to uploaded body."
209
205
  end
210
206
  end
211
207
 
212
208
 
209
+ ### Return the chroot directory of the mongrel2 daemon that received this request as
210
+ ### a Pathname.
211
+ def server_chroot
212
+ route = Mongrel2::Config::Route.for_request( self ) or
213
+ raise Mongrel2::UploadError, "couldn't find the route config for %s" % [ self ]
214
+ server = route.host.server
215
+
216
+ path = server.chroot
217
+ path = '/' if path.empty?
218
+
219
+ return Pathname( path )
220
+ end
221
+
222
+
213
223
  ### Returns +true+ if this request is an 'asynchronous upload started' notification.
214
224
  def upload_started?
215
225
  return self.headers.member?( :x_mongrel2_upload_start ) &&
@@ -19,12 +19,28 @@ require 'mongrel2/request'
19
19
  describe Mongrel2::Request do
20
20
 
21
21
  before( :all ) do
22
- setup_logging()
22
+ setup_config_db()
23
+
24
+ # Set up a test server config so the request can find the server's chroot
25
+ server 'specs' do
26
+ default_host 'localhost'
27
+ access_log 'access.log'
28
+ error_log 'error.log'
29
+ chroot Dir.tmpdir
30
+ pid_file '/var/run/mongrel2.pid'
31
+ port 8113
32
+
33
+ host 'localhost' do
34
+ route '/form', handler( 'tcp://127.0.0.1:9900', 'upload-handler' )
35
+ route TEST_JSON_PATH, handler( 'tcp://127.0.0.1:9902', 'json-handler' )
36
+ end
37
+ end
38
+
23
39
  @factory = Mongrel2::RequestFactory.new( route: '/form' )
24
40
  end
25
41
 
26
- after( :all ) do
27
- reset_logging()
42
+ before( :each ) do
43
+ Mongrel2::Config::Server.first.update( chroot: Dir.tmpdir )
28
44
  end
29
45
 
30
46
 
@@ -125,6 +141,19 @@ describe Mongrel2::Request do
125
141
  expect( @req.remote_ip.to_s ).to eq( '127.0.0.1' )
126
142
  end
127
143
 
144
+ it "can look up the chroot directory of the server the request is from" do
145
+ Mongrel2::Config::Server.first.update( chroot: '/usr/local/www' )
146
+ expect( @req.server_chroot ).to be_a( Pathname )
147
+ expect( @req.server_chroot.to_s ).to eq( '/usr/local/www' )
148
+ end
149
+
150
+
151
+ it "returns '/' as the chroot directory if the server isn't chrooted" do
152
+ Mongrel2::Config::Server.first.update( chroot: '' )
153
+ expect( @req.server_chroot ).to be_a( Pathname )
154
+ expect( @req.server_chroot.to_s ).to eq( '/' )
155
+ end
156
+
128
157
  end
129
158
 
130
159
 
@@ -153,6 +182,7 @@ describe Mongrel2::Request do
153
182
 
154
183
  end
155
184
 
185
+
156
186
  describe "framework support" do
157
187
 
158
188
  before( :all ) do
@@ -207,24 +237,6 @@ describe Mongrel2::Request do
207
237
 
208
238
  describe "async upload support" do
209
239
 
210
- before( :all ) do
211
- setup_config_db()
212
-
213
- # Set up a test server config so the request can find the server's chroot
214
- server 'specs' do
215
- default_host 'localhost'
216
- access_log 'access.log'
217
- error_log 'error.log'
218
- chroot Dir.tmpdir
219
- pid_file '/var/run/mongrel2.pid'
220
- port 8113
221
-
222
- host 'localhost' do
223
- route '/form', handler( TEST_SEND_SPEC, 'upload-handler', TEST_RECV_SPEC )
224
- end
225
- end
226
- end
227
-
228
240
  before( :each ) do
229
241
  @spoolfile = Tempfile.new( 'mongrel2.upload', Dir.tmpdir )
230
242
  @spoolfile.print( File.read(__FILE__) )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongrel2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.42.0
4
+ version: 0.43.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Granger
@@ -30,7 +30,7 @@ cert_chain:
30
30
  c7ZKPJcWBv0sm81+FCZXNACn2f9jfF8OQinxVs0O052KbGuEQaaiGIYeuuwQE2q6
31
31
  ggcrPfcYeTwWlfZPu2LrBg==
32
32
  -----END CERTIFICATE-----
33
- date: 2014-08-27 00:00:00.000000000 Z
33
+ date: 2014-12-17 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: sequel
@@ -276,14 +276,14 @@ dependencies:
276
276
  requirements:
277
277
  - - "~>"
278
278
  - !ruby/object:Gem::Version
279
- version: '3.12'
279
+ version: '3.13'
280
280
  type: :development
281
281
  prerelease: false
282
282
  version_requirements: !ruby/object:Gem::Requirement
283
283
  requirements:
284
284
  - - "~>"
285
285
  - !ruby/object:Gem::Version
286
- version: '3.12'
286
+ version: '3.13'
287
287
  description: |-
288
288
  Ruby-Mongrel2 is a complete Ruby connector for Mongrel2[http://mongrel2.org/].
289
289
 
@@ -412,7 +412,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
412
412
  version: '0'
413
413
  requirements: []
414
414
  rubyforge_project:
415
- rubygems_version: 2.2.2
415
+ rubygems_version: 2.4.5
416
416
  signing_key:
417
417
  specification_version: 4
418
418
  summary: Ruby-Mongrel2 is a complete Ruby connector for Mongrel2[http://mongrel2.org/]
metadata.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
- ��~v���<+�`f�� � 0�*Ɏ��� ��� 7�z�#K�(��<Ca&�9��'E�B$��UZ�Yb$ �?�•��Z͍�Y:o�A�
2
- V6K�>CrT�:q�� �?���~���j�֎�u��&������8&EB��Y�<�)?[��;�R*5���b��� �ə��z G77^��X3�o �)Կe���C��!z��8ٝ�7 B頢��?�o�����Ĕ�@�u��Y���t{3 �V������L��C
1
+ *��/E������byu�8=�J�>���`O���]��k
2
+ eY�I&p#�wos�ոfx�� `�nR߼���-��>wy"9`��9������ky&�>�BIm��baVoX���m��5[-����S