├── .gitignore ├── config.js ├── README.md ├── bin └── www.js ├── package.json ├── routes └── index.js └── app.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | proxy_key.js 3 | -------------------------------------------------------------------------------- /config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | url: 'http://geostellar.com/api/v1/reports/search' 3 | }; 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Simple proxy server. 2 | 3 | Create a ```proxy_key.js``` file, export an proxy key. 4 | All requests should include this key as a query parameter. 5 | 6 | Requests will be forwarded to the designated url in ```config.js``` 7 | -------------------------------------------------------------------------------- /bin/www.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var debug = require('debug')('nodeproxy'); 3 | var app = require('../app'); 4 | 5 | app.set('port', process.env.PORT || 3040); 6 | 7 | var server = app.listen(app.get('port'), function() { 8 | debug('Express server listening on port ' + server.address().port); 9 | }); 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodeproxy", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "node ./bin/www" 7 | }, 8 | "dependencies": { 9 | "body-parser": "~1.8.1", 10 | "cookie-parser": "~1.3.3", 11 | "cors": "^2.4.2", 12 | "debug": "~2.0.0", 13 | "express": "~4.9.0", 14 | "morgan": "~1.3.0", 15 | "request": "^2.44.0", 16 | "underscore": "^1.7.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /routes/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | var request = require('request'); 4 | var _ = require('underscore'); 5 | var config = require('../config'); 6 | 7 | 8 | router.get('*', function(req, res) { 9 | 10 | options = { 11 | url: config.url, 12 | qs: _.omit(req.query, 'proxy_key') 13 | }; 14 | 15 | request(options, function(err, response, body){ 16 | res.send(body); 17 | }); 18 | }); 19 | 20 | module.exports = router; 21 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var path = require('path'); 3 | var favicon = require('serve-favicon'); 4 | var logger = require('morgan'); 5 | var cookieParser = require('cookie-parser'); 6 | var bodyParser = require('body-parser'); 7 | var routes = require('./routes/index'); 8 | var app = express(); 9 | var proxyKey = require('./proxy_key.js'); 10 | var cors = require('cors'); 11 | 12 | app.use(cors()); 13 | app.use(logger('dev')); 14 | app.use(bodyParser.json()); 15 | app.use(bodyParser.urlencoded({ extended: false })); 16 | app.use(cookieParser()); 17 | 18 | app.use(function(req, res, next) { 19 | if(req.query.proxy_key != proxyKey){ 20 | console.log('bad'); 21 | res.status(403).end(); 22 | } 23 | next(); 24 | }); 25 | 26 | app.use('*', routes); 27 | 28 | 29 | module.exports = app; 30 | --------------------------------------------------------------------------------