176 public static final BiPredicate<String, String> CONTEXT_RESTRICTED(HttpClient client) { |
176 public static final BiPredicate<String, String> CONTEXT_RESTRICTED(HttpClient client) { |
177 return (k, v) -> client.authenticator() == null || |
177 return (k, v) -> client.authenticator() == null || |
178 ! (k.equalsIgnoreCase("Authorization") |
178 ! (k.equalsIgnoreCase("Authorization") |
179 && k.equalsIgnoreCase("Proxy-Authorization")); |
179 && k.equalsIgnoreCase("Proxy-Authorization")); |
180 } |
180 } |
181 |
181 private static final BiPredicate<String, String> HOST_RESTRICTED = (k,v) -> !"host".equalsIgnoreCase(k); |
|
182 public static final BiPredicate<String, String> PROXY_TUNNEL_RESTRICTED(HttpClient client) { |
|
183 return CONTEXT_RESTRICTED(client).and(HOST_RESTRICTED); |
|
184 } |
|
185 |
|
186 private static final Predicate<String> IS_HOST = "host"::equalsIgnoreCase; |
182 private static final Predicate<String> IS_PROXY_HEADER = (k) -> |
187 private static final Predicate<String> IS_PROXY_HEADER = (k) -> |
183 k != null && k.length() > 6 && "proxy-".equalsIgnoreCase(k.substring(0,6)); |
188 k != null && k.length() > 6 && "proxy-".equalsIgnoreCase(k.substring(0,6)); |
184 private static final Predicate<String> NO_PROXY_HEADER = |
189 private static final Predicate<String> NO_PROXY_HEADER = |
185 IS_PROXY_HEADER.negate(); |
190 IS_PROXY_HEADER.negate(); |
186 private static final Predicate<String> ALL_HEADERS = (s) -> true; |
191 private static final Predicate<String> ALL_HEADERS = (s) -> true; |
248 return true; |
253 return true; |
249 } |
254 } |
250 |
255 |
251 public static final BiPredicate<String, String> PROXY_TUNNEL_FILTER = |
256 public static final BiPredicate<String, String> PROXY_TUNNEL_FILTER = |
252 (s,v) -> isAllowedForProxy(s, v, PROXY_AUTH_TUNNEL_DISABLED_SCHEMES, |
257 (s,v) -> isAllowedForProxy(s, v, PROXY_AUTH_TUNNEL_DISABLED_SCHEMES, |
253 IS_PROXY_HEADER); |
258 // Allows Proxy-* and Host headers when establishing the tunnel. |
|
259 IS_PROXY_HEADER.or(IS_HOST)); |
254 public static final BiPredicate<String, String> PROXY_FILTER = |
260 public static final BiPredicate<String, String> PROXY_FILTER = |
255 (s,v) -> isAllowedForProxy(s, v, PROXY_AUTH_DISABLED_SCHEMES, |
261 (s,v) -> isAllowedForProxy(s, v, PROXY_AUTH_DISABLED_SCHEMES, |
256 ALL_HEADERS); |
262 ALL_HEADERS); |
257 public static final BiPredicate<String, String> NO_PROXY_HEADERS_FILTER = |
263 public static final BiPredicate<String, String> NO_PROXY_HEADERS_FILTER = |
258 (n,v) -> Utils.NO_PROXY_HEADER.test(n); |
264 (n,v) -> Utils.NO_PROXY_HEADER.test(n); |