Skip to content

Commit e487484

Browse files
author
Poornima Venkat
committed
Merge pull request #208 from krakenjs/trust-proxy-fn-fix
Adding fix and regression test for `trust proxy fn` clobbering
2 parents 8b86cd0 + 4c3536b commit e487484

File tree

3 files changed

+48
-3
lines changed

3 files changed

+48
-3
lines changed

lib/settings.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ module.exports = function settings(app, options) {
3030
app.settings = app.locals.settings = config.get('express');
3131
app.set('env', config.get('env:env'));
3232
app.set('view', config.get('express:view') ? require(config.get('express:view')) : View);
33+
app.set('trust proxy', config.get('express:trust proxy'));
3334
app.kraken = config;
3435

3536
// If options.mountpath was set, override config settings.

test/fixtures/settings/routes.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,14 @@
22

33

44
module.exports = function (router) {
5-
// noop
6-
};
5+
6+
router.get('/ip', function (req, res) {
7+
var ip, err;
8+
9+
try {
10+
ip = req.ip;
11+
} catch (e) {}
12+
13+
res.send( ip ? 201 : 500);
14+
});
15+
};

test/settings.js

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ var test = require('tape');
55
var path = require('path');
66
var util = require('util');
77
var express = require('express');
8+
var request = require('supertest');
89
var kraken = require('../');
910

1011

@@ -39,4 +40,38 @@ test('settings', function (t) {
3940
app.use(kraken(options));
4041
});
4142

42-
});
43+
44+
45+
t.test('should not clobber `trust proxy fn`', function (t) {
46+
// bug introduced by:
47+
// visionmedia/express@566720
48+
// expressjs/proxy-addr@7a7a7e
49+
var options, app;
50+
51+
function start() {
52+
var server;
53+
54+
function done(err) {
55+
t.error(err);
56+
t.end();
57+
}
58+
59+
server = request(app).get('/ip').expect(201, done);
60+
}
61+
62+
options = {
63+
basedir: path.join(__dirname, 'fixtures', 'settings'),
64+
onconfig: function (settings, cb) {
65+
settings.set('express:trust proxy', false);
66+
cb(null, settings);
67+
}
68+
};
69+
70+
app = express();
71+
app.use(kraken(options));
72+
app.on('start', start);
73+
app.on('error', t.error.bind(t));
74+
75+
});
76+
77+
});

0 commit comments

Comments
 (0)