Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. var url = require('url')
  2. , http = require('http')
  3. , path = require('path')
  4. , Hash = require('traverse/hash')
  5. , port = 3000
  6.  
  7. try {
  8. var util = require('util')
  9. } catch(e) {
  10. var util = require('utils')
  11. }
  12.  
  13. function parseurl(urlstr) {
  14. var defaults = {
  15. protocol: 'http:'
  16. , port: 80
  17. , search: ''
  18. , pathname: ''
  19. , secure: false
  20. }
  21. if (urlstr.match(/^https:/)) {
  22. defaults.port = 443
  23. }
  24. var returl = Hash(defaults).merge(url.parse(urlstr)).end
  25. if (returl.protocol == 'https') {
  26. returl.secure = true
  27. }
  28. return returl
  29. }
  30.  
  31. function parseparams(urlstr) {
  32. return url.parse(urlstr, true).query
  33. }
  34.  
  35. if (process.argv.length > 2) {
  36. port = Number(process.argv[2])
  37. }
  38. console.log('starting on port '+port)
  39.  
  40. var server = http.createServer(function(request, response) {
  41. try {
  42. var params = parseparams(request.url)
  43. , requrl = parseurl(params.url)
  44. , proxy_client = http.createClient(requrl.port, requrl.hostname, requrl.secure)
  45. , proxy_request = proxy_client.request(
  46. 'GET'
  47. , requrl.pathname+requrl.search
  48. , {'User-Agent': 'Embedly', 'Host': requrl.hostname})
  49.  
  50. proxy_request.end()
  51. proxy_request.on('response', function(proxy_response) {
  52. try {
  53. response.writeHead(proxy_response.statusCode, proxy_response.headers)
  54. proxy_response.on('data', function(chunk) {
  55. try {
  56. response.write(chunk)
  57. } catch(e) {}
  58. })
  59. proxy_response.on('end', function() {
  60. response.end()
  61. })
  62.  
  63. proxy_response.on('end', function() {
  64. response.end()
  65. })
  66. } catch(e) {
  67. response.end()
  68. }
  69. })
  70. } catch(e) {
  71. response.writeHead(500, {'Content-Length': -1})
  72. response.end()
  73. }
  74. }).listen(port)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement