Skip to content
This repository has been archived by the owner on Oct 14, 2023. It is now read-only.

Commit

Permalink
Changes -> Added geyser support for auto updater
Browse files Browse the repository at this point in the history
  • Loading branch information
EinfacheSache committed Aug 4, 2023
1 parent 9b63b6c commit 5f551d9
Show file tree
Hide file tree
Showing 6 changed files with 117 additions and 42 deletions.
36 changes: 24 additions & 12 deletions src/main/java/de/cubeattack/neoprotect/core/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ public class Config {
private static String APIKey;
private static String language;
private static boolean proxyProtocol;
private static String GameShieldID;
private static String BackendID;
private static String gameShieldID;
private static String backendID;
private static String geyserBackendID;
private static boolean updateIP;
private static boolean debugMode;
private static String geyserServerIP;
Expand All @@ -31,8 +32,9 @@ public static void loadConfig(Core core, FileUtils config) {
APIKey = config.getString("APIKey", "");
language = config.getString("defaultLanguage", Locale.getDefault().toLanguageTag());
proxyProtocol = config.getBoolean("ProxyProtocol", true);
GameShieldID = config.getString("gameshield.serverId", "");
BackendID = config.getString("gameshield.backendId", "");
gameShieldID = config.getString("gameshield.serverId", "");
backendID = config.getString("gameshield.backendId", "");
geyserBackendID = config.getString("gameshield.geyserBackendId", "");
updateIP = config.getBoolean("gameshield.autoUpdateIP", false);
debugMode = config.getBoolean("DebugMode", false);
geyserServerIP = config.getString("geyserServerIP", "127.0.0.1");
Expand All @@ -41,18 +43,18 @@ public static void loadConfig(Core core, FileUtils config) {
core.severe("Failed to load API-Key. Key is null or not valid");
return;
}
if (GameShieldID.isEmpty()) {
if (gameShieldID.isEmpty()) {
core.severe("Failed to load GameshieldID. ID is null");
return;
}
if (BackendID.isEmpty()) {
if (backendID.isEmpty()) {
core.severe("Failed to load BackendID. ID is null");
return;
}

core.info("API-Key loaded successful '" + "******************************" + APIKey.substring(32) + "'");
core.info("GameshieldID loaded successful '" + GameShieldID + "'");
core.info("BackendID loaded successful '" + BackendID + "'");
core.info("GameshieldID loaded successful '" + gameShieldID + "'");
core.info("BackendID loaded successful '" + backendID + "'");
}

public static String getAPIKey() {
Expand All @@ -64,11 +66,15 @@ public static String getLanguage() {
}

public static String getGameShieldID() {
return GameShieldID;
return gameShieldID;
}

public static String getBackendID() {
return BackendID;
return backendID;
}

public static String getGeyserBackendID() {
return geyserBackendID;
}

public static boolean isProxyProtocol() {
Expand Down Expand Up @@ -100,13 +106,19 @@ public static void setAPIKey(String key) {
public static void setGameShieldID(String id) {
fileUtils.set("gameshield.serverId", id);
fileUtils.save();
GameShieldID = id;
gameShieldID = id;
}

public static void setBackendID(String id) {
fileUtils.set("gameshield.backendId", id);
fileUtils.save();
BackendID = id;
backendID = id;
}

public static void setGeyserBackendID(String id) {
fileUtils.set("gameshield.geyserBackendId", id);
fileUtils.save();
geyserBackendID = id;
}

public static void addAutoUpdater(boolean basicPlan) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,20 @@ private void command(ExecutorBuilder executorBuilder) {

case "setbackend": {
if (args.length == 1) {
backendSelector();
javaBackendSelector();
} else if (args.length == 2) {
setBackend(args);
setJavaBackend(args);
} else {
instance.sendMessage(sender, localization.get(locale, "usage.setbackend"));
}
break;
}

case "setgeyserbackend": {
if (args.length == 1) {
bedrockBackendSelector();
} else if (args.length == 2) {
setBedrockBackend(args);
} else {
instance.sendMessage(sender, localization.get(locale, "usage.setbackend"));
}
Expand Down Expand Up @@ -427,37 +438,67 @@ private void setGameshield(String[] args) {
Config.setGameShieldID(args[1]);
instance.sendMessage(sender, localization.get(locale, "set.gameshield", args[1]));

backendSelector();
javaBackendSelector();
}


private void backendSelector() {
instance.sendMessage(sender, localization.get(locale, "select.backend"));

private void javaBackendSelector() {
List<Backend> backendList = instance.getCore().getRestAPI().getBackends();

instance.sendMessage(sender, localization.get(locale, "select.backend", "java"));

for (Backend backend : backendList) {
if(backend.isGeyser())continue;
instance.sendMessage(sender, "§5" + backend.getIp() + ":" + backend.getPort() + localization.get(locale, "utils.click"),
"RUN_COMMAND", "/np setbackend " + backend.getId(),
"SHOW_TEXT", localization.get(locale, "hover.backend", backend.getIp(), backend.getPort(), backend.getId()));
}
}

private void setBackend(String[] args) {
private void setJavaBackend(String[] args) {

if (instance.getCore().getRestAPI().isBackendInvalid(args[1])) {
instance.sendMessage(sender, localization.get(locale, "invalid.backend", args[1]));
instance.sendMessage(sender, localization.get(locale, "invalid.backend", "java", args[1]));
return;
}

Config.setBackendID(args[1]);
instance.sendMessage(sender, localization.get(locale, "set.backend", args[1]));

instance.sendMessage(sender, localization.get(locale, "set.backend", "java", args[1]));
instance.getCore().getRestAPI().testCredentials();

bedrockBackendSelector();
}

private void bedrockBackendSelector() {
List<Backend> backendList = instance.getCore().getRestAPI().getBackends();

if(backendList.stream().noneMatch(Backend::isGeyser))return;

instance.sendMessage(sender, localization.get(locale, "select.backend", "geyser"));

for (Backend backend : backendList) {
if(!backend.isGeyser())continue;
instance.sendMessage(sender, "§5" + backend.getIp() + ":" + backend.getPort() + localization.get(locale, "utils.click"),
"RUN_COMMAND", "/np setgeyserbackend " + backend.getId(),
"SHOW_TEXT", localization.get(locale, "hover.backend", backend.getIp(), backend.getPort(), backend.getId()));
}
}

private void setBedrockBackend(String[] args) {

if (instance.getCore().getRestAPI().isBackendInvalid(args[1])) {
instance.sendMessage(sender, localization.get(locale, "invalid.backend", "geyser", args[1]));
return;
}

Config.setGeyserBackendID(args[1]);
instance.sendMessage(sender, localization.get(locale, "set.backend","geyser", args[1]));

if (instance.getCore().getPlayerInSetup().remove(sender)) {
instance.sendMessage(sender, localization.get(locale, "setup.finished"));
}

instance.getCore().getRestAPI().testCredentials();
}

private void showHelp() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ public class Backend {
private final String id;
private String ip;
private final String port;
private final boolean geyser;

public Backend(String id, String ip, String port) {
public Backend(String id, String ip, String port, boolean geyser) {
this.id = id;
this.ip = ip;
this.port = port;
this.geyser = geyser;
}

public boolean compareById(String otherId) {
Expand All @@ -24,6 +26,10 @@ public String getIp() {
return ip;
}

public boolean isGeyser() {
return geyser;
}

public void setIp(String ip) {
this.ip = ip;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ public String getPlan() {
return rest.request(RequestType.GET_GAMESHIELD_PLAN, null, Config.getGameShieldID()).getResponseBodyObject().getJSONObject("gameShieldPlan").getJSONObject("options").getString("name");
}

private boolean updateBackend(RequestBody formBody) {
return rest.request(RequestType.POST_GAMESHIELD_BACKEND_UPDATE, formBody, Config.getGameShieldID(), Config.getBackendID()).checkCode(200);
private boolean updateBackend(RequestBody formBody, String backendID) {
return rest.request(RequestType.POST_GAMESHIELD_BACKEND_UPDATE, formBody, Config.getGameShieldID(),backendID).checkCode(200);
}

public void setProxyProtocol(boolean setting) {
Expand Down Expand Up @@ -169,7 +169,7 @@ public List<Backend> getBackends() {

for (Object object : backends) {
JSONObject jsonObject = (JSONObject) object;
list.add(new Backend(jsonObject.getString("id"), jsonObject.getString("ipv4"), String.valueOf(jsonObject.getInt("port"))));
list.add(new Backend(jsonObject.getString("id"), jsonObject.getString("ipv4"), String.valueOf(jsonObject.getInt("port")), jsonObject.getBoolean("geyser")));
}

return list;
Expand Down Expand Up @@ -262,22 +262,38 @@ private void backendServerIPUpdater() {
@Override
public void run() {

Backend backend = getBackends().stream().filter(unFilteredBackend -> unFilteredBackend.compareById(Config.getBackendID())).findAny().orElse(null);
if (!setup) return;

if (!setup | backend == null) return;
Backend javaBackend = getBackends().stream().filter(unFilteredBackend -> unFilteredBackend.compareById(Config.getBackendID())).findAny().orElse(null);
Backend geyserBackend = getBackends().stream().filter(unFilteredBackend -> unFilteredBackend.compareById(Config.getGeyserBackendID())).findAny().orElse(null);

String ip = getIpv4();

if (ip == null) return;
if (ip.equals(backend.getIp())) return;

RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new JsonBuilder().appendField("ipv4", ip).build().toString());
if (javaBackend != null) {
if (!ip.equals(javaBackend.getIp())) {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new JsonBuilder().appendField("ipv4", ip).build().toString());

if (!updateBackend(requestBody, Config.getBackendID())) {
core.warn("Update java backendserver ID '" + Config.getBackendID() + "' to IP '" + ip + "' failed");
} else {
core.info("Update java backendserver ID '" + Config.getBackendID() + "' to IP '" + ip + "' success");
javaBackend.setIp(ip);
}
}
}

if (!updateBackend(requestBody)) {
core.warn("Update backendserver ID '" + Config.getBackendID() + "' to IP '" + ip + "' failed");
} else {
core.info("Update backendserver ID '" + Config.getBackendID() + "' to IP '" + ip + "' success");
backend.setIp(ip);
if (geyserBackend != null) {
if (!ip.equals(geyserBackend.getIp())) {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new JsonBuilder().appendField("ipv4", ip).build().toString());

if (!updateBackend(requestBody, Config.getGeyserBackendID())) {
core.warn("Update geyser backendserver ID '" + Config.getGeyserBackendID() + "' to IP '" + ip + "' failed");
} else {
core.info("Update geyser backendserver ID '" + Config.getGeyserBackendID() + "' to IP '" + ip + "' success");
geyserBackend.setIp(ip);
}
}
}
}
}, 1000, 1000 * 15);
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/language_de.properties
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ usage.setgameshield=Bitte geben Sie /np setgameshield ein
usage.directconnectwhitelist=Bitte geben Sie /np directConnectWhitelist (ip)

select.gameshield=Wählen Sie nun das Gameshield aus
select.backend=Wählen Sie nun das Backend aus
select.backend=Wählen Sie nun das §b{0}§7 Backend aus

set.backend=Backend ''{0}'' wurde festgelegt
set.backend=§b{0}§7 Backend ''{0}'' wurde festgelegt
set.gameshield=Gameshield wurde ''{0}'' wurde festgelegt

invalid.backend=§cDas Backend ''{0}'' wurde nicht gefunden
invalid.backend=§cDas §b{0}§c Backend ''{0}'' wurde nicht gefunden
invalid.gameshield=§cDas Gameshield ''{0}'' wurde nicht gefunden

hover.gameshield=§bGameshield {0} \n§7ID {1}
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/language_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ usage.setgameshield=Please enter /np setgameshield
usage.directconnectwhitelist=Please enter /np directConnectWhitelist (ip)

select.gameshield=Now select the gameshield
select.backend=Now select the backend
select.backend=Now select the §b{0}§7 backend

set.backend=The backend ''{0}'' has been set.
set.backend=The §b{0}§7 backend ''{1}'' has been set.
set.gameshield=The gameshield ''{0}'' has been set.

invalid.backend=§cThe backend ''{0}'' was not found
invalid.backend=§cThe §b{0}§c backend ''{0}'' was not found
invalid.gameshield=§cThe gameshield ''{0}'' was not found

hover.gameshield=§bGameshield {0} \n§7ID {1}
Expand Down

0 comments on commit 5f551d9

Please sign in to comment.