diff --git a/build.gradle b/build.gradle index 2fb2988..d43fa98 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ apply plugin: "idea-utils" archivesBaseName = "D3Backend" group = "net.doubledoordev.backend" -version = "0.11.1" +version = "0.11.2" if (System.getenv().BUILD_NUMBER != null) version += "." + System.getenv().BUILD_NUMBER def vendor = "DoubleDoorDevelopment" @@ -66,7 +66,7 @@ dependencies { compile group: "org.apache.commons", name: "commons-io", version: "1.3.2" compile group: "org.apache.commons", name: "commons-lang3", version: "3.3.2" compile group: "commons-codec", name: "commons-codec", version: "1.9" - compile group: "org.freemarker", name: "freemarker", version: "2.3.20" + compile group: "org.freemarker", name: "freemarker", version: "2.3.23" compile group: "org.apache.logging.log4j", name: "log4j-core", version: "2.0.2" compile group: "net.lingala.zip4j", name: "zip4j", version: "1.3.2" compile group: "org.glassfish.grizzly", name: "grizzly-http-all", version: "2.3.17" diff --git a/src/main/java/net/doubledoordev/backend/server/FileManager.java b/src/main/java/net/doubledoordev/backend/server/FileManager.java index d4bf3c3..fe76095 100644 --- a/src/main/java/net/doubledoordev/backend/server/FileManager.java +++ b/src/main/java/net/doubledoordev/backend/server/FileManager.java @@ -112,8 +112,7 @@ public Collection makeBreadcrumbs() public String stripServer(File file) { - if (file.equals(serverFolder)) return serverFolder.getName(); - return file.toString().substring(serverFolder.toString().length() + 1).replace('\\', '/'); + return Helper.getRelativeString(serverFolder, file); } public static boolean canEdit(File file) @@ -252,7 +251,7 @@ public void delete(IMethodCaller caller) throws IOException public void newFile(IMethodCaller caller, String name) throws IOException { - server.logAction(caller, "New File " + stripServer(file)); + server.logAction(caller, "New File " + name + " in " + stripServer(file)); FileUtils.touch(new File(file, name)); FileMonitorSocketApplication.update(getJson(file), file); } diff --git a/src/main/java/net/doubledoordev/backend/util/Cache.java b/src/main/java/net/doubledoordev/backend/util/Cache.java index b669997..6655e30 100644 --- a/src/main/java/net/doubledoordev/backend/util/Cache.java +++ b/src/main/java/net/doubledoordev/backend/util/Cache.java @@ -59,7 +59,7 @@ public class Cache */ private static final Timer TIMER = new Timer("Cache-Timer", true); - private static final Table FORGE_VERSION_TABLE = Tables.newCustomTable(new LinkedHashMap<>(), LinkedHashMap::new); + private static final Table FORGE_VERSION_TABLE = Tables.synchronizedTable(Tables.newCustomTable(new LinkedHashMap<>(), LinkedHashMap::new)); private static final TimerTask FORGE_VERSIONS_DOWNLOADER = new TimerTask() { private boolean hasInstaller(JsonObject object) @@ -78,7 +78,7 @@ public void run() Main.LOGGER.info("[Cache] Refreshing Forge version cache...."); Reader reader = new InputStreamReader(new URL(FORGE_VERIONS_URL).openStream()); - JsonObject root = Constants.JSONPARSER.parse(reader).getAsJsonObject(); + JsonObject root = JSONPARSER.parse(reader).getAsJsonObject(); reader.close(); // WARNING: Java 8 madness ahead. @@ -127,7 +127,7 @@ public void run() } } }; - private static final Map CASHED_MC_VERSIONS = new LinkedHashMap<>(); + private static final Map CASHED_MC_VERSIONS = Collections.synchronizedMap(new LinkedHashMap<>()); private static final TimerTask MC_VERSIONS_DOWNLOADER = new TimerTask() { @Override @@ -136,8 +136,8 @@ public void run() JsonObject versionList; try { - Reader sr = new InputStreamReader(new URL(Constants.MC_VERIONS_URL).openStream()); - versionList = Constants.JSONPARSER.parse(sr).getAsJsonObject(); + Reader sr = new InputStreamReader(new URL(MC_VERIONS_URL).openStream()); + versionList = JSONPARSER.parse(sr).getAsJsonObject(); sr.close(); } catch (IOException e) @@ -145,22 +145,19 @@ public void run() e.printStackTrace(); return; } - synchronized (CASHED_MC_VERSIONS) + CASHED_MC_VERSIONS.clear(); + for (JsonElement element : versionList.getAsJsonArray("versions")) { - CASHED_MC_VERSIONS.clear(); - for (JsonElement element : versionList.getAsJsonArray("versions")) + JsonObject o = element.getAsJsonObject(); + if (!o.get("type").getAsString().equals("release") && !o.get("type").getAsString().equals("snapshot")) + continue; + try { - JsonObject o = element.getAsJsonObject(); - if (!o.get("type").getAsString().equals("release") && !o.get("type").getAsString().equals("snapshot")) - continue; - try - { - CASHED_MC_VERSIONS.put(o.get("id").getAsString(), new URL(o.get("url").getAsString())); - } - catch (MalformedURLException e) - { - e.printStackTrace(); - } + CASHED_MC_VERSIONS.put(o.get("id").getAsString(), new URL(o.get("url").getAsString())); + } + catch (MalformedURLException e) + { + e.printStackTrace(); } } } diff --git a/src/main/java/net/doubledoordev/backend/util/Helper.java b/src/main/java/net/doubledoordev/backend/util/Helper.java index 4845578..32efc4c 100644 --- a/src/main/java/net/doubledoordev/backend/util/Helper.java +++ b/src/main/java/net/doubledoordev/backend/util/Helper.java @@ -55,6 +55,7 @@ public class Helper private static final Map UUID_USERNMAME_MAP = new HashMap<>(); private static final SimpleDateFormat BAN_SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + private static final SimpleDateFormat HTML_TIME_FORMAT = new SimpleDateFormat("''HH:mm'':ss"); public static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("#.##"); private static final char[] symbols = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); private static final int MAX_REDIRECTS = 25; @@ -331,15 +332,19 @@ public static IMethodCaller invokeWithRefectionMagic(WebSocket caller, Object in public static String getVersionString() { - return String.format("v%s - build #%s", Main.version, Main.build); + return Main.version; } public static String formatDate(long time) { - if (time == -1) time = new Date().getTime(); return SIMPLE_DATE_FORMAT.format(time); } + public static String getServerTime() + { + return HTML_TIME_FORMAT.format(new Date()); + } + public static String stripColor(String txt) { return txt.replaceAll("(?i)\u00a7[0-9a-fk-or]", ""); @@ -394,4 +399,10 @@ public static void doWebMethodCall(WebSocket socket, String text, Object o) socket.close(); } } + + public static String getRelativeString(File root, File target) + { + if (root.equals(target)) return "."; + return target.toString().substring(root.toString().length() + 1).replace('\\', '/'); + } } diff --git a/src/main/java/net/doubledoordev/backend/web/http/FreemarkerHandler.java b/src/main/java/net/doubledoordev/backend/web/http/FreemarkerHandler.java index bfe7ff9..84d30af 100644 --- a/src/main/java/net/doubledoordev/backend/web/http/FreemarkerHandler.java +++ b/src/main/java/net/doubledoordev/backend/web/http/FreemarkerHandler.java @@ -19,7 +19,7 @@ package net.doubledoordev.backend.web.http; import com.google.common.collect.ImmutableList; -import freemarker.ext.beans.BeansWrapper; +import freemarker.ext.beans.BeansWrapperBuilder; import freemarker.template.*; import net.doubledoordev.backend.Main; import net.doubledoordev.backend.permissions.User; @@ -56,19 +56,20 @@ public class FreemarkerHandler extends StaticHttpHandlerBase implements ErrorPag { public static final ImmutableList ADMINPAGES = ImmutableList.of("console", "backendConsoleText"); public static long lastRequest = 0L; - public final Configuration freemarker = new Configuration(); + public final Configuration freemarker = new Configuration(Configuration.VERSION_2_3_0); public FreemarkerHandler(Class clazz, String path) throws TemplateModelException { freemarker.setClassForTemplateLoading(clazz, path); - freemarker.setObjectWrapper(new DefaultObjectWrapper()); + freemarker.setObjectWrapper(new DefaultObjectWrapper(Configuration.VERSION_2_3_0)); freemarker.setDefaultEncoding("UTF-8"); freemarker.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER); freemarker.setIncompatibleImprovements(new Version(2, 3, 20)); // FreeMarker 2.3.20 Map dataObject = new HashMap<>(); dataObject.put("Settings", Settings.SETTINGS); - dataObject.put("Helper", BeansWrapper.getDefaultInstance().getStaticModels().get(Helper.class.getName())); - freemarker.setAllSharedVariables(new SimpleHash(dataObject)); + + dataObject.put("Helper", new BeansWrapperBuilder(Configuration.VERSION_2_3_0).build().getStaticModels().get(Helper.class.getName())); + freemarker.setAllSharedVariables(new SimpleHash(dataObject, new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_0).build())); if (!Main.debug) freemarker.setTemplateUpdateDelay(0); } diff --git a/src/main/java/net/doubledoordev/backend/web/http/PostHandler.java b/src/main/java/net/doubledoordev/backend/web/http/PostHandler.java index 9d30b15..75a2ade 100644 --- a/src/main/java/net/doubledoordev/backend/web/http/PostHandler.java +++ b/src/main/java/net/doubledoordev/backend/web/http/PostHandler.java @@ -29,6 +29,7 @@ import net.doubledoordev.backend.util.Settings; import net.doubledoordev.backend.util.exceptions.OutOfPortsException; import net.doubledoordev.backend.util.exceptions.PostException; +import net.doubledoordev.backend.util.methodCaller.IMethodCaller; import net.doubledoordev.backend.util.methodCaller.UserMethodCaller; import org.glassfish.grizzly.EmptyCompletionHandler; import org.glassfish.grizzly.http.multipart.MultipartScanner; @@ -115,14 +116,14 @@ private String doServer(final HashMap data, final String uri, fi final Server server = Settings.getServerByName(request.getParameter(SERVER)); if (server == null || !server.canUserControl(user)) throw new PostException("Server doesn't exist or user doesn't have permission to edit the server."); data.put(SERVER, server); - upload(server.getFolder(), request, data, uri, response); + upload(new UserMethodCaller(user), server, server.getFolder(), request, data, uri, response); return null; } - private void upload(File folder, Request request, HashMap data, String uri, Response response) + private void upload(IMethodCaller caller, Server server, File folder, Request request, HashMap data, String uri, Response response) { response.suspend(); - final UploaderMultipartHandler uploader = new UploaderMultipartHandler(folder); + final UploaderMultipartHandler uploader = new UploaderMultipartHandler(caller, server, folder); MultipartScanner.scan(request, uploader, new EmptyCompletionHandler() { @Override @@ -154,7 +155,7 @@ public void completed(final Request newRequest) @Override public void failed(Throwable throwable) { - Main.LOGGER.warn("Upload failed to {}", folder.getAbsolutePath()); + Main.LOGGER.warn("Upload failed to {}", server.getFolder()); throwable.printStackTrace(); response.resume(); } @@ -171,7 +172,7 @@ private String doFilemanager(final HashMap data, final String ur data.put(SERVER, server); final FileManager fileManager = new FileManager(server, request.getParameter(FILE)); data.put("fm", fileManager); - upload(fileManager.getFile(), request, data, uri, response); + upload(new UserMethodCaller(user), server, fileManager.getFile(), request, data, uri, response); return null; } diff --git a/src/main/java/net/doubledoordev/backend/web/http/UploaderMultipartHandler.java b/src/main/java/net/doubledoordev/backend/web/http/UploaderMultipartHandler.java index 562332f..f1c858f 100644 --- a/src/main/java/net/doubledoordev/backend/web/http/UploaderMultipartHandler.java +++ b/src/main/java/net/doubledoordev/backend/web/http/UploaderMultipartHandler.java @@ -18,6 +18,9 @@ package net.doubledoordev.backend.web.http; +import net.doubledoordev.backend.server.Server; +import net.doubledoordev.backend.util.Helper; +import net.doubledoordev.backend.util.methodCaller.IMethodCaller; import org.glassfish.grizzly.ReadHandler; import org.glassfish.grizzly.http.io.NIOInputStream; import org.glassfish.grizzly.http.multipart.ContentDisposition; @@ -35,10 +38,14 @@ public class UploaderMultipartHandler implements MultipartEntryHandler { private static final String FILENAME_ENTRY = "fileName"; + private final IMethodCaller caller; + private final Server server; private final File folder; - public UploaderMultipartHandler(File folder) + public UploaderMultipartHandler(IMethodCaller caller, Server server, File folder) { + this.caller = caller; + this.server = server; this.folder = folder; } @@ -54,6 +61,8 @@ public void handle(final MultipartEntry multipartEntry) throws Exception final String filename = contentDisposition.getDispositionParamUnquoted("filename"); final NIOInputStream inputStream = multipartEntry.getNIOInputStream(); + server.logAction(caller, "Uploading file " + filename + " to " + Helper.getRelativeString(server.getFolder(), folder)); + // start asynchronous non-blocking content read. inputStream.notifyAvailable(new UploadReadHandler(new File(folder, filename), inputStream)); } diff --git a/src/main/resources/templates/advancedsettings.ftl b/src/main/resources/templates/advancedsettings.ftl index 791eb77..17a7205 100644 --- a/src/main/resources/templates/advancedsettings.ftl +++ b/src/main/resources/templates/advancedsettings.ftl @@ -40,7 +40,7 @@
- +
%time = time left in min
@@ -115,7 +115,7 @@ if (typeof allkeys[key1] === "undefined") allkeys[key1] = []; allkeys[key1].push(key2); } - var dom = document.getElementById(key1 + "_" + key2); + var dom = get(key1 + "_" + key2); if (dom != null) { if (dom.type === "checkbox") @@ -142,16 +142,16 @@ } else { - alert(temp.message); + addAlert(temp.message, true); } }; websocket.onerror = function (evt) { - alert("The websocket errored. Refresh the page!") + addAlert("The websocket errored. Refresh the page!") }; websocket.onclose = function (evt) { - alert("The websocket closed. Refresh the page!") + addAlert("The websocket closed. Refresh the page!") }; function send(key1) @@ -161,7 +161,7 @@ for (key2 in allkeys[key1]) { var name = key1 + "_" + allkeys[key1][key2]; - var dom = document.getElementById(name); + var dom = get(name); if (dom == null) continue; if (dom.type === "checkbox") { diff --git a/src/main/resources/templates/console.ftl b/src/main/resources/templates/console.ftl index 0a07a33..f47a06e 100644 --- a/src/main/resources/templates/console.ftl +++ b/src/main/resources/templates/console.ftl @@ -12,11 +12,11 @@ var websocket = new WebSocket(wsurl("console")); websocket.onerror = function (evt) { - alert("The websocket errored. Refresh the page!") + addAlert("The websocket errored. Refresh the page!") }; websocket.onclose = function (evt) { - alert("The websocket closed. Refresh the page!") + addAlert("The websocket closed. Refresh the page!") }; function htmlDecode(input) @@ -31,7 +31,7 @@ var temp = JSON.parse(evt.data); if (temp.status !== "ok") { - alert(temp.message); + addAlert(temp.message); } else { diff --git a/src/main/resources/templates/editors/ace.ftl b/src/main/resources/templates/editors/ace.ftl index cfaa82d..9f49cb0 100644 --- a/src/main/resources/templates/editors/ace.ftl +++ b/src/main/resources/templates/editors/ace.ftl @@ -21,7 +21,7 @@ var modes = ["abap", "actionscript", "ada", "apache_conf", "applescript", "asciidoc", "assembly_x86", "autohotkey", "batchfile", "c9search", "cirru", "clojure", "cobol", "coffee", "coldfusion", "csharp", "css", "curly", "c_cpp", "d", "dart", "diff", "django", "dockerfile", "dot", "eiffel", "ejs", "erlang", "forth", "ftl", "gcode", "gherkin", "gitignore", "glsl", "golang", "groovy", "haml", "handlebars", "haskell", "haxe", "html", "html_ruby", "ini", "io", "jack", "jade", "java", "javascript", "json", "jsoniq", "jsp", "jsx", "julia", "latex", "less", "liquid", "lisp", "livescript", "logiql", "lsl", "lua", "luapage", "lucene", "makefile", "markdown", "matlab", "mel", "mushcode", "mysql", "nix", "objectivec", "ocaml", "pascal", "perl", "pgsql", "php", "plain_text", "powershell", "praat", "prolog", "properties", "protobuf", "python", "r", "rdoc", "rhtml", "ruby", "rust", "sass", "scad", "scala", "scheme", "scss", "sh", "sjs", "smarty", "snippets", "soy_template", "space", "sql", "stylus", "svg", "tcl", "tex", "text", "textile", "toml", "twig", "typescript", "vala", "vbscript", "velocity", "verilog", "vhdl", "xml", "xquery", "yaml"]; - var modeSelector = document.getElementById("modeSelector"); + var modeSelector = get("modeSelector"); modes.forEach(function (mode) { modeSelector.innerHTML += ""; @@ -52,11 +52,11 @@ var websocket = new WebSocket(wsurl("filemanager/${server.ID?js_string}/${fm.stripServer(fm.getFile())?js_string}")); websocket.onerror = function (evt) { - alert("The websocket errored. Refresh the page!") + addAlert("The websocket errored. Refresh the page!") }; websocket.onclose = function (evt) { - alert("The websocket closed. Refresh the page!") + addAlert("The websocket closed. Refresh the page!") }; websocket.onmessage = function (evt) { @@ -68,7 +68,7 @@ } else { - alert(temp.message); + addAlert(temp.message); } }; function send(data) diff --git a/src/main/resources/templates/editors/banned-ips.ftl b/src/main/resources/templates/editors/banned-ips.ftl index 9d6c4be..d7742bc 100644 --- a/src/main/resources/templates/editors/banned-ips.ftl +++ b/src/main/resources/templates/editors/banned-ips.ftl @@ -40,7 +40,7 @@ diff --git a/src/main/resources/templates/editors/ops.ftl b/src/main/resources/templates/editors/ops.ftl index 041598b..33dd563 100644 --- a/src/main/resources/templates/editors/ops.ftl +++ b/src/main/resources/templates/editors/ops.ftl @@ -26,7 +26,7 @@ \ No newline at end of file diff --git a/src/main/resources/templates/header.ftl b/src/main/resources/templates/header.ftl index 0001299..c46b272 100644 --- a/src/main/resources/templates/header.ftl +++ b/src/main/resources/templates/header.ftl @@ -56,6 +56,18 @@ @@ -141,4 +199,5 @@ -
\ No newline at end of file +
+
\ No newline at end of file diff --git a/src/main/resources/templates/index.ftl b/src/main/resources/templates/index.ftl index 8408923..db02aa4 100644 --- a/src/main/resources/templates/index.ftl +++ b/src/main/resources/templates/index.ftl @@ -2,7 +2,7 @@ <#if !Helper.usingHttps()> diff --git a/src/main/resources/templates/register.ftl b/src/main/resources/templates/register.ftl index 49597de..2aa9b7c 100644 --- a/src/main/resources/templates/register.ftl +++ b/src/main/resources/templates/register.ftl @@ -2,7 +2,7 @@ <#if !Helper.usingHttps()> diff --git a/src/main/resources/templates/server.ftl b/src/main/resources/templates/server.ftl index 3d59ad4..3e99267 100644 --- a/src/main/resources/templates/server.ftl +++ b/src/main/resources/templates/server.ftl @@ -104,9 +104,14 @@

MC jar installer

+
@@ -161,7 +166,7 @@
@@ -216,8 +221,8 @@ { if (confirm('Are you sure?\nThis will override the minecraft jar!')) { - document.getElementById('modalLabel').innerHTML = 'Installing MC ' + document.getElementById('mcVersionSelector').value; - call('servercmd/${server.ID?js_string}', 'setVersion', [document.getElementById('mcVersionSelector').value], progressModal); + get('modalLabel').innerHTML = 'Installing MC ' + get('mcVersionSelector').value; + call('servercmd/${server.ID?js_string}', 'setVersion', [get('mcVersionSelector').value], progressModal); } } @@ -225,16 +230,16 @@ { if (confirm('Are you sure?\nThis will override the minecraft jar!')) { - document.getElementById('modalLabel').innerHTML = 'Installing Forge ' + document.getElementById('forgeVersionSelectorForge').value; - call('servercmd/${server.ID?js_string}', 'installForge', [document.getElementById('forgeVersionSelectorMinecraft').value, document.getElementById('forgeVersionSelectorForge').value], progressModal); + get('modalLabel').innerHTML = 'Installing Forge ' + get('forgeVersionSelectorForge').value; + call('servercmd/${server.ID?js_string}', 'installForge', [get('forgeVersionSelectorMinecraft').value, get('forgeVersionSelectorForge').value], progressModal); } } function packUpload() { - if (confirm('Are you sure?\nThis will override the minecraft jar!\nPurge server: ' + document.getElementById('modpackPurge').checked + '\nCurse Pack: ' + document.getElementById('modpackCurse').checked)) + if (confirm('Are you sure?\nThis will override the minecraft jar!\nPurge server: ' + get('modpackPurge').checked + '\nCurse Pack: ' + get('modpackCurse').checked)) { - document.getElementById('modalLabel').innerHTML = 'Uploading modpack...'; + get('modalLabel').innerHTML = 'Uploading modpack...'; var file = $('#modpackFile')[0].files[0]; if (file) @@ -258,8 +263,8 @@ progressModal("Done uploading file.\nStarting modpack install..."); call('servercmd/${server.ID?js_string}', 'installModpack', [ file.name, - document.getElementById('modpackPurge').checked, - document.getElementById('modpackCurse').checked], progressModal); + get('modpackPurge').checked, + get('modpackCurse').checked], progressModal); }, error: function() { @@ -270,9 +275,9 @@ else { call('servercmd/${server.ID?js_string}', 'downloadModpack', [ - document.getElementById('modpackURL').value, - document.getElementById('modpackPurge').checked, - document.getElementById('modpackCurse').checked], progressModal); + get('modpackURL').value, + get('modpackPurge').checked, + get('modpackCurse').checked], progressModal); } } } @@ -283,20 +288,20 @@ { if (needsShowing) { - document.getElementById("modal-close").className = "btn btn-default"; + get("modal-close").className = "btn btn-default"; modal.modal("show"); - document.getElementById("modal-log").innerHTML = ""; + get("modal-log").innerHTML = ""; needsShowing = false; } if (data === "done") { needsShowing = true; - document.getElementById("modal-log").innerHTML += "-- ALL DONE --\n"; - document.getElementById("modal-close").className = "btn btn-success"; + get("modal-log").innerHTML += "-- ALL DONE --\n"; + get("modal-close").className = "btn btn-success"; } else { - document.getElementById("modal-log").innerHTML += data + "\n"; + get("modal-log").innerHTML += data + "\n"; } } @@ -307,19 +312,19 @@ document.location = "/servers"; } - document.getElementById("startServerBtn").onclick = !data.online ? function () + get("startServerBtn").onclick = !data.online ? function () { call('servercmd/${server.ID?js_string}', "startServer") } : null; - document.getElementById("startServerBtn").disabled = data.online; + get("startServerBtn").disabled = data.online; - document.getElementById("stopServerBtn").onclick = data.online ? function () + get("stopServerBtn").onclick = data.online ? function () { call('servercmd/${server.ID?js_string}', "stopServer", [prompt('Message?', 'Server is stopping.')]) } : null; - document.getElementById("stopServerBtn").disabled = !data.online; + get("stopServerBtn").disabled = !data.online; - document.getElementById("killServerBtn").onclick = data.online ? function (e) + get("killServerBtn").onclick = data.online ? function (e) { if (!!e.shiftKey) { if (confirm('Are you sure you want to FORCE kill?\nTry a regular kill first!')) @@ -327,54 +332,54 @@ } else if (confirm('Are you sure?')) call('servercmd/${server.ID?js_string}', "forceStopServer") } : null; - document.getElementById("killServerBtn").disabled = !data.online; + get("killServerBtn").disabled = !data.online; - document.getElementById("onlinePlayers").innerHTML = data.onlinePlayers; - document.getElementById("slots").innerHTML = data.slots; - document.getElementById("motd").innerHTML = data.motd; - document.getElementById("mapName").innerHTML = data.mapName; - document.getElementById("playerList").innerHTML = data.playerList; - document.getElementById("version").innerHTML = data.version; - document.getElementById("serverOwner").innerHTML = data.owner; - document.getElementById("gameMode").innerHTML = data.gameMode; - document.getElementById("plugins").innerHTML = data.plugins; - document.getElementById("gameID").innerHTML = data.gameID; - document.getElementById("ram").innerHTML = data.ram; + get("onlinePlayers").innerHTML = data.onlinePlayers; + get("slots").innerHTML = data.slots; + get("motd").innerHTML = data.motd; + get("mapName").innerHTML = data.mapName; + get("playerList").innerHTML = data.playerList; + get("version").innerHTML = data.version; + get("serverOwner").innerHTML = data.owner; + get("gameMode").innerHTML = data.gameMode; + get("plugins").innerHTML = data.plugins; + get("gameID").innerHTML = data.gameID; + get("ram").innerHTML = data.ram; - document.getElementById("diskspace_server").innerHTML = data.diskspace.server; - document.getElementById("diskspace_backup").innerHTML = data.diskspace.backups; - document.getElementById("diskspace_total").innerHTML = data.diskspace.total; + get("diskspace_server").innerHTML = data.diskspace.server; + get("diskspace_backup").innerHTML = data.diskspace.backups; + get("diskspace_total").innerHTML = data.diskspace.total; - document.getElementById("serverPortAvailable").innerHTML = data.port_server_available ? "Free" : (data.online ? "In use by us" : "In use by ??"); - document.getElementById("serverPortAvailable").className = "label label-" + (data.port_server_available ? "success" : (data.online ? "warning" : "danger")); + get("serverPortAvailable").innerHTML = data.port_server_available ? "Free" : (data.online ? "In use by us" : "In use by ??"); + get("serverPortAvailable").className = "label label-" + (data.port_server_available ? "success" : (data.online ? "warning" : "danger")); - document.getElementById("online").innerHTML = data.online ? "Online" : "Offline"; - document.getElementById("online").className = "label label-" + (data.online ? "success" : "danger"); + get("online").innerHTML = data.online ? "Online" : "Offline"; + get("online").className = "label label-" + (data.online ? "success" : "danger"); - document.getElementById("coOwnersList").innerHTML = ""; + get("coOwnersList").innerHTML = ""; var tmp = ""; data.coOwners.forEach(function (entry) { tmp += "
  • " + entry + "<#if isOwner>
  • "; }); - document.getElementById("coOwnersList").innerHTML = tmp; + get("coOwnersList").innerHTML = tmp; - document.getElementById("adminsList").innerHTML = ""; + get("adminsList").innerHTML = ""; tmp = ""; data.admins.forEach(function (entry) { tmp += "
  • " + entry + "<#if isOwner>
  • "; }); - document.getElementById("adminsList").innerHTML = tmp; + get("adminsList").innerHTML = tmp; } websocketMonitor = new WebSocket(wsurl("servermonitor/${server.ID?js_string}")); websocketMonitor.onerror = function (evt) { - alert("The websocket errored. Refresh the page!") + addAlert("The websocket errored. Refresh the page!") }; websocketMonitor.onclose = function (evt) { - alert("The websocket closed. Refresh the page!") + addAlert("The websocket closed. Refresh the page!") }; websocketMonitor.onmessage = function (evt) { @@ -383,7 +388,7 @@ { if (typeof temp.data === "string") { - document.getElementById("security-log").innerHTML = temp.data + "\n" + document.getElementById("security-log").innerHTML; + get("security-log").innerHTML = temp.data + "\n" + get("security-log").innerHTML; } else { @@ -392,12 +397,12 @@ } else { - alert(temp.message); + addAlert(temp.message); } }; $(function () { - document.getElementById("forgeVersionSelectorMinecraft").innerHTML = ""; + get("forgeVersionSelectorMinecraft").innerHTML = ""; var tmpMC = ""; for (var i in forgeVersions) { if (forgeVersions.hasOwnProperty(i)) { @@ -406,20 +411,20 @@ } if (tmpMC.length === 0) tmpMC = ""; else updateForges(Object.keys(forgeVersions)[0]); - document.getElementById("forgeVersionSelectorMinecraft").innerHTML = tmpMC; + get("forgeVersionSelectorMinecraft").innerHTML = tmpMC; }); function updateForges(val) { var forges = forgeVersions[val]; - document.getElementById("forgeVersionSelectorForge").innerHTML = ""; + get("forgeVersionSelectorForge").innerHTML = ""; var tmpForge = ""; for (var i in forges) { if (forges.hasOwnProperty(i)) { tmpForge += ""; } } - document.getElementById("forgeVersionSelectorForge").innerHTML = tmpForge; + get("forgeVersionSelectorForge").innerHTML = tmpForge; } var forgeVersions = ${Helper.getForgeVersionJson()}; diff --git a/src/main/resources/templates/servers.ftl b/src/main/resources/templates/servers.ftl index 0b38f94..bb5d823 100644 --- a/src/main/resources/templates/servers.ftl +++ b/src/main/resources/templates/servers.ftl @@ -71,16 +71,16 @@ } else { - alert(temp.message); + addAlert(temp.message); } }; websocket.onerror = function (evt) { - alert("The websocket errored. Refresh the page!") + addAlert("The websocket errored. Refresh the page!") }; websocket.onclose = function (evt) { - alert("The websocket closed. Refresh the page!") + addAlert("The websocket closed. Refresh the page!") } <#include "footer.ftl"> diff --git a/src/main/resources/templates/worldmanager.ftl b/src/main/resources/templates/worldmanager.ftl index 82aa198..e600845 100644 --- a/src/main/resources/templates/worldmanager.ftl +++ b/src/main/resources/templates/worldmanager.ftl @@ -104,15 +104,15 @@ if (needsShowing) { modal.modal("show"); - document.getElementById("modal-log").innerHTML = ""; + get("modal-log").innerHTML = ""; needsShowing = false; } if (data === "done") { needsShowing = true; - document.getElementById("modal-log").innerHTML += "-- ALL DONE --\n"; + get("modal-log").innerHTML += "-- ALL DONE --\n"; } - document.getElementById("modal-log").innerHTML += data + "\n"; + get("modal-log").innerHTML += data + "\n"; } -->