v1.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. var express = require('express');
  2. var request = require('request');
  3. var router = express.Router();
  4. router.get('/*', function(req, res, next) {
  5. getJSON(req, res, next);
  6. });
  7. router.post('/*', function(req, res, next) {
  8. getJSON(req, res, next);
  9. });
  10. function getJSON(req, res, next) {
  11. let ip = req.ip.replace(/\:\:ffff\:/, '').replace(/\:\:1/, '127.0.0.1');
  12. let host = req.hostname;
  13. let protocol = req.protocol;
  14. let originalUrl = req.originalUrl;
  15. let url = req.query.url || req.body.url;
  16. let callback = req.query.callback || req.body.callback;
  17. let params = req.body;
  18. let output = {
  19. data: {
  20. IP: ip,
  21. Info: 'Please Set URL Like This: ' + protocol + '://' + host + '/v1/?url=http[s]://YourWantProxyUrl.Com'
  22. },
  23. status: {
  24. code: 200,
  25. massage: ''
  26. }
  27. };
  28. if (url) {
  29. if (/\?url\=/.test(originalUrl)) {
  30. url = originalUrl.split('url=')[1];
  31. }
  32. if (params) {
  33. let temp = [];
  34. for (let i in params) {
  35. temp.push('&' + i + '=' + params[i]);
  36. }
  37. url += temp.join('');
  38. }
  39. url = url.indexOf('?') === -1 ? url.replace(/\&/, '?') : url;
  40. url = /^(http|https)\:\/\//.test(url) ? url : 'http://' + url;
  41. url = url.replace(/\&callback\=(\w+)/, '');
  42. request(url, function(err, response, body) {
  43. try {
  44. body = JSON.parse(body);
  45. } catch (e) {
  46. output.status = {
  47. code: -1
  48. };
  49. }
  50. if (!err && response.statusCode == 200) {
  51. output = body;
  52. } else {
  53. output = {
  54. data: {},
  55. status: {
  56. code: -1,
  57. message: err || 'Something bad happend.'
  58. }
  59. };
  60. }
  61. if (callback) {
  62. res.jsonp(output);
  63. } else {
  64. res.json(output);
  65. }
  66. });
  67. } else {
  68. if (callback) {
  69. res.jsonp(output);
  70. } else {
  71. res.json(output);
  72. }
  73. }
  74. }
  75. module.exports = router;