Skip to content

Commit

Permalink
Extra yggdrasil login protect (#56)
Browse files Browse the repository at this point in the history
  • Loading branch information
s-yh-china committed Jul 17, 2023
1 parent d59d672 commit 76d7260
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 11 deletions.
6 changes: 4 additions & 2 deletions patches/server/0004-Leaves-Server-Config-And-Command.patch
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,10 @@ index 35d2da9d91dcdd89de7c0f4af028fd182376ea8d..d73482fb1e71fe2951e96ae0593de268
.withRequiredArg()
diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..8a2b48542be4c40898464f79ac332f29e6880c3d
index 0000000000000000000000000000000000000000..955904dfd4d22b7b2aacf6c800c33419624d52f3
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
@@ -0,0 +1,824 @@
@@ -0,0 +1,826 @@
+package top.leavesmc.leaves;
+
+import com.destroystokyo.paper.util.SneakyThrow;
Expand Down Expand Up @@ -621,9 +621,11 @@ index 0000000000000000000000000000000000000000..8a2b48542be4c40898464f79ac332f29
+ }
+
+ public static boolean extraYggdrasilService = false;
+ public static boolean extraYggdrasilLoginProtect = false;
+ public static List<String> extraYggdrasilServiceList = List.of("https://url.with.authlib-injector-yggdrasil");
+ private static void extraYggdrasilService() {
+ extraYggdrasilService = getBoolean("settings.misc.extra-yggdrasil-service.enable", extraYggdrasilService);
+ extraYggdrasilLoginProtect = getBoolean("settings.misc.extra-yggdrasil-service.login-protect", extraYggdrasilLoginProtect);
+ extraYggdrasilServiceList = getList("settings.misc.extra-yggdrasil-service.urls", extraYggdrasilServiceList);
+ if (extraYggdrasilService) {
+ }
Expand Down
33 changes: 28 additions & 5 deletions patches/server/0057-Leaves-Extra-Yggdrasil-Service.patch
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,21 @@ index dae36c6452ccd57a436dd918547b64d59957ab0a..973ecf723e4239307600b42f2d12c264
// CraftBukkit start
String s = (String) Optional.ofNullable((String) optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName);
LevelStorageSource convertable = LevelStorageSource.createDefault(file.toPath());
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index c358f6de2947e16da54acdc7809c70ffae331944..54265a48aab8dc74c34903e177f9e578f459b35a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -264,7 +264,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private boolean isDemo;
private volatile boolean isReady;
private long lastOverloadWarning;
- protected final Services services;
+ public final Services services; // Leaves - protected -> public
private long lastServerStatus;
public final Thread serverThread;
private long nextTickTime;
diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
index ffe31cf433c26264ab4d2e80bdbea166f79b614d..b5c0ad9065ab28b669ab602b8fe520b67f072c2c 100644
index 59edfc922c5745e65469489cb319dbd0f1c812c9..e7bcaf347a28c805f68a805f460be33a44f84571 100644
--- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java
+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
@@ -12,6 +12,7 @@ import org.bukkit.configuration.ConfigurationSection;
Expand All @@ -42,8 +55,8 @@ index ffe31cf433c26264ab4d2e80bdbea166f79b614d..b5c0ad9065ab28b669ab602b8fe520b6
import top.leavesmc.leaves.util.MathUtils;

import java.io.File;
@@ -510,6 +511,9 @@ public final class LeavesConfig {
extraYggdrasilService = getBoolean("settings.misc.extra-yggdrasil-service.enable", extraYggdrasilService);
@@ -512,6 +513,9 @@ public final class LeavesConfig {
extraYggdrasilLoginProtect = getBoolean("settings.misc.extra-yggdrasil-service.login-protect", extraYggdrasilLoginProtect);
extraYggdrasilServiceList = getList("settings.misc.extra-yggdrasil-service.urls", extraYggdrasilServiceList);
if (extraYggdrasilService) {
+ LeavesLogger.LOGGER.warning("extra-yggdrasil-service is an unofficial support. Enabling it may cause data security problems!");
Expand Down Expand Up @@ -163,10 +176,10 @@ index 0000000000000000000000000000000000000000..ee10e314a7e1af28ea008123f75caee2
+}
diff --git a/src/main/java/top/leavesmc/leaves/profile/LeavesMinecraftSessionService.java b/src/main/java/top/leavesmc/leaves/profile/LeavesMinecraftSessionService.java
new file mode 100644
index 0000000000000000000000000000000000000000..98ef48c9e47d2aff31bb326dd30a246cac94f55f
index 0000000000000000000000000000000000000000..fc39aa3c97118a3796f10951145f17ad696a79cb
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/profile/LeavesMinecraftSessionService.java
@@ -0,0 +1,91 @@
@@ -0,0 +1,101 @@
+package top.leavesmc.leaves.profile;
+
+import com.destroystokyo.paper.profile.PaperMinecraftSessionService;
Expand Down Expand Up @@ -236,12 +249,22 @@ index 0000000000000000000000000000000000000000..98ef48c9e47d2aff31bb326dd30a246c
+ arguments.put("ip", address.getHostAddress());
+ }
+
+ GameProfile cache = null;
+ if (LeavesConfig.extraYggdrasilLoginProtect) {
+ cache = MinecraftServer.getServer().services.profileCache().getProfileIfCached(user.getName());
+ }
+
+ for (URL checkUrl : extraYggdrasilList) {
+ URL url = HttpAuthenticationService.concatenateURL(checkUrl, HttpAuthenticationService.buildQuery(arguments));
+
+ try {
+ HasJoinedMinecraftServerResponse response = this.getAuthenticationService().makeHasJoinResponse(url);
+ if (response != null && response.getId() != null) {
+ if (LeavesConfig.extraYggdrasilLoginProtect && cache != null) {
+ if (response.getId() != cache.getId()) {
+ continue;
+ }
+ }
+ result = new GameProfile(response.getId(), user.getName());
+ if (response.getProperties() != null) {
+ result.getProperties().putAll(response.getProperties());
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0061-Syncmatica-Protocol.patch
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ index 35295d8577acf11bd701ef2a7aa1bab3784c7274..16433351834ec562debcc1062ad1c0cf
ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t dispatch custom payload", ex);
this.disconnect("Invalid custom payload!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD);
diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
index b5c0ad9065ab28b669ab602b8fe520b67f072c2c..12394d7ef3c2372fb8634a0b78d4da89912efe59 100644
index e7bcaf347a28c805f68a805f460be33a44f84571..5db4a3687f05bdc1ab3da0e74536dc8f72c7c1b5 100644
--- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java
+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
@@ -13,6 +13,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
Expand All @@ -65,7 +65,7 @@ index b5c0ad9065ab28b669ab602b8fe520b67f072c2c..12394d7ef3c2372fb8634a0b78d4da89
import top.leavesmc.leaves.util.MathUtils;

import java.io.File;
@@ -548,6 +549,7 @@ public final class LeavesConfig {
@@ -550,6 +551,7 @@ public final class LeavesConfig {
syncmaticaQuota = getBoolean("settings.protocol.syncmatica.quota", syncmaticaQuota);
syncmaticaQuotaLimit = getInt("settings.protocol.syncmatica.quota-limit", syncmaticaQuotaLimit);
if (syncmaticaProtocol) {
Expand Down
4 changes: 2 additions & 2 deletions patches/server/0071-Creative-fly-no-clip.patch
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ index d9baa85962236c42219cf09d4f3129be93ff069c..c1bd06fbc2c5683888f7264c35c25feb

public boolean isSpawning() {
diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
index c69a2efafd31b2367cc9f20652585a801eecea0c..9badc03ac95064824a8dc3e8fbc74b88d6939d2e 100644
index 41ecc020ee1277dc6af126a3531901567ce8217b..6c425c2aa1c722bf66aed452aefa4bf5dc96c027 100644
--- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java
+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
@@ -594,6 +594,7 @@ public final class LeavesConfig {
@@ -596,6 +596,7 @@ public final class LeavesConfig {
}

public static void registerCarpetRules() {
Expand Down

0 comments on commit 76d7260

Please sign in to comment.