提交 8622d3ac 编写于 作者: O o2null

Merge branch 'fix/snap' into 'release'

Fix/snap

See merge request o2oa/o2oa!1737
package com.x.server.console.server.web;
import java.io.IOException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.client.api.ContentProvider;
import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.client.api.Response;
import org.eclipse.jetty.client.util.DeferredContentProvider;
import org.eclipse.jetty.proxy.ProxyServlet;
import org.eclipse.jetty.util.Callback;
public class Proxy extends ProxyServlet {
......@@ -28,11 +37,11 @@ public class Proxy extends ProxyServlet {
}
private String port(String url, String port) {
if (StringUtils.startsWithIgnoreCase(url, "https://")) {
if (StringUtils.startsWithIgnoreCase(url, "https://") || StringUtils.startsWithIgnoreCase(url, "wss://")) {
if (StringUtils.equals(port, "443")) {
return "";
}
} else if (StringUtils.startsWithIgnoreCase(url, "http://")) {
} else if (StringUtils.startsWithIgnoreCase(url, "http://") || StringUtils.startsWithIgnoreCase(url, "ws://")) {
if (StringUtils.equals(port, "80")) {
return "";
}
......@@ -40,13 +49,40 @@ public class Proxy extends ProxyServlet {
return ":" + port;
}
// @Test
// public void test1() {
// System.out.println(target("http://www.o2oa.net:20030/111/22?1=1", "80"));
// System.out.println(target("http://www.o2oa.net:20030/111/22?1=1", "81"));
// System.out.println(target("https://www.o2oa.net:20030/111/22?1=1", "80"));
// System.out.println(target("https://www.o2oa.net:20030/111/22?1=1", "443"));
// System.out.println(target("https://www.o2oa.net:20030/111/22?1=1", "4430"));
// }
@Override
protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response,
Request proxyRequest) throws IOException {
ServletInputStream input = request.getInputStream();
DeferredContentProvider provider = new DeferredContentProvider();
input.setReadListener(newReadListener(request, response, proxyRequest, provider));
return provider;
}
@Override
protected void onResponseContent(HttpServletRequest request, HttpServletResponse response, Response proxyResponse,
byte[] buffer, int offset, int length, Callback callback) {
try {
if (_log.isDebugEnabled())
_log.debug("{} proxying content to downstream: {} bytes", getRequestId(request), length);
StreamWriter writeListener = (StreamWriter) request.getAttribute(WRITE_LISTENER_ATTRIBUTE);
if (writeListener == null) {
writeListener = newWriteListener(request, proxyResponse);
request.setAttribute(WRITE_LISTENER_ATTRIBUTE, writeListener);
// Set the data to write before calling setWriteListener(), because
// setWriteListener() may trigger the call to onWritePossible() on
// a different thread and we would have a race.
writeListener.data(buffer, offset, length, callback);
// Setting the WriteListener triggers an invocation to onWritePossible().
response.getOutputStream().setWriteListener(writeListener);
} else {
writeListener.data(buffer, offset, length, callback);
writeListener.onWritePossible();
}
} catch (Throwable x) {
callback.failed(x);
proxyResponse.abort(x);
}
}
}
......@@ -18,7 +18,7 @@ import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Snap;
import com.x.processplatform.core.entity.content.Snap;
import com.x.processplatform.core.entity.content.Snap_;
import com.x.processplatform.core.entity.element.Application;
import com.x.processplatform.core.entity.element.Process;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册