X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fdingus.js;h=dfddaff577312857bdc695820ed768ab680d11bd;hb=refs%2Fheads%2Fv2.1-dev;hp=1bda0c2ac57b2659cc5149c86a37e304cc4a72b4;hpb=356f9a3b45d5b6bbcc310a2b37b6f59dfd76b923;p=squeep-api-dingus diff --git a/lib/dingus.js b/lib/dingus.js index 1bda0c2..c53e469 100644 --- a/lib/dingus.js +++ b/lib/dingus.js @@ -38,7 +38,10 @@ const defaultOptions = { querystring, }; -const cookieSplitRE = /; */; +const cookieSplitRE = /\s*;\s*/; +const headerParseRE = /^(?[^:]+): +(?.*)$/; +const lineBreakRE = /\r\n|\n|\r/; +const proxySplitRE = /\s*,\s*/u; class Dingus { /** @@ -161,7 +164,7 @@ class Dingus { (this.trustProxy && req?.getHeader(Enum.Header.XRealIP)) || (req?.connection?.remoteAddress) || ''; - return address.split(/\s*,\s*/u)[0]; + return address.split(proxySplitRE)[0]; } @@ -174,7 +177,7 @@ class Dingus { // TODO: RFC7239 Forwarded support const protocol = (this.trustProxy && req?.getHeader(Enum.Header.XForwardedProto)) || ((req?.connection?.encrypted) ? 'https' : 'http'); - return protocol.split(/\s*,\s*/u)[0]; + return protocol.split(proxySplitRE)[0]; } @@ -582,11 +585,9 @@ class Dingus { return added; } - const lineBreakRE = /\r\n|\n|\r/; const lines = data.toString().split(lineBreakRE); common.unfoldHeaderLines(lines); - const headerParseRE = /^(?[^:]+): +(?.*)$/; lines.forEach((line) => { if (line) { const result = headerParseRE.exec(line);