v1.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. var express = require('express');
  2. var request = require('request');
  3. var router = express.Router();
  4. router.all('*', function(req, res, next) {
  5. // res.header("Access-Control-Allow-Origin", "*");
  6. // res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,Access-Control-Allow-Origin");
  7. // res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
  8. // res.header("X-Powered-By", '3.2.1');
  9. // res.header("Vary", "Origin");
  10. res.header("Content-Type", "application/json;charset=utf-8");
  11. next();
  12. });
  13. router.get('/', function(req, res, next) {
  14. var protocol = req.protocol;
  15. var host = req.hostname;
  16. var ip = req.ip;
  17. var ref = req.get('reference');
  18. var originalUrl = req.originalUrl;
  19. if (originalUrl == /v1/) {
  20. ip2address(ip,function(data){
  21. var params = {
  22. code:200,
  23. ip:ip,
  24. info: 'Please Set URL Like This: ' + protocol + '://' + host + '/v1/?url=http[s]://YourWantProxyUrl.com'
  25. };
  26. if(data){
  27. params['location']='来自'+data.area+data.location;
  28. }
  29. return res.send(params);
  30. });
  31. }else{
  32. var url = originalUrl.replace('/v1/?url=', '');
  33. url = url.indexOf('?') === -1 ? url.replace('&', '?') : url;
  34. console.log('------------------log start---------------');
  35. console.log('date:'+new Date());
  36. console.log('ip:' + ip);
  37. console.log('ref:' + ref);
  38. console.log('path:' + req.path);
  39. console.log('req:' + url);
  40. console.log('------------------log end---------------');
  41. getJSON(url, function(data) {
  42. if (req.query.callback) {
  43. return res.jsonp(data);
  44. } else {
  45. return res.send(data);
  46. }
  47. });
  48. }
  49. });
  50. function getJSON(url, callback, next) {
  51. request(url, function(err, res, body) {
  52. if (!err && res.statusCode == 200) {
  53. callback && callback(body);
  54. } else {
  55. console.log(err);
  56. }
  57. });
  58. }
  59. function ip2address(ip,callback){
  60. request('http://apis.juhe.cn/ip/ip2addr?ip='+ip+'&key=28c0a6a5eb9cca3f38bc5877a83c9868', function(err, res, body) {
  61. if (!err && res.statusCode == 200) {
  62. body = JSON.parse(body);
  63. callback && callback(body['result']);
  64. } else {
  65. console.log(' / request info:'+err);
  66. callback && callback();
  67. }
  68. });
  69. }
  70. module.exports = router;