Prevent use of /plugins/Plan/web/ for export.

Warns if the export path is bad and falls back to 'Analysis Results'

Affects issues:
- Fixed #1194, Fixed #1279, Fixed #1195
This commit is contained in:
Rsl1122 2020-01-07 13:41:49 +02:00
parent d22c850253
commit ca89ab70d9

View File

@ -23,6 +23,7 @@ import com.djrapitops.plan.identification.Server;
import com.djrapitops.plan.settings.config.PlanConfig; import com.djrapitops.plan.settings.config.PlanConfig;
import com.djrapitops.plan.settings.config.paths.ExportSettings; import com.djrapitops.plan.settings.config.paths.ExportSettings;
import com.djrapitops.plan.storage.file.PlanFiles; import com.djrapitops.plan.storage.file.PlanFiles;
import com.djrapitops.plugin.logging.console.PluginLogger;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
@ -48,6 +49,7 @@ public class Exporter extends FileExporter {
private final PlayersPageExporter playersPageExporter; private final PlayersPageExporter playersPageExporter;
private final ServerPageExporter serverPageExporter; private final ServerPageExporter serverPageExporter;
private final NetworkPageExporter networkPageExporter; private final NetworkPageExporter networkPageExporter;
private final PluginLogger logger;
private final Set<UUID> failedServers; private final Set<UUID> failedServers;
@ -59,7 +61,8 @@ public class Exporter extends FileExporter {
PlayerPageExporter playerPageExporter, PlayerPageExporter playerPageExporter,
PlayersPageExporter playersPageExporter, PlayersPageExporter playersPageExporter,
ServerPageExporter serverPageExporter, ServerPageExporter serverPageExporter,
NetworkPageExporter networkPageExporter NetworkPageExporter networkPageExporter,
PluginLogger logger
) { ) {
this.files = files; this.files = files;
this.config = config; this.config = config;
@ -68,12 +71,20 @@ public class Exporter extends FileExporter {
this.playersPageExporter = playersPageExporter; this.playersPageExporter = playersPageExporter;
this.serverPageExporter = serverPageExporter; this.serverPageExporter = serverPageExporter;
this.networkPageExporter = networkPageExporter; this.networkPageExporter = networkPageExporter;
this.logger = logger;
failedServers = new HashSet<>(); failedServers = new HashSet<>();
} }
private Path getPageExportDirectory() { private Path getPageExportDirectory() {
Path exportDirectory = Paths.get(config.get(ExportSettings.HTML_EXPORT_PATH)); Path exportDirectory = Paths.get(config.get(ExportSettings.HTML_EXPORT_PATH));
Path webDirectory = files.getDataDirectory().resolve("web");
if (exportDirectory.toAbsolutePath().equals(webDirectory.toAbsolutePath())) {
logger.warn("'" + ExportSettings.HTML_EXPORT_PATH.getPath() + "' can not be '/Plan/web/' directory, using '/Plan/Analysis Results' as fallback.");
exportDirectory = files.getDataDirectory().resolve("Analysis Results");
}
return exportDirectory.isAbsolute() return exportDirectory.isAbsolute()
? exportDirectory ? exportDirectory
: files.getDataDirectory().resolve(exportDirectory); : files.getDataDirectory().resolve(exportDirectory);