diff --git a/src/main/java/org/codelibs/fess/app/web/admin/log/AdminLogAction.java b/src/main/java/org/codelibs/fess/app/web/admin/log/AdminLogAction.java index ff3205ec1..422d6b87e 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/log/AdminLogAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/log/AdminLogAction.java @@ -62,7 +62,7 @@ public class AdminLogAction extends FessAdminAction { public ActionResponse download(final String id) { final String filename = new String(Base64.getDecoder().decode(id), StandardCharsets.UTF_8).replace("..", "").replaceAll("\\s", ""); final String logFilePath = systemHelper.getLogFilePath(); - if (StringUtil.isNotBlank(logFilePath)) { + if (StringUtil.isNotBlank(logFilePath) && isLogFilename(filename)) { final Path path = Paths.get(logFilePath, filename); return asStream(filename).contentTypeOctetStream().stream(out -> { try (InputStream in = Files.newInputStream(path)) { @@ -83,7 +83,7 @@ public class AdminLogAction extends FessAdminAction { if (StringUtil.isNotBlank(logFilePath)) { final Path logDirPath = Paths.get(logFilePath); try (Stream stream = Files.list(logDirPath)) { - stream.filter(entry -> entry.getFileName().toString().endsWith(".log")).forEach(filePath -> { + stream.filter(entry -> isLogFilename(entry.getFileName().toString())).forEach(filePath -> { final Map map = new HashMap<>(); final String name = filePath.getFileName().toString(); map.put("id", Base64.getUrlEncoder().encodeToString(name.getBytes(StandardCharsets.UTF_8))); @@ -102,6 +102,10 @@ public class AdminLogAction extends FessAdminAction { return logFileItems; } + public static boolean isLogFilename(final String name) { + return name.endsWith(".log") || name.endsWith(".log.gz"); + } + private HtmlResponse asIndexHtml() { return asHtml(path_AdminLog_AdminLogJsp).renderWith(data -> { RenderDataUtil.register(data, "logFileItems", getLogFileItems()); diff --git a/src/main/java/org/codelibs/fess/app/web/api/admin/log/ApiAdminLogAction.java b/src/main/java/org/codelibs/fess/app/web/api/admin/log/ApiAdminLogAction.java index a645c52ae..df1da1cbe 100644 --- a/src/main/java/org/codelibs/fess/app/web/api/admin/log/ApiAdminLogAction.java +++ b/src/main/java/org/codelibs/fess/app/web/api/admin/log/ApiAdminLogAction.java @@ -16,6 +16,7 @@ package org.codelibs.fess.app.web.api.admin.log; import static org.codelibs.fess.app.web.admin.log.AdminLogAction.getLogFileItems; +import static org.codelibs.fess.app.web.admin.log.AdminLogAction.isLogFilename; import java.io.InputStream; import java.nio.charset.StandardCharsets; @@ -54,7 +55,7 @@ public class ApiAdminLogAction extends FessApiAdminAction { public StreamResponse get$file(final String id) { final String filename = new String(Base64.getDecoder().decode(id), StandardCharsets.UTF_8).replace("..", "").replaceAll("\\s", ""); final String logFilePath = systemHelper.getLogFilePath(); - if (StringUtil.isNotBlank(logFilePath)) { + if (StringUtil.isNotBlank(logFilePath) && isLogFilename(filename)) { final Path path = Paths.get(logFilePath, filename); return asStream(filename).contentTypeOctetStream().stream(out -> { try (InputStream in = Files.newInputStream(path)) { diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 644e0d7bb..911877c0b 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -29,7 +29,7 @@ + filePattern="${log.file.basedir}/${domain.name}${backup.date.suffix}-%i.log.gz"> ${log.pattern} @@ -41,7 +41,7 @@ max="${backup.max.history}" compressionLevel="9" /> + filePattern="${log.file.basedir}/audit${backup.date.suffix}-%i.log.gz"> ${audit.log.pattern}