]> code.delx.au - cgiproxy/blobdiff - ruby/proxy.rb
Made the x-forwarded-for header optional
[cgiproxy] / ruby / proxy.rb
index 4eb744b6227540b04862edaf61ff882209b6f9a0..11b14d2bfa3489be0a300e5ca98d5c1bb7b272dc 100755 (executable)
@@ -40,8 +40,10 @@ def createRequest(method, path)
        return req
 end
 
-def insertHeaders(req)
-       req["X-Forwarded-For"] = ENV["REMOTE_ADDR"]
+def insertHeaders(req, ffHeader)
+       if ffHeader
+               req["X-Forwarded-For"] = ENV["REMOTE_ADDR"]
+       end
        req["Host"] = ENV["HTTP_HOST"]
        req["Cookie"] = ENV["HTTP_COOKIE"]
        req["Referer"] = ENV["HTTP_REFERER"]
@@ -71,8 +73,13 @@ def doRequest(req, host, port)
 end
 
 def printResult(res)
-       res.each_capitalized do |key, value|
-               print "#{key}: #{value}\r\n"
+       if res.code != "200"
+               res["Status"] = "#{res.code} #{res.message}"
+       end
+       res.each_capitalized_name do |key|
+               res.get_fields(key).each do |value|
+                       print "#{key}: #{value}\r\n"
+               end
        end
        print "\r\n"
        print res.body
@@ -84,10 +91,10 @@ def debug(msg)
        }
 end
 
-def proxyTo(basePath)
+def proxyTo(basePath, ffHeader=True)
        host, port, path = getParams(basePath)
        req = createRequest(ENV["REQUEST_METHOD"], path)
-       insertHeaders(req)
+       insertHeaders(req, ffHeader)
        res = doRequest(req, host, port)
        printResult(res)
 end