v1.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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("Content-Type", "application/json;charset=utf-8");
  6. next();
  7. });
  8. router.get('/', function(req, res, next) {
  9. var protocol = req.protocol;
  10. var host = req.hostname;
  11. var ip = req.ip;
  12. var ref = req.get('reference');
  13. var originalUrl = req.originalUrl;
  14. if (originalUrl == /v1/) {
  15. ip2address(ip,function(data){
  16. var params = {
  17. code:200,
  18. ip:ip,
  19. info: 'Please Set URL Like This: ' + protocol + '://' + host + '/v1/?url=http[s]://YourWantProxyUrl.com'
  20. };
  21. if(data){
  22. params['location']='来自'+data.area+data.location;
  23. }
  24. return res.send(params);
  25. });
  26. }else{
  27. var url = originalUrl.replace('/v1/?url=', '');
  28. url = url.indexOf('?') === -1 ? url.replace('&', '?') : url;
  29. console.log('------------------log start---------------');
  30. console.log('date:'+new Date());
  31. console.log('ip:' + ip);
  32. console.log('ref:' + ref);
  33. console.log('path:' + req.path);
  34. console.log('req:' + url);
  35. console.log('------------------log end---------------');
  36. getJSON(url, function(data) {
  37. if (req.query.callback) {
  38. return res.jsonp(data);
  39. } else {
  40. return res.send(data);
  41. }
  42. });
  43. }
  44. });
  45. function getJSON(url, callback, next) {
  46. request(url, function(err, res, body) {
  47. if (!err && res.statusCode == 200) {
  48. callback && callback(body);
  49. } else {
  50. console.log(err);
  51. }
  52. });
  53. }
  54. function ip2address(ip,callback){
  55. request('http://apis.juhe.cn/ip/ip2addr?ip='+ip+'&key=28c0a6a5eb9cca3f38bc5877a83c9868', function(err, res, body) {
  56. if (!err && res.statusCode == 200) {
  57. body = JSON.parse(body);
  58. callback && callback(body['result']);
  59. } else {
  60. console.log(' / request info:'+err);
  61. callback && callback();
  62. }
  63. });
  64. }
  65. module.exports = router;