From 7e55676775c86e4798890767a1803a358f5c0b6d Mon Sep 17 00:00:00 2001 From: Peijun Zhao Date: Sat, 16 May 2026 20:11:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=AF=E5=8A=A8=E5=B4=A9?= =?UTF-8?q?=E6=BA=83=20+=20Banner=E5=8D=87=E7=BA=A7=E4=B8=BASpring=20Boot?= =?UTF-8?q?=E5=BD=A9=E8=89=B2=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AntiNoInteractService: 删除Set.of()中重复的LOOM元素导致java.lang.IllegalArgumentException - banner.txt: 替换旧v1.0.0纯文本Banner为Spring Boot ANSI彩色版 ALUER红色+绿色 / ServerGuard金色+青色 / V5.0.0紫色 - ServerGuardService.printBanner(): 简化为补充信息行,Banner由banner.txt统一管理 --- .../aluer/security/AntiNoInteractService.java | 3 +- .../com/aluer/service/ServerGuardService.java | 39 +++---------------- src/main/resources/banner.txt | 31 +++++++-------- 3 files changed, 21 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/aluer/security/AntiNoInteractService.java b/src/main/java/com/aluer/security/AntiNoInteractService.java index a1d6690..5bb6169 100644 --- a/src/main/java/com/aluer/security/AntiNoInteractService.java +++ b/src/main/java/com/aluer/security/AntiNoInteractService.java @@ -78,8 +78,7 @@ public class AntiNoInteractService { "BREWING_STAND", "BEACON", "SMITHING_TABLE", "GRINDSTONE", "CARTOGRAPHY_TABLE", "LOOM", "STONECUTTER", "HOPPER", "DISPENSER", "DROPPER", - "JUKEBOX", "NOTE_BLOCK", "BELL", "LECTERN", - "LOOM", "FLETCHING_TABLE", + "JUKEBOX", "NOTE_BLOCK", "BELL", "LECTERN", "FLETCHING_TABLE", "OAK_DOOR", "IRON_DOOR", "SPRUCE_DOOR", "BIRCH_DOOR", "JUNGLE_DOOR", "ACACIA_DOOR", "DARK_OAK_DOOR", "CRIMSON_DOOR", "WARPED_DOOR", "OAK_TRAPDOOR", "IRON_TRAPDOOR", diff --git a/src/main/java/com/aluer/service/ServerGuardService.java b/src/main/java/com/aluer/service/ServerGuardService.java index c74ec91..52950b2 100644 --- a/src/main/java/com/aluer/service/ServerGuardService.java +++ b/src/main/java/com/aluer/service/ServerGuardService.java @@ -201,43 +201,14 @@ public class ServerGuardService implements CommandLineRunner { // ─── Banner ──────────────────────────────────────── private void printBanner() { + // Banner 已由 src/main/resources/banner.txt 提供(Spring Boot 启动时自动渲染) + // 此处仅输出补充信息 boolean hasAgent = agentServer != null; - // ANSI 颜色码 - final String GOLD = ""; - final String CYAN = ""; - final String GRAY = ""; - final String GREEN = ""; - final String PURP = ""; - final String RST = ""; - - logger.info(""); - logger.info("{}╔══════════════════════════════════════════════════════════════╗{}", GRAY, RST); - logger.info("{}║{} {}█████╗ ██╗ ██╗███████╗██████╗ {}███████╗██████╗ {} {}║{}", GRAY, GOLD, CYAN, GRAY, RST); - logger.info("{}║{} {}██╔══██╗██║ ██║██╔════╝██╔══██╗ {}██╔════╝██╔══██╗{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST); - logger.info("{}║{} {}███████║██║ ██║█████╗ ██████╔╝ {}███████╗██████╔╝{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST); - logger.info("{}║{} {}██╔══██║██║ ██║██╔══╝ ██╔══██╗ {}╚════██║██╔══██╗{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST); - logger.info("{}║{} {}██║ ██║╚██████╔╝███████╗██║ ██║ {}███████║██║ ██║{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST); - logger.info("{}║{} {}╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ {}╚══════╝╚═╝ ╚═╝{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST); - logger.info("{}║{} {}║{}", GRAY, RST); - logger.info("{}║{} {}AI-Powered Minecraft PaperMC Server Protection {}V5.0.0 {}║{}", GRAY, GREEN, PURP, GRAY, RST); - logger.info("{}║{} {}135+ Security Modules │ 100% Anti-Cheat Coverage {}║{}", GRAY, PURP, GRAY, RST); - logger.info("{}╠══════════════════════════════════════════════════════════════╣{}", GRAY, RST); - logger.info("{}║{} Java: {} {}║{}", GRAY, String.format("%-36s", System.getProperty("java.version")), GRAY, RST); - logger.info("{}║{} Available CPUs: {}{} {}║{}", GRAY, String.format("%-32s", Runtime.getRuntime().availableProcessors()), GRAY, RST); - logger.info("{}║{} Max Memory: {}{} {}║{}", GRAY, String.format("%-32s", (Runtime.getRuntime().maxMemory() / (1024 * 1024)) + " MB"), GRAY, RST); + logger.info("Web Console: http://0.0.0.0:{}/", serverPort); if (hasAgent) { - logger.info("{}║{} Agent WS: ws://0.0.0.0:{}/agent{} {}║{}", GRAY, serverPort, " ", GRAY, RST); + logger.info("Agent WS: ws://0.0.0.0:{}/agent", serverPort); } - logger.info("{}║{} Web Console: http://0.0.0.0:{}{} {}║{}", GRAY, serverPort, " ", GRAY, RST); - logger.info("{}║{} DeepSeek AI: {}{} {}║{}", GRAY, - deepSeekClient.isEnabled() ? "enabled (" + config.getAi().getDeepseek().getModel() + ")" : "disabled", - deepSeekClient.isEnabled() ? "" : " ", GRAY, RST); - logger.info("{}║{} Mode: {} {}║{}", GRAY, - String.format("%-36s", hasAgent ? "Agent Server (WebSocket)" : "External Monitor"), GRAY, RST); - logger.info("{}╚══════════════════════════════════════════════════════════════╝{}", GRAY, RST); - logger.info(""); - logger.info(" {}Type 'help' in the shell for full command reference.{}", GOLD, RST); - logger.info(" {}Access the web console at http://localhost:{}/{}", GOLD, serverPort, RST); + logger.info("Type 'help' in the shell for full command reference."); logger.info(""); } diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt index 7a5cc5b..78f9858 100644 --- a/src/main/resources/banner.txt +++ b/src/main/resources/banner.txt @@ -1,18 +1,17 @@ -${AnsiColor.BRIGHT_CYAN} ╔════════════════════════════════════════════════════════════╗ - ║ ║ - ║ █████╗ ██╗ ██╗ ██╗███████╗██████╗ ║ - ║ ██╔══██╗██║ ██║ ██║██╔════╝██╔══██╗ ║ - ║ ███████║██║ ██║ ██║█████╗ ██████╔╝ ║ - ║ ██╔══██║██║ ██║ ██║██╔══╝ ██╔══██╗ ║ - ║ ██║ ██║███████╗╚██████╔╝███████╗██║ ██║ ║ - ║ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ║ - ║ ║ - ║ ServerGuard v1.0.0 ║ - ║ AI-Powered Minecraft Server Protection ║ - ║ ║ - ╚════════════════════════════════════════════════════════════╝${AnsiStyle.NORMAL} +${AnsiColor.BRIGHT_YELLOW} ╔══════════════════════════════════════════════════════════════╗ + ║ ║ + ║ ${AnsiColor.BRIGHT_RED}█████╗ ${AnsiColor.BRIGHT_GREEN}██╗ ██╗${AnsiColor.BRIGHT_YELLOW}███████╗${AnsiColor.BRIGHT_CYAN}██████╗ ${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}███████╗${AnsiColor.BRIGHT_CYAN}██████╗ ${AnsiColor.BRIGHT_YELLOW} ║ + ║ ${AnsiColor.BRIGHT_RED}██╔══██╗${AnsiColor.BRIGHT_GREEN}██║ ██║${AnsiColor.BRIGHT_YELLOW}██╔════╝${AnsiColor.BRIGHT_CYAN}██╔══██╗${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}██╔════╝${AnsiColor.BRIGHT_CYAN}██╔══██╗${AnsiColor.BRIGHT_YELLOW} ║ + ║ ${AnsiColor.BRIGHT_RED}███████║${AnsiColor.BRIGHT_GREEN}██║ ██║${AnsiColor.BRIGHT_YELLOW}█████╗ ${AnsiColor.BRIGHT_CYAN}██████╔╝${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}███████╗${AnsiColor.BRIGHT_CYAN}██████╔╝${AnsiColor.BRIGHT_YELLOW} ║ + ║ ${AnsiColor.BRIGHT_RED}██╔══██║${AnsiColor.BRIGHT_GREEN}██║ ██║${AnsiColor.BRIGHT_YELLOW}██╔══╝ ${AnsiColor.BRIGHT_CYAN}██╔══██╗${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}╚════██║${AnsiColor.BRIGHT_CYAN}██╔══██╗${AnsiColor.BRIGHT_YELLOW} ║ + ║ ${AnsiColor.BRIGHT_RED}██║ ██║${AnsiColor.BRIGHT_GREEN}╚██████╔╝${AnsiColor.BRIGHT_YELLOW}███████╗${AnsiColor.BRIGHT_CYAN}██║ ██║${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}███████║${AnsiColor.BRIGHT_CYAN}██║ ██║${AnsiColor.BRIGHT_YELLOW} ║ + ║ ${AnsiColor.BRIGHT_RED}╚═╝ ╚═╝${AnsiColor.BRIGHT_GREEN} ╚═════╝ ${AnsiColor.BRIGHT_YELLOW}╚══════╝${AnsiColor.BRIGHT_CYAN}╚═╝ ╚═╝${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}╚══════╝${AnsiColor.BRIGHT_CYAN}╚═╝ ╚═╝${AnsiColor.BRIGHT_YELLOW} ║ + ║ ║ + ║ ${AnsiColor.BRIGHT_GREEN}AI-Powered Minecraft PaperMC Server Protection${AnsiColor.BRIGHT_YELLOW} ║ + ║ ${AnsiColor.BRIGHT_MAGENTA}V5.0.0 ${AnsiColor.BRIGHT_WHITE}|${AnsiColor.BRIGHT_MAGENTA} 135+ Security Modules ${AnsiColor.BRIGHT_WHITE}|${AnsiColor.BRIGHT_MAGENTA} 100% Anti-Cheat${AnsiColor.BRIGHT_YELLOW} ║ + ║ ║ + ╚══════════════════════════════════════════════════════════════╝${AnsiStyle.NORMAL} - ${AnsiColor.BRIGHT_GREEN}:: DeepSeek AI Powered ::${AnsiStyle.NORMAL} ${AnsiColor.BRIGHT_WHITE}Autonomous Defense Engine${AnsiStyle.NORMAL} - ${AnsiColor.BRIGHT_GREEN}:: Multi-Layer Kernel ::${AnsiStyle.NORMAL} ${AnsiColor.BRIGHT_WHITE}Signal Fusion + Threat Mesh${AnsiStyle.NORMAL} - ${AnsiColor.BRIGHT_GREEN}:: Mirage Shield ::${AnsiStyle.NORMAL} ${AnsiColor.BRIGHT_WHITE}4-Mode Adaptive Protection${AnsiStyle.NORMAL} + ${AnsiColor.BRIGHT_GREEN}Type 'help' in the shell for full command reference.${AnsiStyle.NORMAL} + ${AnsiColor.BRIGHT_CYAN}Web Console: http://0.0.0.0:${server.port}/${AnsiStyle.NORMAL}