Skip to content

Commit

Permalink
Merge pull request #76 from Aelysium-Group/development
Browse files Browse the repository at this point in the history
v0.8.2
  • Loading branch information
nathan-i-martin authored Oct 7, 2024
2 parents 11b8610 + 89f8de3 commit 1501b3b
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 43 deletions.
2 changes: 1 addition & 1 deletion plugin/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ org.gradle.jvmargs = -Xmx4G
java_version = 17

# Plugin Properties
plugin_version = 0.8.1
plugin_version = 0.8.2
maven_group = group.aelysium.rustyconnector
archives_base_name = rustyconnector
config_version = 6
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package group.aelysium.rustyconnector.toolkit.velocity.config;

import group.aelysium.rustyconnector.toolkit.velocity.whitelist.IWhitelistPlayerFilter;

import java.util.List;

public interface WhitelistConfig {
boolean getUse_players();
List<Object> getPlayers();
List<IWhitelistPlayerFilter> getPlayers();
boolean getUse_permission();
boolean getUse_country();
List<String> getCountries();
String getMessage();
boolean isStrict();
boolean isInverted();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ protected void register() throws IllegalStateException {
Tinder api = Tinder.get();
PluginLogger logger = api.logger();

WebhookEventManager.clear();

Boolean enabled = IYAML.getValue(this.data, "enabled", Boolean.class);
if(!enabled) return;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,24 @@
import group.aelysium.rustyconnector.plugin.velocity.central.Tinder;
import group.aelysium.rustyconnector.plugin.velocity.lib.config.ConfigService;
import group.aelysium.rustyconnector.plugin.velocity.lib.lang.ProxyLang;
import group.aelysium.rustyconnector.plugin.velocity.lib.whitelist.WhitelistPlayerFilter;
import group.aelysium.rustyconnector.toolkit.core.config.IConfigService;
import group.aelysium.rustyconnector.toolkit.core.config.IYAML;
import group.aelysium.rustyconnector.toolkit.core.lang.LangFileMappings;
import group.aelysium.rustyconnector.toolkit.velocity.whitelist.IWhitelistPlayerFilter;
import net.kyori.adventure.text.format.NamedTextColor;
import org.spongepowered.configurate.serialize.SerializationException;

import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class WhitelistConfig extends YAML implements group.aelysium.rustyconnector.toolkit.velocity.config.WhitelistConfig {
private boolean use_players = false;
private List<Object> players = new ArrayList<>();
private final List<IWhitelistPlayerFilter> players = new ArrayList<>();

private boolean use_permission = false;

private boolean use_country = false;
private List<String> countries = new ArrayList<>();
private String message = "You aren't whitelisted on this server!";
private boolean strict = false;
private boolean inverted = false;
Expand All @@ -31,22 +32,14 @@ public boolean getUse_players() {
return use_players;
}

public List<Object> getPlayers() {
public List<IWhitelistPlayerFilter> getPlayers() {
return players;
}

public boolean getUse_permission() {
return use_permission;
}

public boolean getUse_country() {
return use_country;
}

public List<String> getCountries() {
return countries;
}

public String getMessage() {
return message;
}
Expand All @@ -71,20 +64,28 @@ protected void register() throws IllegalStateException {
PluginLogger logger = Tinder.get().logger();

this.use_players = IYAML.getValue(this.data,"use-players",Boolean.class);

try {
this.players = (IYAML.getValue(this.data,"players",List.class));
} catch (ClassCastException e) {
IYAML.get(this.data,"players").childrenList().forEach(e -> {
try {
String username = e.node("username").get(String.class);
String uuid = e.node("uuid").get(String.class);
String ip = e.node("ip").get(String.class);
new WhitelistPlayerFilter(
username,
uuid == null ? null : UUID.fromString(uuid),
ip
);
} catch (SerializationException ex) {
throw new RuntimeException(ex);
}
});
} catch (Exception e) {
throw new IllegalStateException("The node [players] in "+this.name()+" is invalid! Make sure you are using the correct type of data!");
}

this.use_permission = IYAML.getValue(this.data,"use-permission",Boolean.class);

this.use_country = IYAML.getValue(this.data,"use-country",Boolean.class);
if(this.use_country)
ProxyLang.BOXED_MESSAGE_COLORED.send(logger, "RustyConnector does not currently support country codes in whitelists. Setting `use-country` to false.", NamedTextColor.YELLOW);
this.use_country = false;
this.countries = new ArrayList<>();

this.message = IYAML.getValue(data,"message",String.class);
if(this.message.equalsIgnoreCase(""))
throw new IllegalStateException("Whitelist kick messages cannot be empty!");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

import static group.aelysium.rustyconnector.toolkit.velocity.family.Metadata.SCALAR_FAMILY_META;
import static group.aelysium.rustyconnector.toolkit.velocity.util.DependencyInjector.inject;
Expand Down Expand Up @@ -134,7 +135,12 @@ public Request connect(IPlayer player) {
return request;
}

serverResponse = Optional.of(server.connect(player));
Request r = server.connect(player);
serverResponse = Optional.of(r);
try {
if (r.result().get(10, TimeUnit.SECONDS).connected()) break;
} catch (Exception ignore) {}

this.loadBalancer.forceIterate();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger;

public class MCLoader implements IMCLoader {
Expand Down Expand Up @@ -277,15 +278,25 @@ private PlayerConnectable.Request internalConnect(IPlayer player) {

ConnectionRequestBuilder connection = player.resolve().orElseThrow().createConnectionRequest(this.registeredServer());
try {
ConnectionRequestBuilder.Result connectionResult = connection.connect().orTimeout(5, TimeUnit.SECONDS).get();
ConnectionRequestBuilder.Result connectionResult = connection.connect().get(5, TimeUnit.SECONDS);

if (!connectionResult.isSuccessful()) throw new NoOutputException();
if (!connectionResult.isSuccessful()) {
result.complete(ConnectionResult.failed(connectionResult.getReasonComponent().orElse(Component.text("An internal error occurred while establishing this connection!"))));
return request;
}

this.playerCount.incrementAndGet();
result.complete(ConnectionResult.success(Component.text("You successfully connected to the server!"), this));
return request;
} catch (Exception ignore) {}
} catch (Exception ignore) {}
} catch (TimeoutException e) {
result.complete(ConnectionResult.failed(Component.text("The connection timed out.")));
return request;
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}

result.complete(ConnectionResult.failed(Component.text("Unable to connect you to the server!")));
return request;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ public class WebhookEventManager {
private static Map<WebhookAlertFlag, List<DiscordWebhook>> proxyListeners = new HashMap<>();
private static Map<WebhookAlertFlag, Map<String, List<DiscordWebhook>>> familyListeners = new HashMap<>();

public static void clear() {
proxyListeners.clear();
familyListeners.clear();
}

/**
* Registers a webhook to the proxy.
* @param webhook The webhook to register.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import group.aelysium.rustyconnector.plugin.velocity.central.Tinder;
import group.aelysium.rustyconnector.plugin.velocity.lib.config.configs.WhitelistConfig;
import group.aelysium.rustyconnector.plugin.velocity.lib.Permission;
import group.aelysium.rustyconnector.toolkit.velocity.whitelist.IWhitelistPlayerFilter;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;

Expand All @@ -20,7 +21,7 @@ public class Whitelist implements IWhitelist {
private final String message;
private final String name;
private final String permission;
private final List<WhitelistPlayerFilter> playerFilters = new ArrayList<>();
private final List<IWhitelistPlayerFilter> playerFilters = new ArrayList<>();

private final boolean usePlayers;
private final boolean usePermission;
Expand Down Expand Up @@ -53,7 +54,7 @@ public boolean inverted() {
return this.inverted;
}

public List<WhitelistPlayerFilter> playerFilters() {
public List<IWhitelistPlayerFilter> playerFilters() {
return this.playerFilters;
}

Expand Down Expand Up @@ -125,16 +126,8 @@ public static Reference init(DependencyInjector.DI4<List<Component>, LangService
whitelistConfig.isStrict(),
whitelistConfig.isInverted()
);
if(whitelistConfig.getUse_players()) {
List<Object> players = whitelistConfig.getPlayers();
Gson gson = new Gson();
players.forEach(entry -> {
String json = gson.toJson(entry);
WhitelistPlayerFilter player = gson.fromJson(json, WhitelistPlayerFilter.class);

whitelist.playerFilters().add(player);
});
}
if(whitelistConfig.getUse_players())
whitelist.playerFilters.addAll(whitelistConfig.getPlayers());

bootOutput.add(Component.text(" | Registered whitelist: "+whitelistName, NamedTextColor.YELLOW));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public WhitelistPlayerFilter(String username, UUID uuid, String ip) {
}

public static boolean validate(Whitelist whitelist, IPlayer playerToValidate) {
WhitelistPlayerFilter player = whitelist.playerFilters().stream()
IWhitelistPlayerFilter player = whitelist.playerFilters().stream()
.filter(whitelistPlayerFilter -> whitelistPlayerFilter.username().equals(playerToValidate.username()))
.findAny().orElse(null);
if(player == null) return false;
Expand Down

0 comments on commit 1501b3b

Please sign in to comment.