1
19
20 package com.liferay.portal.wsrp.servlet;
21
22 import com.liferay.portal.model.Company;
23 import com.liferay.portal.service.CompanyLocalServiceUtil;
24 import com.liferay.portal.util.PortalInstances;
25 import com.liferay.util.Encryptor;
26
27 import java.io.InputStream;
28 import java.io.OutputStream;
29
30 import java.net.URL;
31 import java.net.URLConnection;
32
33 import java.security.Key;
34
35 import javax.servlet.http.HttpServlet;
36 import javax.servlet.http.HttpServletRequest;
37 import javax.servlet.http.HttpServletResponse;
38
39 import org.apache.commons.logging.Log;
40 import org.apache.commons.logging.LogFactory;
41 import org.apache.wsrp4j.producer.util.Base64;
42
43
49 public class ResourceProxyServlet extends HttpServlet {
50
51 public void service(HttpServletRequest req, HttpServletResponse res) {
52 String targetUrl = req.getParameter("url");
53 String cookie = req.getParameter("cookie");
54
55 if (targetUrl != null) {
56 try {
57 long companyId = PortalInstances.getCompanyId(req);
58
59 Company company = CompanyLocalServiceUtil.getCompanyById(
60 companyId);
61
62 Key key = company.getKeyObj();
63
64 targetUrl = Encryptor.decryptUnencodedAsString(
65 key, Base64.decode(targetUrl));
66
67 URL url = new URL(targetUrl);
68 URLConnection con = url.openConnection();
69
70 cookie = Encryptor.decryptUnencodedAsString(
71 key, Base64.decode(cookie));
72
73 con.setRequestProperty("Cookie", cookie);
74
75 con.connect();
76
77 res.setContentType(con.getContentType());
78 res.setContentLength(con.getContentLength());
79
80 InputStream in = con.getInputStream();
81 OutputStream out = res.getOutputStream();
82
83 int next;
84
85 while ((next = in.read()) != -1) {
86 out.write(next);
87 }
88
89 out.flush();
90 out.close();
91 }
92 catch (Exception e) {
93 _log.warn(e);
94 }
95 }
96 }
97
98 private static Log _log = LogFactory.getLog(ResourceProxyServlet.class);
99
100 }