socketioMEANseed/server/node_modules/forwarded/index.js
server/node_modules/forwarded/index.jsRaw
1/*!
2 * forwarded
3 * Copyright(c) 2014 Douglas Christopher Wilson
4 * MIT Licensed
5 */
6
7/**
8 * Module exports.
9 */
10
11module.exports = forwarded
12
13/**
14 * Get all addresses in the request, using the `X-Forwarded-For` header.
15 *
16 * @param {Object} req
17 * @api public
18 */
19
20function forwarded(req) {
21 if (!req) {
22 throw new TypeError('argument req is required')
23 }
24
25 // simple header parsing
26 var proxyAddrs = (req.headers['x-forwarded-for'] || '')
27 .split(/ *, */)
28 .filter(Boolean)
29 .reverse()
30 var socketAddr = req.connection.remoteAddress
31 var addrs = [socketAddr].concat(proxyAddrs)
32
33 // return all addresses
34 return addrs
35}