| /*! |
| * forwarded |
| * Copyright(c) 2014 Douglas Christopher Wilson |
| * MIT Licensed |
| */ |
| |
| /** |
| * Module exports. |
| */ |
| |
| module.exports = forwarded |
| |
| /** |
| * Get all addresses in the request, using the `X-Forwarded-For` header. |
| * |
| * @param {Object} req |
| * @api public |
| */ |
| |
| function forwarded(req) { |
| if (!req) { |
| throw new TypeError('argument req is required') |
| } |
| |
| // simple header parsing |
| var proxyAddrs = (req.headers['x-forwarded-for'] || '') |
| .split(/ *, */) |
| .filter(Boolean) |
| .reverse() |
| var socketAddr = req.connection.remoteAddress |
| var addrs = [socketAddr].concat(proxyAddrs) |
| |
| // return all addresses |
| return addrs |
| } |