001
014
015 package com.liferay.portal.sharepoint;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.servlet.HttpHeaders;
020 import com.liferay.portal.kernel.servlet.ServletResponseUtil;
021 import com.liferay.portal.kernel.util.StringBundler;
022 import com.liferay.portal.kernel.util.StringPool;
023 import com.liferay.portal.model.User;
024 import com.liferay.portal.sharepoint.methods.Method;
025 import com.liferay.portal.sharepoint.methods.MethodFactory;
026 import com.liferay.portal.util.WebKeys;
027
028 import javax.servlet.http.HttpServlet;
029 import javax.servlet.http.HttpServletRequest;
030 import javax.servlet.http.HttpServletResponse;
031
032
035 public class SharepointServlet extends HttpServlet {
036
037 @Override
038 public void doGet(
039 HttpServletRequest request, HttpServletResponse response) {
040
041 if (_log.isInfoEnabled()) {
042 _log.info(
043 request.getHeader(HttpHeaders.USER_AGENT) + " " +
044 request.getMethod() + " " + request.getRequestURI());
045 }
046
047 try {
048 String uri = request.getRequestURI();
049
050 if (uri.equals("/_vti_inf.html")) {
051 vtiInfHtml(response);
052 }
053 }
054 catch (Exception e) {
055 _log.error(e, e);
056 }
057 }
058
059 @Override
060 public void doPost(
061 HttpServletRequest request, HttpServletResponse response) {
062
063 try {
064 String uri = request.getRequestURI();
065
066 if (uri.equals("/_vti_bin/shtml.dll/_vti_rpc") ||
067 uri.equals("/sharepoint/_vti_bin/_vti_aut/author.dll")) {
068
069 User user = (User)request.getSession().getAttribute(
070 WebKeys.USER);
071
072 SharepointRequest sharepointRequest = new SharepointRequest(
073 request, response, user);
074
075 Method method = MethodFactory.create(sharepointRequest);
076
077 String rootPath = method.getRootPath(sharepointRequest);
078
079 if (rootPath == null) {
080 throw new SharepointException("Unabled to get root path");
081 }
082
083 int pos = rootPath.lastIndexOf("sharepoint/");
084
085 if (pos != -1) {
086 rootPath = rootPath.substring(pos + 11);
087 }
088
089
090
091 pos = rootPath.lastIndexOf("webdav/");
092
093 if (pos != -1) {
094 rootPath = rootPath.substring(pos + 7);
095 }
096
097 sharepointRequest.setRootPath(rootPath);
098
099 SharepointStorage storage = SharepointUtil.getStorage(rootPath);
100
101 sharepointRequest.setSharepointStorage(storage);
102
103 if (_log.isInfoEnabled()) {
104 _log.info(
105 request.getHeader(HttpHeaders.USER_AGENT) + " " +
106 method.getMethodName() + " " + uri + " " +
107 rootPath);
108 }
109
110 method.process(sharepointRequest);
111 }
112 else {
113 if (_log.isInfoEnabled()) {
114 _log.info(
115 request.getHeader(HttpHeaders.USER_AGENT) + " " +
116 request.getMethod() + " " + uri);
117 }
118 }
119 }
120 catch (SharepointException se) {
121 _log.error(se, se);
122 }
123 }
124
125 protected void vtiInfHtml(HttpServletResponse response) throws Exception {
126 StringBundler sb = new StringBundler(13);
127
128 sb.append("<!-- FrontPage Configuration Information");
129 sb.append(StringPool.NEW_LINE);
130 sb.append(" FPVersion=\"6.0.2.9999\"");
131 sb.append(StringPool.NEW_LINE);
132 sb.append("FPShtmlScriptUrl=\"_vti_bin/shtml.dll/_vti_rpc\"");
133 sb.append(StringPool.NEW_LINE);
134 sb.append("FPAuthorScriptUrl=\"_vti_bin/_vti_aut/author.dll\"");
135 sb.append(StringPool.NEW_LINE);
136 sb.append("FPAdminScriptUrl=\"_vti_bin/_vti_adm/admin.dll\"");
137 sb.append(StringPool.NEW_LINE);
138 sb.append("TPScriptUrl=\"_vti_bin/owssvr.dll\"");
139 sb.append(StringPool.NEW_LINE);
140 sb.append("-->");
141
142 ServletResponseUtil.write(response, sb.toString());
143 }
144
145 private static Log _log = LogFactoryUtil.getLog(SharepointServlet.class);
146
147 }