use .replaceAll instead of .replace

This commit is contained in:
Colbster937 2025-05-08 11:24:44 -05:00
parent c5a2b1002f
commit 71ad3059cc
28 changed files with 115 additions and 13 deletions

7
bin/main/bungee.yml Normal file
View File

@ -0,0 +1,7 @@
name: OriginBlacklist
version: ${version}
main: dev.colbster937.originblacklist.bungee.OriginBlacklistBungee
description: ${description}
author: Colbster937
depends:
- EaglercraftXServer

69
bin/main/config.yml Normal file
View File

@ -0,0 +1,69 @@
messages:
# Valid Placeholders:
# - %blocked% - The player's origin/brand that was blocked
# - %blocktype% - Shows what the player was blocked for
# - %easyblocktype% - Shows what the player was blocked for in an eagler-kid readable form
# - %host% - The IP the player pinged
kick: |
<red>This %easyblocktype% is not allowed on the server!</red>
<dark_gray>»</dark_gray> <gray>%blocked%</gray> <dark_gray>«</dark_gray>
<gray>Think this is a mistake? Join our discord:</gray>
<blue>discord.gg/changethisintheconfig</blue>
motd:
enabled: true
text: |
<red>This %easyblocktype% is not allowed!</red>
<dark_gray>»</dark_gray> <gray>%blocked%</gray> <dark_gray>«</dark_gray>
icon: "blacklisted.png"
# Origin + Brand blacklist supports wildcards
# Everything should be lowercase
blacklist:
origins:
- "hack.example.com"
brands:
- "*dragonx*"
- "*piclient*"
missing_origin: false
discord:
webhook: ""
# :>

9
bin/main/plugin.yml Normal file
View File

@ -0,0 +1,9 @@
name: OriginBlacklist
version: ${version}
main: dev.colbster937.originblacklist.bukkit.OriginBlacklistBukkit
description: ${description}
author: Colbster937
depend:
- EaglercraftXServer
commands:
originblacklist:

BIN
bin/main/server-blocked.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,14 @@
{
"id": "originblacklist",
"name": "OriginBlacklist",
"version": "${version}",
"description": "${description}",
"main": "dev.colbster937.originblacklist.velocity.OriginBlacklistVelocity",
"authors": ["Colbster937"],
"dependencies": [
{
"id": "eaglerxserver",
"optional": false
}
]
}

View File

@ -66,14 +66,14 @@ public class Base {
if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) { if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) {
for (String origin1 : config.blacklist.origins) { for (String origin1 : config.blacklist.origins) {
if (matches(origin, origin1)) { if (matches(origin, origin1)) {
setKickMessage(e, kick("origin", "website", origin)); setKickMessage(e, kick("origin", "website", origin, conn.getWebSocketHost()));
webhook(conn, origin, brand, "origin"); webhook(conn, origin, brand, "origin");
return; return;
} }
} }
} else { } else {
if (origin != "null" || origin != null) { if (origin != "null" || origin != null) {
setKickMessage(e, kick("origin", "website", origin)); setKickMessage(e, kick("origin", "website", origin, conn.getWebSocketHost()));
webhook(conn, "null", brand, "origin"); webhook(conn, "null", brand, "origin");
return; return;
} }
@ -81,7 +81,7 @@ public class Base {
if (brand != "null" && brand != null) { if (brand != "null" && brand != null) {
for (String brand1 : config.blacklist.brands) { for (String brand1 : config.blacklist.brands) {
if (matches(brand, brand1)) { if (matches(brand, brand1)) {
setKickMessage(e, kick("brand", "client", brand)); setKickMessage(e, kick("brand", "client", brand, conn.getWebSocketHost()));
webhook(conn, origin, brand, "brand"); webhook(conn, origin, brand, "brand");
return; return;
} }
@ -104,9 +104,10 @@ public class Base {
String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN); String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN);
List<String> m = List.of(config.messages.motd.text.split("\n")).stream() List<String> m = List.of(config.messages.motd.text.split("\n")).stream()
.map(line -> line .map(line -> line
.replace("%blocktype%", "origin") .replaceAll("%blocktype%", "origin")
.replace("%easyblocktype%", "website") .replaceAll("%easyblocktype%", "website")
.replace("%blocked%", origin)) .replaceAll("%blocked%", origin)
.replaceAll("%host%", conn.getWebSocketHost()))
.map(line -> LegacyComponentSerializer.legacySection().serialize( .map(line -> LegacyComponentSerializer.legacySection().serialize(
MiniMessage.miniMessage().deserialize( MiniMessage.miniMessage().deserialize(
line line
@ -160,12 +161,13 @@ public class Base {
return text1.toLowerCase().matches(text2.replace(".", "\\.").replaceAll("\\*", ".*").toLowerCase()); return text1.toLowerCase().matches(text2.replace(".", "\\.").replaceAll("\\*", ".*").toLowerCase());
} }
public static Component kick(String type, String easytype, String value) { public static Component kick(String type, String easytype, String value, String host) {
return MiniMessage.miniMessage().deserialize( return MiniMessage.miniMessage().deserialize(
config.messages.kick config.messages.kick
.replace("%blocktype%", type) .replaceAll("%blocktype%", type)
.replace("%easyblocktype%", easytype) .replaceAll("%easyblocktype%", easytype)
.replace("%blocked%", value) .replaceAll("%blocked%", value)
.replaceAll("%host%", host)
); );
} }
@ -178,6 +180,7 @@ public class Base {
? (String.valueOf(plr.getRewindProtocolVersion()) != null ? String.valueOf(plr.getRewindProtocolVersion()) : "undefined") ? (String.valueOf(plr.getRewindProtocolVersion()) != null ? String.valueOf(plr.getRewindProtocolVersion()) : "undefined")
: (String.valueOf(plr.getMinecraftProtocol()) != null ? String.valueOf(plr.getMinecraftProtocol()) : "undefined"); : (String.valueOf(plr.getMinecraftProtocol()) != null ? String.valueOf(plr.getMinecraftProtocol()) : "undefined");
String rewind = plr.isEaglerXRewindPlayer() ? "Yes" : "No"; String rewind = plr.isEaglerXRewindPlayer() ? "Yes" : "No";
String host = plr.getWebSocketHost();
String userAgent = plr.getWebSocketHeader(EnumWebSocketHeader.HEADER_USER_AGENT); String userAgent = plr.getWebSocketHeader(EnumWebSocketHeader.HEADER_USER_AGENT);
if (userAgent == null || userAgent.isEmpty()) userAgent = "undefined"; if (userAgent == null || userAgent.isEmpty()) userAgent = "undefined";
@ -187,11 +190,11 @@ public class Base {
"embeds": [ "embeds": [
{ {
"title": "Player Information", "title": "Player Information",
"description": "🎮 **Name:** %s\\n🏠 **Address:** %s\\n🌄 **PVN:** %s\\n🌐 **Origin:** %s\\n🔋 **Brand:** %s\\n🧊 **User Agent:** %s\\n⏪ **Rewind:** %s" "description": "🎮 **Name:** %s\\n🏠 **Address:** %s\\n🌄 **PVN:** %s\\n🌐 **Origin:** %s\\n🔋 **Brand:** %s\\n🪑 **Host:** %s\\n🧊 **User Agent:** %s\\n⏪ **Rewind:** %s"
} }
] ]
} }
""", type, plr.getAuthUsername(), addr, protocol, origin, brand, userAgent, rewind); """, type, plr.getAuthUsername(), addr, protocol, origin, brand, host, userAgent, rewind);
try { try {
HttpURLConnection conn = (HttpURLConnection) new URL(webhook).openConnection(); HttpURLConnection conn = (HttpURLConnection) new URL(webhook).openConnection();

View File

@ -3,6 +3,7 @@ messages:
# - %blocked% - The player's origin/brand that was blocked # - %blocked% - The player's origin/brand that was blocked
# - %blocktype% - Shows what the player was blocked for # - %blocktype% - Shows what the player was blocked for
# - %easyblocktype% - Shows what the player was blocked for in an eagler-kid readable form # - %easyblocktype% - Shows what the player was blocked for in an eagler-kid readable form
# - %host% - The IP the player pinged
kick: | kick: |
<red>This %easyblocktype% is not allowed on the server!</red> <red>This %easyblocktype% is not allowed on the server!</red>
@ -63,7 +64,6 @@ discord:
# :> # :>