12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- var express = require('express');
- var request = require('request');
- var router = express.Router();
- router.get('/*', function(req, res, next) {
- getJSON(req, res, next);
- });
- router.post('/*', function(req, res, next) {
- getJSON(req, res, next);
- });
- function getJSON(req, res, next) {
- let ip = req.ip.replace(/\:\:ffff\:/, '').replace(/\:\:1/, '127.0.0.1');
- let host = req.hostname;
- let protocol = req.protocol;
- let originalUrl = req.originalUrl;
- let url = req.query.url || req.body.url;
- let callback = req.query.callback || req.body.callback;
- let params = req.body;
- let output = {
- data: {
- IP: ip,
- Info: 'Please Set URL Like This: ' + protocol + '://' + host + '/v1/?url=http[s]://YourWantProxyUrl.Com'
- },
- status: {
- code: 200,
- massage: ''
- }
- };
- if (url) {
- if (/\?url\=/.test(originalUrl)) {
- url = originalUrl.split('url=')[1];
- }
- if (params) {
- let temp = [];
- for (let i in params) {
- temp.push('&' + i + '=' + params[i]);
- }
- url += temp.join('');
- }
- url = url.indexOf('?') === -1 ? url.replace(/\&/, '?') : url;
- url = /^(http|https)\:\/\//.test(url) ? url : 'http://' + url;
- url = url.replace(/\&callback\=(\w+)/, '');
- request(url, function(err, response, body) {
- try {
- body = JSON.parse(body);
- } catch (e) {
- output.status = {
- code: -1
- };
- }
- if (!err && response.statusCode == 200) {
- output = body;
- } else {
- output = {
- data: {},
- status: {
- code: -1,
- message: err || 'Something bad happend.'
- }
- };
- }
- if (callback) {
- res.jsonp(output);
- } else {
- res.json(output);
- }
- });
- } else {
- if (callback) {
- res.jsonp(output);
- } else {
- res.json(output);
- }
- }
- }
- module.exports = router;
|