lighttpd_pathinfo_fix 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,15 +3,23 @@
3
3
  # This middleware fixes this issue. This is also
4
4
  # modified to account for the case when SCRIPT_NAME is the name of the 404 script
5
5
  class LighttpdPathinfoFix
6
- VERSION = '1.0.1'
6
+ VERSION = '1.0.2'
7
+ DBG = 'DEBUG_LIGHTTPD_PATH_INFO_FIX'
7
8
 
8
9
  def initialize(app)
9
10
  @app = app
10
11
  end
11
12
 
12
13
  def call(env)
13
- return @app.call(env) unless env["FCGI_ROLE"] && (env["SERVER_SOFTWARE"] =~ /lightt/i)
14
- return @app.call(env) unless env["PATH_INFO"].nil? || env["PATH_INFO"].empty?
14
+ unless env["SERVER_SOFTWARE"].to_s =~ /lightt/i
15
+ inform("Skipping lighttpd pathinfo fix this since this is not a Lighttpd install")
16
+ return @app.call(env)
17
+ end
18
+
19
+ unless env["PATH_INFO"].to_s.empty?
20
+ inform("Skipping lighttpd pathinfo fix - PATH_INFO was #{env["PATH_INFO"]}")
21
+ return @app.call(env)
22
+ end
15
23
 
16
24
  # Retreive the actual URI
17
25
  uri, qs = env["REQUEST_URI"].to_s.split('?')
@@ -19,7 +27,16 @@ class LighttpdPathinfoFix
19
27
  # Ensure URI has a leading slash
20
28
  uri = "/#{uri}" unless uri =~ /^\//
21
29
  munged_env = env.merge("PATH_INFO" => uri, "QUERY_STRING" => qs, "SCRIPT_NAME" => "")
30
+ inform("Munged PATH_INFO to be #{uri}")
22
31
 
23
32
  @app.call(munged_env)
24
33
  end
34
+
35
+ private
36
+
37
+ def inform(msg)
38
+ if ENV[DBG]
39
+ File.open("/tmp/lighttpd_pathinfo_fix.log", "w") {|f| f.write(msg) }
40
+ end
41
+ end
25
42
  end
@@ -1,4 +1,5 @@
1
1
  require "test/unit"
2
+ require "stringio"
2
3
  require "lighttpd_pathinfo_fix"
3
4
  require "flexmock"
4
5
  require "flexmock/test_unit"
@@ -73,4 +74,25 @@ class TestLighttpdPathinfoFix < Test::Unit::TestCase
73
74
  @fix.call(source)
74
75
  end
75
76
 
77
+ def test_writes_to_logfile
78
+ debug_var = 'DEBUG_LIGHTTPD_PATH_INFO_FIX'
79
+ # FINISH ME
80
+ flunk
81
+ end
82
+
83
+ def test_root_path_properly_munged_even_without_fcgi_role
84
+ source = {"SERVER_SOFTWARE"=>"lighttpd/1.4.19",
85
+ "SCRIPT_NAME"=>"/config.ru", "PATH_INFO"=>"",
86
+ "SCRIPT_FILENAME"=>"/Code/apps/flame_bacula_search/config.ru",
87
+ "DOCUMENT_ROOT"=>"/Code/apps/flame_bacula_search",
88
+ "REQUEST_URI"=>"/?foo=bar", "REDIRECT_URI"=>"/config.ru", "QUERY_STRING"=>"", "REQUEST_PATH"=>"/"}
89
+ dest = {"SERVER_SOFTWARE"=>"lighttpd/1.4.19",
90
+ "SCRIPT_NAME"=>"", "PATH_INFO"=>"/", "SCRIPT_FILENAME"=>"/Code/apps/flame_bacula_search/config.ru",
91
+ "DOCUMENT_ROOT"=>"/Code/apps/flame_bacula_search", "REQUEST_URI"=>"/?foo=bar",
92
+ "REDIRECT_URI"=>"/config.ru", "QUERY_STRING"=>"foo=bar", "REQUEST_PATH"=>"/"}
93
+
94
+ @app.should_receive(:call).with(dest).once
95
+ @fix.call(source)
96
+ end
97
+
76
98
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: lighttpd_pathinfo_fix
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.1
5
+ version: 1.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Julik Tarkhanov
@@ -10,7 +10,8 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-04 00:00:00 Z
13
+ date: 2011-07-18 00:00:00 +02:00
14
+ default_executable:
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: flexmock
@@ -29,9 +30,9 @@ dependencies:
29
30
  requirement: &id002 !ruby/object:Gem::Requirement
30
31
  none: false
31
32
  requirements:
32
- - - ">="
33
+ - - ~>
33
34
  - !ruby/object:Gem::Version
34
- version: 2.9.4
35
+ version: "2.10"
35
36
  type: :development
36
37
  version_requirements: *id002
37
38
  description: |-
@@ -57,6 +58,7 @@ files:
57
58
  - lib/lighttpd_pathinfo_fix.rb
58
59
  - test/test_lighttpd_pathinfo_fix.rb
59
60
  - .gemtest
61
+ has_rdoc: true
60
62
  homepage: http://github.com/julik/lighttpd_pathinfo_fix
61
63
  licenses: []
62
64
 
@@ -81,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
83
  requirements: []
82
84
 
83
85
  rubyforge_project: lighttpd_pathinfo_fix
84
- rubygems_version: 1.8.5
86
+ rubygems_version: 1.6.2
85
87
  signing_key:
86
88
  specification_version: 3
87
89
  summary: This middleware fixes the lighttpd PATH_INFO for apps mounted at / in a way that is compatible with everything