From 373e1c16d411cf11409f4cf4a9955ea9e3122501 Mon Sep 17 00:00:00 2001
From: weihao <31719556+weihao@users.noreply.github.com>
Date: Thu, 20 May 2021 17:06:34 -0400
Subject: [PATCH] Persistent random server id generation (#5)
* Allow random server id
* Assign and save random server id
* Add logging for server id
* Remove unused
* Update notes
* updated readme
* fixed bug from last update
* updated config
* fixed typo of in one of the authors name
Co-authored-by: mohammed jasem alaajel <34905970+ham1255@users.noreply.github.com>
---
README.md | 2 +-
pom.xml | 3 ++-
.../minecraft/redisbungee/RedisBungee.java | 24 ++++++++++++-------
src/main/resources/example_config.yml | 9 +++----
src/main/resources/plugin.yml | 2 +-
5 files changed, 25 insertions(+), 15 deletions(-)
diff --git a/README.md b/README.md
index 2bc12e1..c6cc45d 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,7 @@ And use it in your pom file.
com.imaginarycode.minecraft
RedisBungee
- 0.6.2
+ 0.6.3
provided
diff --git a/pom.xml b/pom.xml
index 5260a22..4720440 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,8 @@
com.imaginarycode.minecraft
RedisBungee
- 0.6.2
+ 0.6.3
+
diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java
index 164b81d..c08db72 100644
--- a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java
+++ b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java
@@ -105,7 +105,7 @@ public final class RedisBungee extends Plugin {
servers.add(entry.getKey());
else if (nag && nagTime <= 0) {
getLogger().warning(entry.getKey() + " is " + (time - stamp) + " seconds behind! (Time not synchronized or server down?) and was removed from heartbeat.");
- jedis.hdel("heartbeats", entry.getKey());
+ jedis.hdel("heartbeats", entry.getKey());
}
} catch (NumberFormatException ignored) {
}
@@ -415,13 +415,8 @@ public final class RedisBungee extends Plugin {
final int redisPort = configuration.getInt("redis-port", 6379);
final boolean useSSL = configuration.getBoolean("useSSL");
String redisPassword = configuration.getString("redis-password");
- String serverId;
+ String serverId = configuration.getString("server-id");
final String randomUUID = UUID.randomUUID().toString();
- if (configuration.getBoolean("use-random-id-string", false)) {
- serverId = configuration.getString("server-id") + "-" + randomUUID;
- } else {
- serverId = configuration.getString("server-id");
- }
if (redisPassword != null && (redisPassword.isEmpty() || redisPassword.equals("none"))) {
redisPassword = null;
@@ -429,7 +424,20 @@ public final class RedisBungee extends Plugin {
// Configuration sanity checks.
if (serverId == null || serverId.isEmpty()) {
- throw new RuntimeException("server-id is not specified in the configuration or is empty");
+ /*
+ * this check causes the config comments to disappear somehow
+ * I think due snake yaml limitations so as todo: write our own yaml parser?
+ */
+ String genId = UUID.randomUUID().toString();
+ getLogger().info("Generated server id " + genId + " and saving it to config.");
+ configuration.set("server-id", genId);
+ ConfigurationProvider.getProvider(YamlConfiguration.class).save(configuration, new File(getDataFolder(), "config.yml"));
+ } else {
+ getLogger().info("Loaded server id " + serverId + '.');
+ }
+
+ if (configuration.getBoolean("use-random-id-string", false)) {
+ serverId = configuration.getString("server-id") + "-" + randomUUID;
}
if (redisServer != null && !redisServer.isEmpty()) {
diff --git a/src/main/resources/example_config.yml b/src/main/resources/example_config.yml
index a4cb862..be0c1cd 100644
--- a/src/main/resources/example_config.yml
+++ b/src/main/resources/example_config.yml
@@ -16,11 +16,12 @@ max-redis-connections: 8
# you must disable this if redis version is under 6 you must disable this or connection wont work!!!
useSSL: false
-
-# An identifier for this BungeeCord instance.
-server-id: test1
-# Should use random string? if enabled proxy id will be like this "test1-66cd2aeb-91f3-43a7-a106-e0307b098652"
+# An identifier for this BungeeCord instance. Will randomly generate if leaving it blank.
+server-id: "test1"
+# Should use random string? if this is enabled the proxy id will be like this if server-id is test1: "test1-66cd2aeb-91f3-43a7-a106-e0307b098652"
+# or if id is limework-bungee it will be "limework-bungee-66cd2aeb-91f3-43a7-a106-e0307b098652"
# this great for servers who run replicas in Kubernetes or any auto deploying replica service
+# and used for if proxy died in a kubernetes network and deleted then new proxy setup itself.
use-random-id-string: false
# Whether or not RedisBungee should install its version of regular BungeeCord commands.
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index b7f5976..27b3ff5 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: ${project.name}
main: com.imaginarycode.minecraft.redisbungee.RedisBungee
version: ${project.version}
-author: Chunker and Govindas limework
+author: Chunkr and Govindas limework
authors:
- chunkr
- Govindas Limework