Render HTML as text/plain

This commit is contained in:
Naoki Takezoe
2018-06-12 20:02:49 +09:00
parent 2586b436cf
commit f1ffb25e43
5 changed files with 9 additions and 5 deletions

View File

@@ -254,7 +254,7 @@ abstract class ControllerBase
repository: RepositoryService.RepositoryInfo repository: RepositoryService.RepositoryInfo
): Unit = { ): Unit = {
JGitUtil.getObjectLoaderFromId(git, objectId) { loader => JGitUtil.getObjectLoaderFromId(git, objectId) { loader =>
contentType = FileUtil.getMimeType(path) contentType = FileUtil.getSafeMimeType(path)
if (loader.isLarge) { if (loader.isLarge) {
response.setContentLength(loader.getSize.toInt) response.setContentLength(loader.getSize.toInt)

View File

@@ -406,7 +406,7 @@ trait IssuesControllerBase extends ControllerBase {
case dir if (dir.exists && dir.isDirectory) => case dir if (dir.exists && dir.isDirectory) =>
dir.listFiles.find(_.getName.startsWith(params("file") + ".")).map { file => dir.listFiles.find(_.getName.startsWith(params("file") + ".")).map { file =>
response.setHeader("Content-Disposition", f"""inline; filename=${file.getName}""") response.setHeader("Content-Disposition", f"""inline; filename=${file.getName}""")
RawData(FileUtil.getMimeType(file.getName), file) RawData(FileUtil.getSafeMimeType(file.getName), file)
} }
case _ => None case _ => None
}) getOrElse NotFound() }) getOrElse NotFound()

View File

@@ -79,7 +79,7 @@ trait ReleaseControllerBase extends ControllerBase {
} yield { } yield {
response.setHeader("Content-Disposition", s"attachment; filename=${asset.label}") response.setHeader("Content-Disposition", s"attachment; filename=${asset.label}")
RawData( RawData(
FileUtil.getMimeType(asset.label), FileUtil.getSafeMimeType(asset.label),
new File(getReleaseFilesDir(repository.owner, repository.name), FileUtil.checkFilename(tagName + "/" + fileId)) new File(getReleaseFilesDir(repository.owner, repository.name), FileUtil.checkFilename(tagName + "/" + fileId))
) )
}).getOrElse(NotFound()) }).getOrElse(NotFound())

View File

@@ -26,7 +26,7 @@ class PluginAssetsServlet extends HttpServlet {
try { try {
val bytes = IOUtils.toByteArray(in) val bytes = IOUtils.toByteArray(in)
resp.setContentLength(bytes.length) resp.setContentLength(bytes.length)
resp.setContentType(FileUtil.getContentType(path, bytes)) resp.setContentType(FileUtil.getMimeType(path, bytes))
resp.setHeader("Cache-Control", "max-age=3600") resp.setHeader("Cache-Control", "max-age=3600")
resp.getOutputStream.write(bytes) resp.getOutputStream.write(bytes)
} finally { } finally {

View File

@@ -16,7 +16,7 @@ object FileUtil {
} }
} }
def getContentType(name: String, bytes: Array[Byte]): String = { def getMimeType(name: String, bytes: Array[Byte]): String = {
defining(getMimeType(name)) { mimeType => defining(getMimeType(name)) { mimeType =>
if (mimeType == "application/octet-stream" && isText(bytes)) { if (mimeType == "application/octet-stream" && isText(bytes)) {
"text/plain" "text/plain"
@@ -26,6 +26,10 @@ object FileUtil {
} }
} }
def getSafeMimeType(name: String): String = {
getMimeType(name).replace("text/html", "text/plain")
}
def isImage(name: String): Boolean = getMimeType(name).startsWith("image/") def isImage(name: String): Boolean = getMimeType(name).startsWith("image/")
def isLarge(size: Long): Boolean = (size > 1024 * 1000) def isLarge(size: Long): Boolean = (size > 1024 * 1000)