From 7feaa4753594f8a0c61f0e790237057ca4d3f8f7 Mon Sep 17 00:00:00 2001 From: Max Moon Date: Sat, 27 Jun 2026 23:06:59 +0100 Subject: [PATCH] fix: accept quoted image urls --- .../java/com/loohp/imageframe/Commands.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/com/loohp/imageframe/Commands.java b/common/src/main/java/com/loohp/imageframe/Commands.java index 1f7b3adb..ee71c019 100644 --- a/common/src/main/java/com/loohp/imageframe/Commands.java +++ b/common/src/main/java/com/loohp/imageframe/Commands.java @@ -221,7 +221,8 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String sendMessage(sender, translatable(DUPLICATE_MAP_NAME).color(NamedTextColor.RED)); return true; } - if (!ImageFrame.isURLAllowed(args[2])) { + String requestedUrl = stripMatchingQuotes(args[2]); + if (!ImageFrame.isURLAllowed(requestedUrl)) { sendMessage(sender, translatable(URL_RESTRICTED).color(NamedTextColor.RED)); return true; } @@ -238,7 +239,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String ImageMapCreationTask creationTask = null; String url = "Pending..."; try { - url = args[2]; + url = requestedUrl; if (ImageFrame.imageUploadManager.isOperational() && url.equalsIgnoreCase("upload")) { UUID user = isConsole ? ImageMap.CONSOLE_CREATOR : player.getUniqueId(); String playerName = isConsole ? ImageMap.CONSOLE_CREATOR_NAME : player.getName(); @@ -394,7 +395,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String Scheduler.runTaskAsynchronously(ImageFrame.plugin, () -> { ImageMapCreationTask creationTask = null; try { - String url = args[2]; + String url = stripMatchingQuotes(args[2]); if (ImageFrame.imageUploadManager.isOperational() && url.equalsIgnoreCase("upload")) { PendingUpload pendingUpload = ImageFrame.imageUploadManager.newPendingUpload(player.getUniqueId(), player.getName(), name, width, height); String uploadUrl = pendingUpload.getUrl(ImageFrame.uploadServiceDisplayURL); @@ -796,12 +797,12 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String if (imageMap == null) { ditheringType = DitheringType.fromNameOrNull(args[1].toLowerCase()); if (ditheringType == null) { - url = args[1]; + url = stripMatchingQuotes(args[1]); } } else if (args.length > 2) { ditheringType = DitheringType.fromNameOrNull(args[2].toLowerCase()); if (ditheringType == null) { - url = args[2]; + url = stripMatchingQuotes(args[2]); } } } @@ -2249,4 +2250,16 @@ public List onTabComplete(CommandSender sender, Command cmd, String labe } } + private static String stripMatchingQuotes(String str) { + if (str.length() < 2) { + return str; + } + char first = str.charAt(0); + char last = str.charAt(str.length() - 1); + if ((first == '"' && last == '"') || (first == '\'' && last == '\'')) { + return str.substring(1, str.length() - 1); + } + return str; + } + }