From 7e5107ef3e2bb0d7c31d3050fb8ba6cc1601ef1a Mon Sep 17 00:00:00 2001 From: Glenn Matthys <glenn@webmind.be> Date: Sun, 17 Jan 2016 17:15:38 -0500 Subject: [PATCH] Describe how DH key bitlength can be influenced --- src/main/java/com/gitblit/servlet/RawServlet.java | 32 +++++++++++++++----------------- 1 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gitblit/servlet/RawServlet.java b/src/main/java/com/gitblit/servlet/RawServlet.java index 09f9f8a..897047d 100644 --- a/src/main/java/com/gitblit/servlet/RawServlet.java +++ b/src/main/java/com/gitblit/servlet/RawServlet.java @@ -166,23 +166,14 @@ } // determine repository and resource from url - String repository = ""; + String repository = path; Repository r = null; - int offset = 0; - while (r == null) { - int slash = path.indexOf('/', offset); - if (slash == -1) { - repository = path; - } else { - repository = path.substring(0, slash); - } - offset = ( slash + 1 ); + int terminator = repository.length(); + do { + repository = repository.substring(0, terminator); r = repositoryManager.getRepository(repository, false); - if (repository.equals(path)) { - // either only repository in url or no repository found - break; - } - } + terminator = repository.lastIndexOf('/'); + } while (r == null && terminator > -1 ); ServletContext context = request.getSession().getServletContext(); @@ -242,7 +233,14 @@ try { String ext = StringUtils.getFileExtension(file).toLowerCase(); - String contentType = quickContentTypes.get(ext); + // We can't parse out an extension for classic "dotfiles", so make a general assumption that + // they're text files to allow presenting them in browser instead of only for download. + // + // However, that only holds for files with no other extension included, for files that happen + // to start with a dot but also include an extension, process the extension normally. + // This logic covers .gitattributes, .gitignore, .zshrc, etc., but does not cover .mongorc.js, .zshrc.bak + boolean isExtensionlessDotfile = file.charAt(0) == '.' && (file.length() == 1 || file.indexOf('.', 1) < 0); + String contentType = isExtensionlessDotfile ? "text/plain" : quickContentTypes.get(ext); if (contentType == null) { List<String> exts = runtimeManager.getSettings().getStrings(Keys.web.prettyPrintExtensions); @@ -468,7 +466,7 @@ served = true; } } finally { - tw.release(); + tw.close(); rw.dispose(); } -- Gitblit v1.9.1