From 5641fee39a68a879d9c1e8813b5b67da1e94ada7 Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Thu, 13 Jul 2017 01:52:26 +0900 Subject: [PATCH] Fix plugin controller handling --- ...bucket-notifications-plugin_2.12-1.0.0.jar | Bin 112090 -> 104586 bytes .../core/servlet/PluginControllerFilter.scala | 18 +++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/resources/plugins/gitbucket-notifications-plugin_2.12-1.0.0.jar b/src/main/resources/plugins/gitbucket-notifications-plugin_2.12-1.0.0.jar index a82301a53197798df7fe53b3580d4895ea2bd9d5..1ef1dfac8798efeafa4f7efe44c8d1fc17fcba80 100644 GIT binary patch delta 13407 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 diff --git a/src/main/scala/gitbucket/core/servlet/PluginControllerFilter.scala b/src/main/scala/gitbucket/core/servlet/PluginControllerFilter.scala index 442841b1b..06c6ba5a2 100644 --- a/src/main/scala/gitbucket/core/servlet/PluginControllerFilter.scala +++ b/src/main/scala/gitbucket/core/servlet/PluginControllerFilter.scala @@ -3,6 +3,7 @@ package gitbucket.core.servlet import javax.servlet._ import javax.servlet.http.HttpServletRequest +import gitbucket.core.controller.ControllerBase import gitbucket.core.plugin.PluginRegistry class PluginControllerFilter extends Filter { @@ -20,18 +21,25 @@ class PluginControllerFilter extends Filter { } override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit = { - val controller = PluginRegistry().getControllers().find { case (_, path) => + val controller = PluginRegistry().getControllers().filter { case (_, path) => val requestUri = request.asInstanceOf[HttpServletRequest].getRequestURI - path.endsWith("/*") && requestUri.startsWith(path.replaceFirst("/\\*$", "/")) + val start = path.replaceFirst("/\\*$", "/") + path.endsWith("/*") && (requestUri + "/").startsWith(start) } - controller.map { case (controller, _) => + val filterChainWrapper = controller.foldLeft(chain){ case (chain, (controller, _)) => + new FilterChainWrapper(controller, chain) + } + filterChainWrapper.doFilter(request, response) + } + + class FilterChainWrapper(controller: ControllerBase, chain: FilterChain) extends FilterChain { + override def doFilter(request: ServletRequest, response: ServletResponse): Unit = { if(controller.config == null){ controller.init(filterConfig) } controller.doFilter(request, response, chain) - }.getOrElse{ - chain.doFilter(request, response) } } + }