Compare commits

..
2 Commits
Author SHA1 Message Date
PiggyPiglet 27ec162393 Merge pull request #1253 from PlaceholderAPI/t3/enforce-cloud-update-verification
Enforce eCloud restrictions on updates
2026-10-24 16:35:25 +08:00
darbyjack 12561adfad fix: enforce eCloud download restrictions 2026-10-24 03:06:38 +00:00
4 changed files with 17 additions and 55 deletions

No files matched your search

@@ -20,7 +20,6 @@
package me.clip.placeholderapi.commands.impl.cloud;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
@@ -39,16 +38,6 @@ public final class CommandECloudDownload extends PlaceholderCommand {
super("download");
}
private boolean isBlockedExpansion(String name) {
String env = System.getenv("PAPI_BLOCKED_EXPANSIONS");
if (env == null) {
return false;
}
return Arrays.stream(env.split(","))
.anyMatch(s -> s.equalsIgnoreCase(name));
}
@Override
public void evaluate(@NotNull final PlaceholderAPIPlugin plugin,
@NotNull final CommandSender sender, @NotNull final String alias,
@@ -59,12 +48,6 @@ public final class CommandECloudDownload extends PlaceholderCommand {
return;
}
if (isBlockedExpansion(params.get(0))) {
Msg.msg(sender,
"&cThis expansion can't be downloaded.");
return;
}
final CloudExpansion expansion = plugin.getCloudExpansionManager()
.findCloudExpansionByName(params.get(0)).orElse(null);
if (expansion == null) {
@@ -91,11 +74,6 @@ public final class CommandECloudDownload extends PlaceholderCommand {
}
}
if (!version.isVerified()) {
Msg.msg(sender, "&cThe expansion '&f" + params.get(0) + "&c' is not verified and can only be downloaded manually from &fhttps://ecloud.placeholderapi.com");
return;
}
plugin.getCloudExpansionManager().downloadExpansion(expansion, version)
.whenComplete((file, exception) -> {
if (exception != null) {
@@ -91,8 +91,6 @@ public final class CommandDump extends PlaceholderCommand {
@NotNull
private CompletableFuture<String> postDump(@NotNull final String dump) {
System.out.println("DUMP CREATE SUCCESS");
return CompletableFuture.supplyAsync(() -> {
try {
final HttpURLConnection connection = ((HttpURLConnection) new URL(URL + "documents")
@@ -112,7 +110,6 @@ public final class CommandDump extends PlaceholderCommand {
return gson.fromJson(json, JsonObject.class).get("key").getAsString();
}
} catch (final IOException ex) {
ex.printStackTrace();
throw new CompletionException(ex);
}
});
@@ -126,8 +123,6 @@ public final class CommandDump extends PlaceholderCommand {
.append(DATE_FORMAT.format(Instant.now()))
.append("\n\n");
System.out.println("DUMP1");
builder.append("PlaceholderAPI: ")
.append(plugin.getDescription().getVersion())
.append("\n\n");
@@ -135,8 +130,6 @@ public final class CommandDump extends PlaceholderCommand {
builder.append("Expansions Registered:")
.append('\n');
System.out.println("DUMP2");
final List<PlaceholderExpansion> expansions = plugin.getLocalExpansionManager()
.getExpansions()
.stream()
@@ -146,8 +139,6 @@ public final class CommandDump extends PlaceholderCommand {
)
.collect(Collectors.toList());
System.out.println("DUMP3");
int size = expansions.stream().map(e -> e.getIdentifier().length())
.max(Integer::compareTo)
.orElse(0);
@@ -172,7 +163,6 @@ public final class CommandDump extends PlaceholderCommand {
.getExpansionsFolder()
.list((dir, name) -> name.toLowerCase(Locale.ROOT).endsWith(".jar"));
System.out.println("DUMP4");
if (jars == null) {
builder.append(" ¨[Warning]: Could not load jar files from expansions folder.");
@@ -192,14 +182,10 @@ public final class CommandDump extends PlaceholderCommand {
.append(plugin.getServer().getVersion())
.append("\n");
System.out.println("DUMP5");
builder.append("Java Version: ")
.append(System.getProperty("java.version"))
.append("\n\n");
System.out.println("DUMP6");
builder.append("Plugin Info:")
.append('\n');
@@ -207,8 +193,6 @@ public final class CommandDump extends PlaceholderCommand {
.sorted(Comparator.comparing(Plugin::getName))
.collect(Collectors.toList());
System.out.println("DUMP7");
size = plugins.stream().map(pl -> pl.getName().length())
.max(Integer::compareTo)
.orElse(0);
@@ -224,8 +208,6 @@ public final class CommandDump extends PlaceholderCommand {
.append("\n");
}
System.out.println("DUMP8");
return builder.toString();
}
}
@@ -33,6 +33,7 @@ import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -274,6 +275,16 @@ public final class CloudExpansionManager {
@NotNull
public CompletableFuture<File> downloadExpansion(@NotNull final CloudExpansion expansion,
@NotNull final CloudExpansion.Version version) {
final String blockedExpansions = System.getenv("PAPI_BLOCKED_EXPANSIONS");
if (blockedExpansions != null && Arrays.stream(blockedExpansions.split(","))
.anyMatch(name -> name.equalsIgnoreCase(expansion.getName()))) {
return failedDownload("This expansion can't be downloaded.");
}
if (!version.isVerified()) {
return failedDownload("The expansion is not verified and can only be downloaded manually from https://ecloud.placeholderapi.com");
}
final CompletableFuture<File> previous = await.get(toIndexName(expansion));
if (previous != null) {
return previous;
@@ -309,4 +320,10 @@ public final class CloudExpansionManager {
return download;
}
private CompletableFuture<File> failedDownload(String message) {
final CompletableFuture<File> failed = new CompletableFuture<>();
failed.completeExceptionally(new IllegalArgumentException(message));
return failed;
}
}
@@ -351,19 +351,13 @@ public final class LocalExpansionManager implements Listener {
Msg.info("Placeholder expansion registration initializing...");
Futures.onMainThread(plugin, findExpansionsOnDisk(), (classes, exception) -> {
System.out.println("LOAD1");
if (exception != null) {
Msg.severe("Failed to load class files of expansion.", exception);
exception.printStackTrace();
return;
}
System.out.println("LOAD2 - size: " + classes.size());
final List<PlaceholderExpansion> registered = classes.stream()
.filter(Objects::nonNull)
.peek(clazz -> System.out.println("Attempting register of - " + clazz))
.map(this::register)
.filter(Optional::isPresent)
.map(Optional::get)
@@ -392,8 +386,6 @@ public final class LocalExpansionManager implements Listener {
Msg.msg(sender, message.toString());
Bukkit.getPluginManager().callEvent(new ExpansionsLoadedEvent(registered));
System.out.println("LOAD3");
});
}
@@ -409,12 +401,7 @@ public final class LocalExpansionManager implements Listener {
@NotNull
public CompletableFuture<@NotNull List<@Nullable Class<? extends PlaceholderExpansion>>> findExpansionsOnDisk() {
System.out.println(folder);
File[] files = folder.listFiles((dir, name) -> name.endsWith(".jar"));
System.out.println("FIND FILES - " + Arrays.toString(files));
if (files == null) {
return CompletableFuture.completedFuture(Collections.emptyList());
}
@@ -427,8 +414,6 @@ public final class LocalExpansionManager implements Listener {
@NotNull
public CompletableFuture<@Nullable Class<? extends PlaceholderExpansion>> findExpansionInFile(
@NotNull final File file) {
System.out.println("FOUND FILE - " + file);
return CompletableFuture.supplyAsync(() -> {
try {
final Class<? extends PlaceholderExpansion> expansionClass = FileUtil.findClass(file, PlaceholderExpansion.class);