(refs #312)Fix redirection for non git client

This commit is contained in:
takezoe
2014-03-12 22:39:12 +09:00
parent 2d0f59b6f2
commit 49bf88f7a7

View File

@@ -50,11 +50,11 @@ class GitRepositoryServlet extends GitServlet with SystemSettingsService {
override def service(req: HttpServletRequest, res: HttpServletResponse): Unit = {
val agent = req.getHeader("USER-AGENT")
if(agent == null || !agent.startsWith("git/")){
val index = req.getRequestURI.indexOf(".git")
if(index >= 0 && (agent == null || agent.toLowerCase.indexOf("git/") < 0)){
// redirect for browsers
val paths = req.getRequestURI.split("/")
val baseUrl = loadSystemSettings().baseUrl.getOrElse(req.getServletContext.getContextPath)
res.sendRedirect(baseUrl + "/" + paths.dropRight(1).last + "/" + paths.last.replaceFirst("\\.git$", ""))
val paths = req.getRequestURI.substring(0, index).split("/")
res.sendRedirect(baseUrl(req) + "/" + paths.dropRight(1).last + "/" + paths.last)
} else {
// response for git client
super.service(req, res)