Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var url = require('url')
- , http = require('http')
- , path = require('path')
- , Hash = require('traverse/hash')
- , port = 3000
- try {
- var util = require('util')
- } catch(e) {
- var util = require('utils')
- }
- function parseurl(urlstr) {
- var defaults = {
- protocol: 'http:'
- , port: 80
- , search: ''
- , pathname: ''
- , secure: false
- }
- if (urlstr.match(/^https:/)) {
- defaults.port = 443
- }
- var returl = Hash(defaults).merge(url.parse(urlstr)).end
- if (returl.protocol == 'https') {
- returl.secure = true
- }
- return returl
- }
- function parseparams(urlstr) {
- return url.parse(urlstr, true).query
- }
- if (process.argv.length > 2) {
- port = Number(process.argv[2])
- }
- console.log('starting on port '+port)
- var server = http.createServer(function(request, response) {
- try {
- var params = parseparams(request.url)
- , requrl = parseurl(params.url)
- , proxy_client = http.createClient(requrl.port, requrl.hostname, requrl.secure)
- , proxy_request = proxy_client.request(
- 'GET'
- , requrl.pathname+requrl.search
- , {'User-Agent': 'Embedly', 'Host': requrl.hostname})
- proxy_request.end()
- proxy_request.on('response', function(proxy_response) {
- try {
- response.writeHead(proxy_response.statusCode, proxy_response.headers)
- proxy_response.on('data', function(chunk) {
- try {
- response.write(chunk)
- } catch(e) {}
- })
- proxy_response.on('end', function() {
- response.end()
- })
- proxy_response.on('end', function() {
- response.end()
- })
- } catch(e) {
- response.end()
- }
- })
- } catch(e) {
- response.writeHead(500, {'Content-Length': -1})
- response.end()
- }
- }).listen(port)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement