diff --git a/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java b/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java index a36045ef..9856b06c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java @@ -145,7 +145,7 @@ public class ChatManager extends FreedomService public void adminChat(CommandSender sender, String message) { Displayable display = plugin.rm.getDisplay(sender); - FLog.info("[ADMIN] " + sender.getName() + " " + display.getTag() + ": " + message); + FLog.info("[ADMIN] " + sender.getName() + " " + display.getTag() + ": " + message, true); for (Player player : server.getOnlinePlayers()) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_schematic.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_schematic.java index f83e8677..a7dcca64 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_schematic.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_schematic.java @@ -1,6 +1,10 @@ package me.totalfreedom.totalfreedommod.httpd.module; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; @@ -190,11 +194,16 @@ public class Module_schematic extends HTTPDModule throw new SchematicTransferException("Can't resolve original file name."); } - if (tempFile.length() > FileUtils.ONE_MB ) + if (tempFile.length() > FileUtils.ONE_MB) { throw new SchematicTransferException("Schematic is too big (1mb max)."); } + if (plugin.web.getWorldEditPlugin() == null) + { + throw new SchematicTransferException("WorldEdit is not on the server."); + } + if (!SCHEMATIC_FILENAME_LC.matcher(origFileName.toLowerCase()).find()) { throw new SchematicTransferException("File name must be alphanumeric, between 1 and 30 characters long (inclusive), and have a \".schematic\" extension."); @@ -206,10 +215,28 @@ public class Module_schematic extends HTTPDModule throw new SchematicTransferException("Schematic already exists on the server."); } + try { FileUtils.copyFile(tempFile, targetFile); + ClipboardFormat format = ClipboardFormats.findByFile(targetFile); + if (format == null) + { + FileUtils.deleteQuietly(targetFile); + throw new SchematicTransferException("Schematic is not a valid schematic."); + } + try + { + ClipboardReader reader = format.getReader(new FileInputStream(targetFile)); + } + catch (IOException e) + { + FileUtils.deleteQuietly(targetFile); + throw new SchematicTransferException("Schematic is not a valid schematic."); + } + FLog.info(remoteAddress + " uploaded schematic: " + targetFile.getName()); + } catch (IOException ex) {