1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.server.handler;
20
21 import java.io.IOException;
22
23 import javax.servlet.ServletException;
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26
27 import org.eclipse.jetty.http.HttpStatus;
28 import org.eclipse.jetty.server.HttpChannel;
29 import org.eclipse.jetty.server.HttpConfiguration;
30 import org.eclipse.jetty.server.Request;
31 import org.eclipse.jetty.util.URIUtil;
32
33
34
35
36
37
38
39 public class SecuredRedirectHandler extends AbstractHandler
40 {
41 @Override
42 public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
43 {
44 HttpChannel channel = baseRequest.getHttpChannel();
45 if (baseRequest.isSecure() || (channel == null))
46 {
47
48 return;
49 }
50
51 HttpConfiguration httpConfig = channel.getHttpConfiguration();
52 if (httpConfig == null)
53 {
54
55 response.sendError(HttpStatus.FORBIDDEN_403,"No http configuration available");
56 return;
57 }
58
59 if (httpConfig.getSecurePort() > 0)
60 {
61 String scheme = httpConfig.getSecureScheme();
62 int port = httpConfig.getSecurePort();
63
64 String url = URIUtil.newURI(scheme,baseRequest.getServerName(),port,baseRequest.getRequestURI(),baseRequest.getQueryString());
65 response.setContentLength(0);
66 response.sendRedirect(url);
67 }
68 else
69 {
70 response.sendError(HttpStatus.FORBIDDEN_403,"Not Secure");
71 }
72
73 baseRequest.setHandled(true);
74 }
75 }