comparison flys-client/src/main/java/org/dive4elements/river/client/server/ProxyServlet.java @ 5834:f507086aa94b

Repaired internal references.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:31:32 +0200
parents flys-client/src/main/java/de/intevation/flys/client/server/ProxyServlet.java@92239b53823f
children 821a02bbfb4e
comparison
equal deleted inserted replaced
5833:a2bdc0f524e8 5834:f507086aa94b
1 package de.intevation.flys.client.server;
2
3 import java.io.InputStream;
4 import java.io.IOException;
5 import java.io.OutputStream;
6 import java.util.Enumeration;
7
8 import javax.servlet.ServletConfig;
9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import javax.servlet.http.HttpSession;
13
14 import org.apache.http.Header;
15 import org.apache.http.HttpEntity;
16 import org.apache.http.HttpResponse;
17 import org.apache.http.StatusLine;
18 import org.apache.http.client.HttpClient;
19 import org.apache.http.client.methods.HttpGet;
20 import org.apache.http.impl.client.DefaultHttpClient;
21
22 import org.apache.log4j.Logger;
23
24 import de.intevation.flys.client.server.auth.User;
25
26 /**
27 * Implements a Proxy for HTTP Requests
28 */
29 public class ProxyServlet
30 extends HttpServlet
31 {
32 private static Logger logger = Logger.getLogger(ProxyServlet.class);
33 private String remoteurl;
34
35 @Override
36 public void init(ServletConfig config) {
37 this.remoteurl = config.getInitParameter("remoteurl");
38 }
39
40 @Override
41 public void doPost(HttpServletRequest req, HttpServletResponse resp) {
42 }
43
44 @Override
45 public void doGet(HttpServletRequest req, HttpServletResponse resp)
46 throws IOException {
47 HttpClient httpclient = new DefaultHttpClient();
48
49 String requesturi = req.getRequestURI();
50 String query = req.getQueryString();
51
52 HttpGet httpget = new HttpGet(this.remoteurl + "?" + query);
53
54 boolean debug = logger.isDebugEnabled();
55
56 for (Enumeration e = req.getHeaderNames(); e.hasMoreElements();) {
57 String name = (String)e.nextElement();
58 for (Enumeration f = req.getHeaders(name); f.hasMoreElements();) {
59 String value = (String)f.nextElement();
60 if (debug) {
61 logger.debug(
62 "Adding request header " + name + " : " + value);
63 }
64 httpget.addHeader(name, value);
65 }
66 }
67
68 HttpResponse response = httpclient.execute(httpget);
69
70 StatusLine statusline = response.getStatusLine();
71 if (debug) {
72 logger.debug("Response statuscode " + statusline.getStatusCode());
73 }
74 resp.setStatus(statusline.getStatusCode());
75
76 Header[] headers = response.getAllHeaders();
77 for(Header header : headers) {
78 if (debug) {
79 logger.debug(
80 "Adding response header " + header.getName() +
81 " : " + header.getValue());
82 }
83 resp.setHeader(header.getName(), header.getValue());
84 }
85
86 HttpEntity entity = response.getEntity();
87 if (entity != null) {
88 InputStream instream = entity.getContent();
89 byte [] buf = new byte[4096];
90 try {
91 OutputStream outstream = resp.getOutputStream();
92 try {
93 int read;
94 while ((read = instream.read(buf)) >= 0) {
95 outstream.write(buf, 0, read);
96 }
97 outstream.flush();
98 }
99 finally {
100 outstream.close();
101 }
102 }
103 finally {
104 instream.close();
105 }
106 }
107 }
108
109 private User getUser(HttpServletRequest req) {
110 HttpSession session = req.getSession();
111 return (User)session.getAttribute("user");
112 }
113 }

http://dive4elements.wald.intevation.org