From 136c776e773f385a8373143d99214991657892c1 Mon Sep 17 00:00:00 2001 From: Kevin Bowrin Date: Fri, 13 Feb 2026 12:28:29 -0500 Subject: [PATCH] Allow ProxyHostnameEdit directives before Opener directives. Fixes #80 --- CHECKS.md | 1 + internal/linter/linter.go | 1 + testdata/valid/LexisNexis.txt | 121 ++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 testdata/valid/LexisNexis.txt diff --git a/CHECKS.md b/CHECKS.md index 86f9b1e..b848f1b 100644 --- a/CHECKS.md +++ b/CHECKS.md @@ -185,6 +185,7 @@ directives are only allowed to follow other 'opener' directives and: * `DbVar9` * `AddUserHeader` * `AnonymousURL` +* `ProxyHostnameEdit` 'Opener' directives are `Option` directives which have a corresponding 'closer' `Option` directive. See [L4002](#l1004---anonymousurl-directive-is-out-of-order) for more information. diff --git a/internal/linter/linter.go b/internal/linter/linter.go index 5232e42..d59ccf0 100644 --- a/internal/linter/linter.go +++ b/internal/linter/linter.go @@ -408,6 +408,7 @@ func (l *Linter) ProcessOptionOpener(line string) (m []string) { DbVar8, DbVar9, HTTPMethod, + ProxyHostnameEdit, AddUserHeader, AnonymousURL, OptionCookie, diff --git a/testdata/valid/LexisNexis.txt b/testdata/valid/LexisNexis.txt new file mode 100644 index 0000000..fabd4c5 --- /dev/null +++ b/testdata/valid/LexisNexis.txt @@ -0,0 +1,121 @@ +AnonymousURL +https://dniaeeyvroj2l.cloudfront.net/index.html +AnonymousURL +https://static.law360news.com/* +PHE www.lexisnexis.com$ www-lexisnexis-com +PHE www.nexis.com$ www-nexis-com +Option CookiePassThrough +Title Lexis Nexis (updated 20250821) +HTTPMethod PUT +HTTPMethod DELETE +HTTPMethod PATCH +HTTPHeader -request -unrewrite X-LN-PreviousRequestId +HTTPHeader -request -unrewrite X-RequestedWith +HTTPHeader -request -unrewrite X-LN-CurrentRequestId +HTTPHeader -request -unrewrite X-RE-Ref +HTTPHeader -request -unrewrite X-UA-Compatible +HTTPHeader -request -unrewrite X-LN-InstanceId +HTTPHeader -request -unrewrite X-LN-PageMode +HTTPHeader -request -process X-NewRelic-ID +HTTPHeader -response -process X-LN-PreviousRequestId +HTTPHeader -response -process X-RequestedWith +HTTPHeader -response -process X-LN-CurrentRequestId +HTTPHeader -response -process X-RE-Ref +HTTPHeader -response -process X-UA-Compatible +HTTPHeader -response -process X-LN-InstanceId +HTTPHeader -response -process X-LN-PageMode +HTTPHeader -response -process X-AspNetMvc-Version +URL http://www.lexisnexis.com/ +HJ https://advance.lexis.com +HJ advance.lexis.com +HJ https://dniaeeyvroj2l.cloudfront.net +HJ https://lexisadvancequicklaw.ca +HJ lexisadvancequicklaw.ca +HJ https://lexisnexis.co.za +HJ lexisnexis.co.za +HJ https://mylexisnexis.co.za +HJ mylexisnexis.co.za +HJ https://nexis.com +HJ nexis.com +HJ https://nexisuni.com +HJ nexisuni.com +HJ https://nexis.lexisnexis.com/ +HJ nexis.lexisnexis.com/ +HJ https://plus.lexis.com +HJ plus.lexis.com +HJ https://w3.lexis.com +HJ w3.lexis.com +HJ https://w3.nexis.com +HJ w3.nexis.com +HJ https://web.lexis-nexis.com +HJ web.lexis-nexis.com +HJ https://web.lexisnexis.com +HJ web.lexisnexis.com +HJ https://www.lexis.com +HJ www.lexis.com +HJ https://www.lexis-nexis.com +HJ www.lexis-nexis.com +HJ https://www.lexis360intelligence.fr +HJ www.lexis360intelligence.fr +HJ https://www.lexisnexis.co.za +HJ www.lexisnexis.co.za +HJ https://www.lexisnexis.com +HJ www.lexisnexis.com +HJ https://www.lexisnexis.fr +HJ www.lexisnexis.fr +HJ https://www.mylexisnexis.co.za +HJ www.mylexisnexis.co.za +HJ https://www.nexis.com +HJ www.nexis.com +HJ https://www.nexisuni.com +HJ www.nexisuni.com +HJ https://www.totalpatentone.com +HJ www.totalpatentone.com +HJ https://www.law360.com +HJ www.law360.com +HJ https://www.law360.ca +HJ www.law360.ca +HJ https://www.law360.co.uk +HJ www.law360.co.uk +HJ https://static.law360news.com +HJ static.law360news.com +DJ lexis-nexis.com +DJ lexis360intelligence.fr +DJ lexis.com +DJ lexisadvancequicklaw.ca +DJ lexisnexis.co.za +DJ lexisnexis.com +DJ lexisnexis.fr +DJ mylexisnexis.co.za +DJ nexis.com +DJ nexisuni.com +DJ plus.lexis.com +DJ law360.com +DJ law360.ca +DJ law360.co.uk +Find location.hostname +Replace location.host +Find = "www.lexisnexis.com" +Replace = "^pwww.lexisnexis.com^" +Find &unix=http:// +Replace &unix=http://^A +Find GetCookie("LNAUTH") +Replace "LNAUTH-IP" +Find NAME="_PRIORREFERER" VALUE="http:// +Replace NAME="_PRIORREFERER" VALUE="http://^A +Find NAME="_PRIORREFERER" VALUE="https:// +Replace NAME="_PRIORREFERER" VALUE="https://^A +Find "www.nexis.com" +Replace "^pwww.nexis.com^" +Find window.location.replace(redirURL) +Replace +Find mq.set("rt", "https:// +Replace mq.set("rt", "https://^A +Find mq.set("rt", "http:// +Replace mq.set("rt", "http://^A +Find if(forwardTo.indexOf("lexis.com") != -1 || forwardTo.indexOf("nexis.com") != -1 || forwardTo.indexOf("csint") != -1) +Replace if(forwardTo.indexOf("lexis.com") != -1 || forwardTo.indexOf("nexis.com") != -1 || forwardTo.indexOf("csint") != -1 || forwardTo.indexOf("lexis-com") != -1 || forwardTo.indexOf("nexis-com") != -1) +Find action:"https%3a%2f%2fsignin.lexisnexis.com +Replace action:"https://signin.lexisnexis.com +Option Cookie +AnonymousURL -* +NeverProxy pdc1c-userauthentication.route53.lexis.com +NeverProxy authn-us.lexisnexis.com