From: James Moger Date: Wed, 23 Apr 2014 16:06:59 +0000 (-0400) Subject: Improve pages servlet raw navigation (issue-411) X-Git-Tag: v1.5.1~19 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1cfce55191f8ae63b1830892fc0883506fd8507d;p=gitblit.git Improve pages servlet raw navigation (issue-411) --- diff --git a/src/main/java/com/gitblit/servlet/PagesServlet.java b/src/main/java/com/gitblit/servlet/PagesServlet.java index 5124b8ca..f4e8bb23 100644 --- a/src/main/java/com/gitblit/servlet/PagesServlet.java +++ b/src/main/java/com/gitblit/servlet/PagesServlet.java @@ -111,6 +111,10 @@ public class PagesServlet extends DaggerServlet { // strip leading / path = path.substring(1); } + if (path.charAt(path.length() - 1) == '/') { + // strip trailing slash + path = path.substring(0, path.length() - 1); + } // determine repository and resource from url String repository = ""; @@ -229,7 +233,7 @@ public class PagesServlet extends DaggerServlet { response.getWriter().append("pathmodesize"); response.getWriter().append(""); response.getWriter().append(""); - String pattern = "{1}{2}{3}"; + String pattern = "{1}{2}{3}"; final ByteFormat byteFormat = new ByteFormat(); List entries = JGitUtils.getFilesInPath(r, resource, commit); if (!entries.isEmpty()) { @@ -238,8 +242,15 @@ public class PagesServlet extends DaggerServlet { entries.add(0, new PathModel("..", resource + "/..", 0, FileMode.TREE.getBits(), null, null)); } } + + String basePath = request.getServletPath() + request.getPathInfo(); + if (basePath.charAt(basePath.length() - 1) == '/') { + // strip trailing slash + basePath = basePath.substring(0, basePath.length() - 1); + } for (PathModel entry : entries) { - response.getWriter().append(MessageFormat.format(pattern, entry.path, entry.name, JGitUtils.getPermissionsFromMode(entry.mode), byteFormat.format(entry.size))); + response.getWriter().append(MessageFormat.format(pattern, basePath, entry.name, + JGitUtils.getPermissionsFromMode(entry.mode), byteFormat.format(entry.size))); } response.getWriter().append(""); response.getWriter().append("");