diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/OriginBlacklist.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/OriginBlacklist.java index aa1bfe8..001d6d7 100644 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/OriginBlacklist.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/OriginBlacklist.java @@ -378,4 +378,8 @@ public class OriginBlacklist { return false; } + public File getLocalBlacklist() { + return localBlacklist; + } + } diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/OriginBlacklistPluginBungee.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/OriginBlacklistPluginBungee.java index 75d9a1d..25e9a5e 100644 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/OriginBlacklistPluginBungee.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/OriginBlacklistPluginBungee.java @@ -9,7 +9,11 @@ import java.util.logging.Logger; import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.OriginBlacklist; import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.OriginBlacklistConfigAdapter; import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.OriginBlacklistLoggerAdapter; +import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.command.CommandDomainBlock; +import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.command.CommandDomainBlockDomain; +import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.command.CommandDomainUnblock; import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.api.plugin.PluginManager; /** * Copyright (c) 2024 lax1dude. All Rights Reserved. @@ -84,7 +88,11 @@ public class OriginBlacklistPluginBungee extends Plugin { } }, 0, 6000l); } - getProxy().getPluginManager().registerListener(this, new OriginBlacklistListenerBungee(this)); + PluginManager pm = getProxy().getPluginManager(); + pm.registerListener(this, new OriginBlacklistListenerBungee(this)); + pm.registerCommand(this, new CommandDomainBlock()); + pm.registerCommand(this, new CommandDomainBlockDomain()); + pm.registerCommand(this, new CommandDomainUnblock()); } @Override @@ -94,6 +102,7 @@ public class OriginBlacklistPluginBungee extends Plugin { updateOriginBlacklistTimer = null; } getProxy().getPluginManager().unregisterListeners(this); + getProxy().getPluginManager().unregisterCommands(this); } public static OriginBlacklistPluginBungee getPlugin() { diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainBlock.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainBlock.java index 38653e5..23abe31 100644 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainBlock.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainBlock.java @@ -1,5 +1,65 @@ package net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.command; -public class CommandDomainBlock { +import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.server.EaglerInitialHandler; +import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.OriginBlacklist; +import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.OriginBlacklistPluginBungee; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; + +/** + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class CommandDomainBlock extends Command { + + public CommandDomainBlock() { + super("block-domain", "eaglercraft.command.blockdomain"); + } + + @Override + public void execute(CommandSender p0, String[] p1) { + if (p1.length < 1) { + p0.sendMessage(new TextComponent(ChatColor.RED + "Please follow this command by a username")); + return; + } + final ProxiedPlayer user = ProxyServer.getInstance().getPlayer(p1[0]); + if (user == null) { + p0.sendMessage(new TextComponent(ChatColor.RED + "That user is not online")); + }else { + if(user.getPendingConnection() instanceof EaglerInitialHandler) { + Object o = ((EaglerInitialHandler)user.getPendingConnection()).getOrigin(); + if(o != null) { + if("null".equals(o)) { + p0.sendMessage(new TextComponent(ChatColor.RED + "That user is on an offline download")); + }else { + OriginBlacklist bl = OriginBlacklistPluginBungee.getPlugin().list; + bl.addLocal((String)o); + p0.sendMessage(new TextComponent(ChatColor.RED + "Domain of " + ChatColor.WHITE + p1[0] + ChatColor.RED + " is " + ChatColor.WHITE + o)); + p0.sendMessage(new TextComponent(ChatColor.RED + "It was added to the local block list.")); + user.disconnect(new TextComponent(bl.getKickMessage())); + } + }else { + p0.sendMessage(new TextComponent(ChatColor.RED + "Domain of " + p1[0] + " is unknown (desktop runtime?)")); + } + }else { + p0.sendMessage(new TextComponent(ChatColor.RED + "That user is not using an Eaglercraft client")); + } + } + } } diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainBlockDomain.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainBlockDomain.java index 2edd067..a9bbb98 100644 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainBlockDomain.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainBlockDomain.java @@ -1,5 +1,40 @@ package net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.command; -public class CommandDomainBlockDomain { +import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.OriginBlacklistPluginBungee; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; + +/** + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class CommandDomainBlockDomain extends Command { + + public CommandDomainBlockDomain() { + super("block-domain-name", "eaglercraft.command.blockdomainname"); + } + + @Override + public void execute(CommandSender p0, String[] p1) { + if (p1.length < 1) { + p0.sendMessage(new TextComponent(ChatColor.RED + "Please follow this command by a domain")); + return; + } + OriginBlacklistPluginBungee.getPlugin().list.addLocal(p1[0]); + p0.sendMessage(new TextComponent(ChatColor.GREEN + "The domain '" + ChatColor.WHITE + p1[0] + ChatColor.GREEN + "' was added to the block list")); + } } diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainUnblock.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainUnblock.java index db7355f..26850d0 100644 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainUnblock.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/origin_blacklist/bungee/command/CommandDomainUnblock.java @@ -1,5 +1,45 @@ package net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.command; -public class CommandDomainUnblock { +import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.OriginBlacklist; +import net.lax1dude.eaglercraft.v1_8.plugin.origin_blacklist.bungee.OriginBlacklistPluginBungee; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; + +/** + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +public class CommandDomainUnblock extends Command { + + public CommandDomainUnblock() { + super("unblock-domain", "eaglercraft.command.unblockdomain", "unblock-domain-name"); + } + + @Override + public void execute(CommandSender p0, String[] p1) { + if (p1.length < 1) { + p0.sendMessage(new TextComponent(ChatColor.RED + "Please follow this command by a domain")); + return; + } + OriginBlacklist bl = OriginBlacklistPluginBungee.getPlugin().list; + if(bl.removeLocal(p1[0])) { + p0.sendMessage(new TextComponent(ChatColor.GREEN + "The domain '" + p1[0] + "' was removed from the local block list")); + }else { + p0.sendMessage(new TextComponent(ChatColor.RED + "The domain was not removed, is it on the block list? Check '" + bl.getLocalBlacklist().getName() + "' in your plugin directory")); + } + } }