diff --git a/Bonobo.Git.Server/App_Start/RouteConfig.cs b/Bonobo.Git.Server/App_Start/RouteConfig.cs index 4d2458fb3..ff92163cc 100644 --- a/Bonobo.Git.Server/App_Start/RouteConfig.cs +++ b/Bonobo.Git.Server/App_Start/RouteConfig.cs @@ -8,6 +8,8 @@ public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { + string guid_regex = @"[\da-z]{8}-[\da-z]{4}-[\da-z]{4}-[\da-z]{4}-[\da-z]{12}"; + routes.MapRoute("SecureInfoRefs", "{repositoryName}.git/info/refs", new { controller = "Git", action = "SecureGetInfoRefs" }, @@ -37,65 +39,65 @@ public static void RegisterRoutes(RouteCollection routes) new { action = "Create" }); routes.MapRoute("RepositoryTree", - "Repository/{id}/{encodedName}/Tree/{*encodedPath}", + "Repository/{id}/Tree/{encodedName}/{*encodedPath}", new { controller = "Repository", action = "Tree" }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("RepositoryBlob", "Repository/{id}/{encodedName}/Blob/{*encodedPath}", new { controller = "Repository", action = "Blob" }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("RepositoryRaw", "Repository/{id}/{encodedName}/Raw/{*encodedPath}", new { controller = "Repository", action = "Raw" }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("RepositoryBlame", "Repository/{id}/{encodedName}/Blame/{*encodedPath}", new { controller = "Repository", action = "Blame" }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("RepositoryDownload", "Repository/{id}/{encodedName}/Download/{*encodedPath}", new { controller = "Repository", action = "Download" }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("RepositoryCommits", "Repository/{id}/{encodedName}/Commits", new { controller = "Repository", action = "Commits" }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("RepositoryCommit", - "Repository/{id}/{encodedName}/Commit/{commit}/", + "Repository/{id}/Commit/{commit}/", new { controller = "Repository", action = "Commit" }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("RepositoryHistory", "Repository/{id}/{encodedName}/History/{*encodedPath}", new { controller = "Repository", action = "History" }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("Repository", "Repository/{id}/{action}/{reponame}", new { controller = "Repository", action = "Detail", reponame = UrlParameter.Optional }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("Account", "Account/{id}/{action}/{username}", new { controller = "Account", action = "Detail", username = UrlParameter.Optional }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("Team", "Team/{id}/{action}/{teamname}", new { controller = "Team", action = "Detail", teamname = UrlParameter.Optional }, - new { id = @"\d+" }); + new { id = guid_regex }); routes.MapRoute("Validation", "Validation/{action}", new { controller = "Validation", action = String.Empty }); routes.MapRoute("RepoCommits", - "Repository/Commits/{id}", + "Repository/{id}/Commits", new { controller = "Repository", action = "Commits", id = string.Empty, page = 1 }); routes.MapRoute("Default", diff --git a/Bonobo.Git.Server/Controllers/RepositoryController.cs b/Bonobo.Git.Server/Controllers/RepositoryController.cs index 96b0bb203..b45ca685b 100644 --- a/Bonobo.Git.Server/Controllers/RepositoryController.cs +++ b/Bonobo.Git.Server/Controllers/RepositoryController.cs @@ -334,13 +334,15 @@ public ActionResult Raw(Guid id, string encodedName, string encodedPath, bool di { return File(model.Data, "application/octet-stream", model.Name); } - if (model.IsText) + if (model.IsImage) { - return Content(model.Text, "text/plain", model.Encoding); + // do not include the last parameter "fileDownloadName" so the "Content-Disposition: attachment" header will not be added. + return File(model.Data, MimeTypeMap.GetMimeType(Path.GetExtension(model.Name.ToLower()))); } - if (model.IsImage) + // text is the least prefered choice, and seems the IsText will always be true if the file is not zero length... + if (model.IsText) { - return File(model.Data, MimeTypeMap.GetMimeType(Path.GetExtension(model.Name.ToLower())), model.Name); + return Content(model.Text, "text/plain", model.Encoding); } } @@ -448,7 +450,7 @@ public ActionResult Tags(Guid id, string encodedName, int page = 1) } [WebAuthorizeRepository] - public ActionResult Commits(Guid id, string encodedName, int page) + public ActionResult Commits(Guid id, string encodedName, int page = 1) { page = page >= 1 ? page : 1; diff --git a/Bonobo.Git.Server/Views/Repository/Blame.cshtml b/Bonobo.Git.Server/Views/Repository/Blame.cshtml index 7b23067ed..b28a3cce5 100644 --- a/Bonobo.Git.Server/Views/Repository/Blame.cshtml +++ b/Bonobo.Git.Server/Views/Repository/Blame.cshtml @@ -13,10 +13,10 @@ @{