v1.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 originalUrl = req.originalUrl;
  10. var ip = req.ip;
  11. if (originalUrl == /v1/) {
  12. ip2address(ip, function(data) {
  13. var params = {
  14. code: 200,
  15. ip: ip,
  16. info: 'Please Set URL Like This: ' + protocol + '://' + host + '/v1/?url=http[s]://YourWantProxyUrl.com'
  17. };
  18. if (data) {
  19. params['location'] = data.area + data.location;
  20. }
  21. return res.send(params);
  22. });
  23. } else {
  24. var url = originalUrl.replace('/v1/?url=', '');
  25. url = url.indexOf('?') === -1 ? url.replace('&', '?') : url;
  26. getJSON(url, function(data) {
  27. if (req.query.callback) {
  28. return res.jsonp(data);
  29. } else {
  30. return res.send(data);
  31. }
  32. });
  33. }
  34. });
  35. function getJSON(url, callback, next) {
  36. request(url, function(err, res, body) {
  37. if (!err && res.statusCode == 200) {
  38. callback && callback(body);
  39. } else {
  40. console.log(err);
  41. }
  42. });
  43. }
  44. function ip2address(ip, callback) {
  45. request('http://apis.juhe.cn/ip/ip2addr?ip=' + ip + '&key=28c0a6a5eb9cca3f38bc5877a83c9868', function(err, res, body) {
  46. if (!err && res.statusCode == 200) {
  47. body = JSON.parse(body);
  48. callback && callback(body['result']);
  49. } else {
  50. console.log(' / request info:' + err);
  51. callback && callback();
  52. }
  53. });
  54. }
  55. module.exports = router;