Buckets:
| /** | |
| * forwarded | |
| * Copyright(c) 2014-2017 Douglas Christopher Wilson | |
| * MIT Licensed | |
| */ | |
| /** | |
| * Get all addresses in the request used in the `X-Forwarded-For` header. | |
| */ | |
| function forwarded (req) { | |
| if (!req) { | |
| throw new TypeError('argument req is required') | |
| } | |
| const header = req.headers['x-forwarded-for'] | |
| const socketAddr = req.socket.remoteAddress | |
| if (!header || typeof header !== 'string') { | |
| return [socketAddr] | |
| } else if (header.indexOf(',') === -1) { | |
| const remote = header.trim() | |
| return (remote.length) | |
| ? [socketAddr, remote] | |
| : [socketAddr] | |
| } else { | |
| return parse(header, socketAddr) | |
| } | |
| } | |
| function parse (header, socketAddr) { | |
| const result = [socketAddr] | |
| let end = header.length | |
| let start = end | |
| let char | |
| let i | |
| for (i = end - 1; i >= 0; --i) { | |
| char = header[i] | |
| if (char === ' ') { | |
| (start === end) && (start = end = i) | |
| } else if (char === ',') { | |
| (start !== end) && result.push(header.slice(start, end)) | |
| start = end = i | |
| } else { | |
| start = i | |
| } | |
| } | |
| (start !== end) && result.push(header.substring(start, end)) | |
| return result | |
| } | |
| module.exports = forwarded | |
| module.exports.default = forwarded | |
| module.exports.forwarded = forwarded | |
Xet Storage Details
- Size:
- 1.25 kB
- Xet hash:
- cce72d83010832359250574f40ed98262d00cf27d02fa6d7dbe547443dbe1331
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.