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>
This commit is contained in:
weihao 2021-05-20 17:06:34 -04:00 committed by GitHub
parent 56042af4eb
commit 373e1c16d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 15 deletions

View File

@ -26,7 +26,7 @@ And use it in your pom file.
<dependency>
<groupId>com.imaginarycode.minecraft</groupId>
<artifactId>RedisBungee</artifactId>
<version>0.6.2</version>
<version>0.6.3</version>
<scope>provided</scope>
</dependency>

View File

@ -6,7 +6,8 @@
<groupId>com.imaginarycode.minecraft</groupId>
<artifactId>RedisBungee</artifactId>
<version>0.6.2</version>
<version>0.6.3</version>
<repositories>
<repository>

View File

@ -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()) {

View File

@ -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.

View File

@ -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