#!/usr/bin/env ruby
require 'net/http'
+require 'net/https'
require 'uri'
class NilClass
end
url = URI.parse(url);
- if url.scheme != "http"
+ if !["http", "https"].include? url.scheme
raise RuntimeError, "Unsupported scheme: #{url.scheme}"
end
+ use_ssl = url.scheme == 'https'
+
+ filename = url.path
path = url.path
if !ENV["QUERY_STRING"].empty?
path += "?" + ENV["QUERY_STRING"]
end
- return url.host, url.port, path
+ return url.host, url.port, use_ssl, filename, path
end
def createRequest(method, path)
req["Accept-Language"] = ENV["HTTP_ACCEPT_LANGUAGE"]
end
-def doRequest(req, host, port)
+def doRequest(req, host, port, use_ssl)
# Make the request
- res = Net::HTTP.start(host, port) do |http|
- http.request(req)
- end
+ http = Net::HTTP.new(host, port)
+ http.use_ssl = use_ssl
+ res = http.request(req)
# Tweak the headers a little
res.delete("transfer-encoding")
print res.body
end
+def writeFile(res, filename, outputDir)
+ filename = filename.split("/")[-1]
+ File.open("#{outputDir}/#{filename}", 'w') {|f| f.write(res.body) }
+end
+
def debug(msg)
File.open("/tmp/debuglog.txt", "a") { |f|
f << Time.new.to_s + " " + msg + "\n"
}
end
-def proxyTo(basePath, ffHeader=True)
- host, port, path = getParams(basePath)
+def proxyTo(basePath, ffHeader=True, outputDir=None)
+ host, port, use_ssl, filename, path = getParams(basePath)
req = createRequest(ENV["REQUEST_METHOD"], path)
insertHeaders(req, ffHeader)
- res = doRequest(req, host, port)
+ res = doRequest(req, host, port, use_ssl)
+ writeFile(res, filename, outputDir)
printResult(res)
end