Skip to content

Commit

Permalink
Persistent random server id generation (#5)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
weihao and ham1255 committed May 20, 2021
1 parent 56042af commit 373e1c1
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 15 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
3 changes: 2 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@

<groupId>com.imaginarycode.minecraft</groupId>
<artifactId>RedisBungee</artifactId>
<version>0.6.2</version>
<version>0.6.3</version>


<repositories>
<repository>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ private List<String> getCurrentServerIds(boolean nag, boolean lagged) {
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) {
}
Expand Down Expand Up @@ -415,21 +415,29 @@ private void loadConfig() throws IOException, JedisConnectionException {
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;
}

// 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()) {
Expand Down
9 changes: 5 additions & 4 deletions src/main/resources/example_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -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
Expand Down

0 comments on commit 373e1c1

Please sign in to comment.