|
16 | 16 |
|
17 | 17 | package org.springframework.security.web.server.firewall;
|
18 | 18 |
|
| 19 | +import java.net.InetSocketAddress; |
| 20 | +import java.net.URI; |
19 | 21 | import java.util.Arrays;
|
20 | 22 | import java.util.Collection;
|
21 | 23 | import java.util.Collections;
|
22 | 24 | import java.util.HashSet;
|
23 | 25 | import java.util.List;
|
24 | 26 | import java.util.Map;
|
25 | 27 | import java.util.Set;
|
| 28 | +import java.util.function.Consumer; |
26 | 29 | import java.util.function.Predicate;
|
27 | 30 | import java.util.regex.Pattern;
|
28 | 31 |
|
|
33 | 36 | import org.springframework.http.server.reactive.ServerHttpRequest;
|
34 | 37 | import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
|
35 | 38 | import org.springframework.http.server.reactive.ServerHttpResponse;
|
| 39 | +import org.springframework.http.server.reactive.SslInfo; |
36 | 40 | import org.springframework.util.Assert;
|
37 | 41 | import org.springframework.util.MultiValueMap;
|
38 | 42 | import org.springframework.web.server.ServerWebExchange;
|
@@ -743,6 +747,11 @@ public MultiValueMap<String, String> getQueryParams() {
|
743 | 747 | return queryParams;
|
744 | 748 | }
|
745 | 749 |
|
| 750 | + @Override |
| 751 | + public Builder mutate() { |
| 752 | + return new StrictFirewallBuilder(super.mutate()); |
| 753 | + } |
| 754 | + |
746 | 755 | private final class StrictFirewallHttpHeaders extends HttpHeaders {
|
747 | 756 |
|
748 | 757 | private StrictFirewallHttpHeaders(HttpHeaders delegate) {
|
@@ -783,6 +792,61 @@ public Set<String> keySet() {
|
783 | 792 |
|
784 | 793 | }
|
785 | 794 |
|
| 795 | + private final class StrictFirewallBuilder implements Builder { |
| 796 | + |
| 797 | + private final Builder delegate; |
| 798 | + |
| 799 | + private StrictFirewallBuilder(Builder delegate) { |
| 800 | + this.delegate = delegate; |
| 801 | + } |
| 802 | + |
| 803 | + @Override |
| 804 | + public Builder method(HttpMethod httpMethod) { |
| 805 | + return this.delegate.method(httpMethod); |
| 806 | + } |
| 807 | + |
| 808 | + @Override |
| 809 | + public Builder uri(URI uri) { |
| 810 | + return this.delegate.uri(uri); |
| 811 | + } |
| 812 | + |
| 813 | + @Override |
| 814 | + public Builder path(String path) { |
| 815 | + return this.delegate.path(path); |
| 816 | + } |
| 817 | + |
| 818 | + @Override |
| 819 | + public Builder contextPath(String contextPath) { |
| 820 | + return this.delegate.contextPath(contextPath); |
| 821 | + } |
| 822 | + |
| 823 | + @Override |
| 824 | + public Builder header(String headerName, String... headerValues) { |
| 825 | + return this.delegate.header(headerName, headerValues); |
| 826 | + } |
| 827 | + |
| 828 | + @Override |
| 829 | + public Builder headers(Consumer<HttpHeaders> headersConsumer) { |
| 830 | + return this.delegate.headers(headersConsumer); |
| 831 | + } |
| 832 | + |
| 833 | + @Override |
| 834 | + public Builder sslInfo(SslInfo sslInfo) { |
| 835 | + return this.delegate.sslInfo(sslInfo); |
| 836 | + } |
| 837 | + |
| 838 | + @Override |
| 839 | + public Builder remoteAddress(InetSocketAddress remoteAddress) { |
| 840 | + return this.delegate.remoteAddress(remoteAddress); |
| 841 | + } |
| 842 | + |
| 843 | + @Override |
| 844 | + public ServerHttpRequest build() { |
| 845 | + return new StrictFirewallHttpRequest(this.delegate.build()); |
| 846 | + } |
| 847 | + |
| 848 | + } |
| 849 | + |
786 | 850 | }
|
787 | 851 |
|
788 | 852 | }
|
|
0 commit comments