From 855770ae34ce11eb601e6949399dff887a7aaf3d Mon Sep 17 00:00:00 2001 From: Tim Leonard Date: Tue, 19 Mar 2024 23:06:29 +0000 Subject: [PATCH] Made server sharding support white-list only. --- .../MasterServer/src/routes/api/v1/servers.js | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/Source/MasterServer/src/routes/api/v1/servers.js b/Source/MasterServer/src/routes/api/v1/servers.js index 60169db0..38612e05 100644 --- a/Source/MasterServer/src/routes/api/v1/servers.js +++ b/Source/MasterServer/src/routes/api/v1/servers.js @@ -26,6 +26,11 @@ var GCensors = [ ]; +// List of public hostnames that are allowed to mark their servers as supporting sharding. +var ShardingAllowList = [ + "172.105.11.166" +]; + var GOldestSupportedVersion = 2; function IsFiltered(Name) @@ -75,6 +80,20 @@ function IsServerCensored(ServerInfo) IsCensored(ServerInfo['Hostname']); } +function IsServerAllowedToShard(ServerInfo) +{ + var NameLower = ServerInfo['Hostname'].toLowerCase(); + for (var i = 0; i < ShardingAllowList.length; i++) + { + if (NameLower == ShardingAllowList[i]) + { + return true; + } + } + + return false; +} + function RemoveServer(Id) { for (var i = 0; i < GActiveServers.length; i++) @@ -110,7 +129,13 @@ function AddServer(Id, IpAddress, hostname, private_hostname, description, name, "UpdatedTime": Date.now(), "Version": version, "Censored": false - }; + }; + + if (!IsServerAllowedToShard(ServerObj) && allow_sharding) + { + console.log(`Dropped server, marked to allow sharding but not whitelsited: id=${Id} ip=${IpAddress} port=${port} type=${game_type} name=${name}`); + return; + } if (IsServerFilter(ServerObj)) {