1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.server;
20
21 import java.util.List;
22 import java.util.concurrent.CopyOnWriteArrayList;
23
24 import org.eclipse.jetty.http.HttpScheme;
25 import org.eclipse.jetty.util.Jetty;
26 import org.eclipse.jetty.util.annotation.ManagedAttribute;
27 import org.eclipse.jetty.util.annotation.ManagedObject;
28
29
30
31
32
33
34
35
36
37
38
39
40
41 @ManagedObject("HTTP Configuration")
42 public class HttpConfiguration
43 {
44 public static final String SERVER_VERSION = "Jetty(" + Jetty.VERSION + ")";
45
46 private List<Customizer> _customizers=new CopyOnWriteArrayList<>();
47 private int _outputBufferSize=32*1024;
48 private int _requestHeaderSize=8*1024;
49 private int _responseHeaderSize=8*1024;
50 private int _headerCacheSize=512;
51 private int _securePort;
52 private String _secureScheme = HttpScheme.HTTPS.asString();
53 private boolean _sendServerVersion = true;
54 private boolean _sendXPoweredBy = false;
55 private boolean _sendDateHeader = false;
56
57 public interface Customizer
58 {
59 public void customize(Connector connector, HttpConfiguration channelConfig, Request request);
60 }
61
62 public interface ConnectionFactory
63 {
64 HttpConfiguration getHttpConfiguration();
65 }
66
67 public HttpConfiguration()
68 {
69 }
70
71
72
73
74
75 public HttpConfiguration(HttpConfiguration config)
76 {
77 _customizers.addAll(config._customizers);
78 _outputBufferSize=config._outputBufferSize;
79 _requestHeaderSize=config._requestHeaderSize;
80 _responseHeaderSize=config._responseHeaderSize;
81 _securePort=config._securePort;
82 _secureScheme=config._secureScheme;
83 _sendDateHeader=config._sendDateHeader;
84 _sendServerVersion=config._sendServerVersion;
85 _headerCacheSize=config._headerCacheSize;
86 }
87
88
89
90
91
92
93
94
95
96 public void addCustomizer(Customizer customizer)
97 {
98 _customizers.add(customizer);
99 }
100
101
102 public List<Customizer> getCustomizers()
103 {
104 return _customizers;
105 }
106
107 public <T> T getCustomizer(Class<T> type)
108 {
109 for (Customizer c : _customizers)
110 if (type.isAssignableFrom(c.getClass()))
111 return (T)c;
112 return null;
113 }
114
115 @ManagedAttribute("The size in bytes of the output buffer used to aggregate HTTP output")
116 public int getOutputBufferSize()
117 {
118 return _outputBufferSize;
119 }
120
121 @ManagedAttribute("The maximum allowed size in bytes for a HTTP request header")
122 public int getRequestHeaderSize()
123 {
124 return _requestHeaderSize;
125 }
126
127 @ManagedAttribute("The maximum allowed size in bytes for a HTTP response header")
128 public int getResponseHeaderSize()
129 {
130 return _responseHeaderSize;
131 }
132
133 @ManagedAttribute("The maximum allowed size in bytes for a HTTP header field cache")
134 public int getHeaderCacheSize()
135 {
136 return _headerCacheSize;
137 }
138
139 @ManagedAttribute("The port to which Integral or Confidential security constraints are redirected")
140 public int getSecurePort()
141 {
142 return _securePort;
143 }
144
145 @ManagedAttribute("The scheme with which Integral or Confidential security constraints are redirected")
146 public String getSecureScheme()
147 {
148 return _secureScheme;
149 }
150
151 public void setSendServerVersion (boolean sendServerVersion)
152 {
153 _sendServerVersion = sendServerVersion;
154 }
155
156 @ManagedAttribute("if true, send the Server header in responses")
157 public boolean getSendServerVersion()
158 {
159 return _sendServerVersion;
160 }
161
162 public void setSendXPoweredBy (boolean sendXPoweredBy)
163 {
164 _sendXPoweredBy=sendXPoweredBy;
165 }
166
167 @ManagedAttribute("if true, send the X-Powered-By header in responses")
168 public boolean getSendXPoweredBy()
169 {
170 return _sendXPoweredBy;
171 }
172
173 public void setSendDateHeader(boolean sendDateHeader)
174 {
175 _sendDateHeader = sendDateHeader;
176 }
177
178 @ManagedAttribute("if true, include the date in HTTP headers")
179 public boolean getSendDateHeader()
180 {
181 return _sendDateHeader;
182 }
183
184
185
186
187
188
189
190
191
192 public void setCustomizers(List<Customizer> customizers)
193 {
194 _customizers.clear();
195 _customizers.addAll(customizers);
196 }
197
198
199
200
201
202
203
204
205
206 public void setOutputBufferSize(int responseBufferSize)
207 {
208 _outputBufferSize = responseBufferSize;
209 }
210
211
212
213
214
215
216
217
218 public void setRequestHeaderSize(int requestHeaderSize)
219 {
220 _requestHeaderSize = requestHeaderSize;
221 }
222
223
224
225
226
227
228
229
230 public void setResponseHeaderSize(int responseHeaderSize)
231 {
232 _responseHeaderSize = responseHeaderSize;
233 }
234
235
236
237
238
239 public void setHeaderCacheSize(int headerCacheSize)
240 {
241 _headerCacheSize = headerCacheSize;
242 }
243
244
245
246
247
248
249 public void setSecurePort(int confidentialPort)
250 {
251 _securePort = confidentialPort;
252 }
253
254
255
256
257
258
259 public void setSecureScheme(String confidentialScheme)
260 {
261 _secureScheme = confidentialScheme;
262 }
263
264 @Override
265 public String toString()
266 {
267 return String.format("%s@%x{%d,%d/%d,%s://:%d,%s}",this.getClass().getSimpleName(),hashCode(),_outputBufferSize,_requestHeaderSize,_responseHeaderSize,_secureScheme,_securePort,_customizers);
268 }
269 }