3
0
Mirror von https://github.com/GeyserMC/Geyser.git synchronisiert 2024-12-26 00:00:41 +01:00

Fix loading contents keys of encrypted resource packs (#3925)

Dieser Commit ist enthalten in:
Konicai 2023-06-29 07:22:13 -04:00 committet von GitHub
Ursprung 40775149f5
Commit b344e21f7f
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23
5 geänderte Dateien mit 29 neuen und 1 gelöschten Zeilen

Datei anzeigen

@ -146,7 +146,7 @@ public class ResourcePackLoader implements RegistryLoader<Path, Map<String, Reso
// Check if a file exists with the same name as the resource pack suffixed by .key, // Check if a file exists with the same name as the resource pack suffixed by .key,
// and set this as content key. (e.g. test.zip, key file would be test.zip.key) // and set this as content key. (e.g. test.zip, key file would be test.zip.key)
Path keyFile = path.resolveSibling(path.getFileName().toString() + ".key"); Path keyFile = path.resolveSibling(path.getFileName().toString() + ".key");
String contentKey = Files.exists(keyFile) ? Files.readString(path, StandardCharsets.UTF_8) : ""; String contentKey = Files.exists(keyFile) ? Files.readString(keyFile, StandardCharsets.UTF_8) : "";
return new GeyserResourcePack(new GeyserPathPackCodec(path), manifest, contentKey); return new GeyserResourcePack(new GeyserPathPackCodec(path), manifest, contentKey);
} catch (Exception e) { } catch (Exception e) {

Datei anzeigen

@ -25,11 +25,16 @@
package org.geysermc.geyser.registry.loader; package org.geysermc.geyser.registry.loader;
import org.geysermc.geyser.api.pack.ResourcePack;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.PathMatcher; import java.nio.file.PathMatcher;
import java.util.Objects;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
@ -54,4 +59,26 @@ public class ResourcePackLoaderTest {
assertFalse(matcher.matches(Path.of("pack.7zip"))); assertFalse(matcher.matches(Path.of("pack.7zip")));
assertFalse(matcher.matches(Path.of("packs"))); assertFalse(matcher.matches(Path.of("packs")));
} }
@Test
public void testPack() throws Exception {
// this mcpack only contains a folder, which the manifest is in
Path path = getResource("empty_pack.mcpack");
ResourcePack pack = ResourcePackLoader.readPack(path);
assertEquals("", pack.contentKey());
// should probably add some more tests here related to the manifest
}
@Test
public void testEncryptedPack() throws Exception {
// this zip only contains a contents.json and manifest.json at the root
Path path = getResource("encrypted_pack.zip");
ResourcePack pack = ResourcePackLoader.readPack(path);
assertEquals("JAGcSXcXwcODc1YS70GzeWAUKEO172UA", pack.contentKey());
}
private Path getResource(String name) throws URISyntaxException {
URL url = Objects.requireNonNull(getClass().getClassLoader().getResource(name), "No resource for name: " + name);
return Path.of(url.toURI());
}
} }

Binäre Datei nicht angezeigt.

Binäre Datei nicht angezeigt.

Datei anzeigen

@ -0,0 +1 @@
JAGcSXcXwcODc1YS70GzeWAUKEO172UA