From 42e228fe4ee1a09cc494735718a5283c410aded6 Mon Sep 17 00:00:00 2001 From: zhourui Date: Tue, 29 Jun 2021 14:36:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0proxy=E4=BB=A3=E7=90=86servle?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/server/JettySeverTools.java | 1 + .../control/jaxrs/ProxyServletFilter.java | 10 ++++++ .../control/servlet/proxy/ActionDo.java | 34 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/ProxyServletFilter.java create mode 100644 o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/servlet/proxy/ActionDo.java diff --git a/o2server/x_console/src/main/java/com/x/server/console/server/JettySeverTools.java b/o2server/x_console/src/main/java/com/x/server/console/server/JettySeverTools.java index c378fda48a..feb3820dd7 100644 --- a/o2server/x_console/src/main/java/com/x/server/console/server/JettySeverTools.java +++ b/o2server/x_console/src/main/java/com/x/server/console/server/JettySeverTools.java @@ -115,6 +115,7 @@ public abstract class JettySeverTools { filter = FileFilterUtils.or(filter, new WildcardFileFilter("ehcache-*.jar")); /* 如果不单独导入会导致java.lang.NoClassDefFoundError: org/eclipse/jetty/http/MimeTypes */ filter = FileFilterUtils.or(filter, new WildcardFileFilter("jetty-all-*.jar")); + filter = FileFilterUtils.or(filter, new WildcardFileFilter("jetty-proxy-*.jar")); filter = FileFilterUtils.or(filter, new WildcardFileFilter("quartz-*.jar")); filter = FileFilterUtils.or(filter, new WildcardFileFilter("slf4j-simple-*.jar")); filter = FileFilterUtils.or(filter, new WildcardFileFilter("jul-to-slf4j-*.jar")); diff --git a/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/ProxyServletFilter.java b/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/ProxyServletFilter.java new file mode 100644 index 0000000000..58cc0a314a --- /dev/null +++ b/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/ProxyServletFilter.java @@ -0,0 +1,10 @@ +package com.x.general.assemble.control.jaxrs; + +import javax.servlet.annotation.WebFilter; + +import com.x.base.core.project.jaxrs.AnonymousCipherManagerUserJaxrsFilter; + +@WebFilter(urlPatterns = "/servlet/proxy/*", asyncSupported = true) +public class ProxyServletFilter extends AnonymousCipherManagerUserJaxrsFilter { + +} diff --git a/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/servlet/proxy/ActionDo.java b/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/servlet/proxy/ActionDo.java new file mode 100644 index 0000000000..82feb0bd2f --- /dev/null +++ b/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/servlet/proxy/ActionDo.java @@ -0,0 +1,34 @@ +package com.x.general.assemble.control.servlet.proxy; + +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; + +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang3.StringUtils; +import org.eclipse.jetty.proxy.ProxyServlet; + +@WebServlet(urlPatterns = "/servlet/proxy/*", asyncSupported = true) +public class ActionDo extends ProxyServlet { + + private static final long serialVersionUID = -2607395779516788482L; + + @Override + protected String rewriteTarget(HttpServletRequest clientRequest) { + String url = clientRequest.getParameter("url"); + if (StringUtils.isEmpty(url)) { + url = URLDecoder.decode(clientRequest.getRequestURL().toString(), StandardCharsets.UTF_8); + url = StringUtils.substringAfter(url, "/servlet/proxy/"); + String query = clientRequest.getQueryString(); + if (StringUtils.isEmpty(query)) { + url = url + "?" + query; + } + return url; + } else { + return URLDecoder.decode(url, StandardCharsets.UTF_8); + + } + } + +} \ No newline at end of file -- GitLab