Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,288 changes: 1,288 additions & 0 deletions .editorconfig

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/workflows/test-gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ jobs:
name: AntiVPN-Universal
path: build/libs/AntiVPN-*-universal.jar
- name: Test
run: gradle test --no-daemon
run: gradle test --no-daemon --parallel
4 changes: 4 additions & 0 deletions Bukkit/Loader/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,8 @@ tasks.named('shadowJar') {
dependsOn(':Bukkit:Plugin:shadowJar')
}

tasks.named('compileJava') {
dependsOn(':Bukkit:Plugin:shadowJar')
}

tasks.build.dependsOn shadowJar
Original file line number Diff line number Diff line change
Expand Up @@ -22,31 +22,30 @@

public class BukkitLoaderPlugin extends JavaPlugin {

private static final String JAR_NAME = "antivpn-bukkit.jarinjar";
private static final String SOURCE_NAME = "antivpn-source.jarinjar";
private static final String BOOTSTRAP_CLASS = "dev.brighten.antivpn.bukkit.BukkitPlugin";

private final LoaderBootstrap plugin;

public BukkitLoaderPlugin() {
JarInJarClassLoader loader = new JarInJarClassLoader(getClass().getClassLoader(), JAR_NAME, SOURCE_NAME);
this.plugin = loader.instantiatePlugin(BOOTSTRAP_CLASS, JavaPlugin.class, this);
}

@Override
public void onLoad() {
this.plugin.onLoad(getDataFolder());
}

@Override
public void onEnable() {
this.plugin.onEnable();
}

@Override
public void onDisable() {
this.plugin.onDisable();
}


private static final String JAR_NAME = "antivpn-bukkit.jarinjar";
private static final String SOURCE_NAME = "antivpn-source.jarinjar";
private static final String BOOTSTRAP_CLASS = "dev.brighten.antivpn.bukkit.BukkitPlugin";

private final LoaderBootstrap plugin;

public BukkitLoaderPlugin() {
JarInJarClassLoader loader =
new JarInJarClassLoader(getClass().getClassLoader(), JAR_NAME, SOURCE_NAME);
this.plugin = loader.instantiatePlugin(BOOTSTRAP_CLASS, JavaPlugin.class, this);
}

@Override
public void onLoad() {
this.plugin.onLoad(getDataFolder());
}

@Override
public void onEnable() {
this.plugin.onEnable();
}

@Override
public void onDisable() {
this.plugin.onDisable();
}
}
1 change: 1 addition & 0 deletions Bukkit/Plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ dependencies {
testImplementation 'org.mockito:mockito-core:5.11.0'
testImplementation 'org.mockito:mockito-subclass:5.11.0'
testImplementation 'org.mockito:mockito-junit-jupiter:5.11.0'
testImplementation testFixtures(project(':Common:Source'))
}

shadowJar {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,38 +19,37 @@
import dev.brighten.antivpn.AntiVPN;
import dev.brighten.antivpn.api.APIPlayer;
import dev.brighten.antivpn.command.CommandExecutor;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.Optional;

@RequiredArgsConstructor
public class BukkitCommandExecutor implements CommandExecutor {

private final CommandSender sender;
private final CommandSender sender;

@Override
public void sendMessage(String message, Object... objects) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
String.format(message, objects)));
}
@Override
public void sendMessage(String message, Object... objects) {
sender.sendMessage(
ChatColor.translateAlternateColorCodes('&', String.format(message, objects)));
}

@Override
public boolean hasPermission(String permission) {
return sender.hasPermission(permission);
}
@Override
public boolean hasPermission(String permission) {
return sender.hasPermission(permission);
}

@Override
public Optional<APIPlayer> getPlayer() {
if(!isPlayer()) return Optional.empty();
@Override
public Optional<APIPlayer> getPlayer() {
if (!isPlayer()) return Optional.empty();

return AntiVPN.getInstance().getPlayerExecutor().getPlayer(((Player)sender).getUniqueId());
}
return AntiVPN.getInstance().getPlayerExecutor().getPlayer(((Player) sender).getUniqueId());
}

@Override
public boolean isPlayer() {
return sender instanceof Player;
}
@Override
public boolean isPlayer() {
return sender instanceof Player;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import dev.brighten.antivpn.api.OfflinePlayer;
import dev.brighten.antivpn.api.VPNExecutor;
import dev.brighten.antivpn.utils.StringUtil;
import java.util.logging.Level;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
Expand All @@ -33,89 +34,90 @@
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitRunnable;

import java.util.logging.Level;

public class BukkitListener extends VPNExecutor implements Listener {

@Override
public void registerListeners() {
Bukkit.getPluginManager()
.registerEvents(this, BukkitPlugin.pluginInstance.getPlugin());
}

@Override
public void log(Level level, String log, Object... objects) {
Bukkit.getLogger().log(level, String.format(log, objects));
}

@Override
public void log(String log, Object... objects) {
log(Level.INFO, String.format(log, objects));
}

@Override
public void logException(String message, Throwable ex) {
Bukkit.getLogger().log(Level.SEVERE, message, ex);
@Override
public void registerListeners() {
Bukkit.getPluginManager().registerEvents(this, BukkitPlugin.pluginInstance.getPlugin());
}

@Override
public void log(Level level, String log, Object... objects) {
Bukkit.getLogger().log(level, String.format(log, objects));
}

@Override
public void log(String log, Object... objects) {
log(Level.INFO, String.format(log, objects));
}

@Override
public void logException(String message, Throwable ex) {
Bukkit.getLogger().log(Level.SEVERE, message, ex);
}

@Override
public void runCommand(String command) {
new BukkitRunnable() {
public void run() {
Bukkit.getServer()
.dispatchCommand(
Bukkit.getConsoleSender(), ChatColor.translateAlternateColorCodes('&', command));
}
}.runTask(BukkitPlugin.pluginInstance.getPlugin());
}

@Override
public void disablePlugin() {
HandlerList.unregisterAll(this);
Bukkit.getPluginManager().disablePlugin(BukkitPlugin.pluginInstance.getPlugin());
}

@EventHandler(priority = EventPriority.HIGH)
public void onLogin(final PlayerLoginEvent event) {
APIPlayer player =
AntiVPN.getInstance()
.getPlayerExecutor()
.getPlayer(event.getPlayer().getUniqueId())
.orElse(
new OfflinePlayer(
event.getPlayer().getUniqueId(),
event.getPlayer().getName(),
event.getAddress()));

CheckResult result = player.checkPlayer();

if (!result.resultType().isShouldBlock()) return;

if (!AntiVPN.getInstance().getVpnConfig().isKickPlayers()) {
return;
}

@Override
public void runCommand(String command) {
new BukkitRunnable() {
public void run() {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(),
ChatColor.translateAlternateColorCodes('&', command));
}
}.runTask(BukkitPlugin.pluginInstance.getPlugin());
}

@Override
public void disablePlugin() {
HandlerList.unregisterAll(this);
Bukkit.getPluginManager().disablePlugin(BukkitPlugin.pluginInstance.getPlugin());
}

@EventHandler(priority = EventPriority.HIGH)
public void onLogin(final PlayerLoginEvent event) {
APIPlayer player = AntiVPN.getInstance().getPlayerExecutor().getPlayer(event.getPlayer().getUniqueId())
.orElse(new OfflinePlayer(
event.getPlayer().getUniqueId(),
event.getPlayer().getName(),
event.getAddress()
));

CheckResult result = player.checkPlayer();

if(!result.resultType().isShouldBlock()) return;

if(!AntiVPN.getInstance().getVpnConfig().isKickPlayers()) {
return;
}

event.setResult(PlayerLoginEvent.Result.KICK_BANNED);
event.setKickMessage(switch (result.resultType()) {
case DENIED_COUNTRY -> StringUtil.varReplace(
AntiVPN.getInstance().getVpnConfig().getCountryVanillaKickReason(),
player,
result.response()
);
case DENIED_PROXY ->
StringUtil.varReplace(
AntiVPN.getInstance().getVpnConfig().getKickMessage(),
player,
result.response()
);
default -> "You were kicked by KauriVPN for an unknown reason!";
event.setResult(PlayerLoginEvent.Result.KICK_BANNED);
event.setKickMessage(
switch (result.resultType()) {
case DENIED_COUNTRY ->
StringUtil.varReplace(
AntiVPN.getInstance().getVpnConfig().getCountryVanillaKickReason(),
player,
result.response());
case DENIED_PROXY ->
StringUtil.varReplace(
AntiVPN.getInstance().getVpnConfig().getKickMessage(), player, result.response());
default -> "You were kicked by KauriVPN for an unknown reason!";
});
}

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onJoin(final PlayerJoinEvent event) {
AntiVPN.getInstance().getPlayerExecutor().getPlayer(event.getPlayer().getUniqueId())
.ifPresent(APIPlayer::checkAlertsState);
}

@EventHandler
public void onQuit(PlayerQuitEvent event) {
AntiVPN.getInstance().getPlayerExecutor().unloadPlayer(event.getPlayer().getUniqueId());
}
}

@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onJoin(final PlayerJoinEvent event) {
AntiVPN.getInstance()
.getPlayerExecutor()
.getPlayer(event.getPlayer().getUniqueId())
.ifPresent(APIPlayer::checkAlertsState);
}

@EventHandler
public void onQuit(PlayerQuitEvent event) {
AntiVPN.getInstance().getPlayerExecutor().unloadPlayer(event.getPlayer().getUniqueId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,29 +23,33 @@

public class BukkitPlayer extends APIPlayer {

private final Player player;
public BukkitPlayer(Player player) {
super(player.getUniqueId(), player.getName(), player.getAddress() != null ? player.getAddress().getAddress() : null);

this.player = player;
}

@Override
public void sendMessage(String message) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
}

@Override
public void kickPlayer(String reason) {
new BukkitRunnable() {
public void run() {
player.kickPlayer(ChatColor.translateAlternateColorCodes('&', reason));
}
}.runTask(BukkitPlugin.pluginInstance.getPlugin());
}

@Override
public boolean hasPermission(String permission) {
return player.hasPermission(permission);
}
private final Player player;

public BukkitPlayer(Player player) {
super(
player.getUniqueId(),
player.getName(),
player.getAddress() != null ? player.getAddress().getAddress() : null);

this.player = player;
}

@Override
public void sendMessage(String message) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
}

@Override
public void kickPlayer(String reason) {
new BukkitRunnable() {
public void run() {
player.kickPlayer(ChatColor.translateAlternateColorCodes('&', reason));
}
}.runTask(BukkitPlugin.pluginInstance.getPlugin());
}

@Override
public boolean hasPermission(String permission) {
return player.hasPermission(permission);
}
}
Loading
Loading