From 4c08566022ec657bad353d5b36554591603ead81 Mon Sep 17 00:00:00 2001 From: Peijun Zhao Date: Sun, 10 May 2026 16:03:48 +0800 Subject: [PATCH] feat: ASCII banner + graceful shutdown hook for ServerGuardApplication --- .../com/aluer/ServerGuardApplication.java | 21 ++++++++++++++++++- src/main/resources/banner.txt | 18 ++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/banner.txt diff --git a/src/main/java/com/aluer/ServerGuardApplication.java b/src/main/java/com/aluer/ServerGuardApplication.java index a8167cd..a80b472 100644 --- a/src/main/java/com/aluer/ServerGuardApplication.java +++ b/src/main/java/com/aluer/ServerGuardApplication.java @@ -1,13 +1,32 @@ package com.aluer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication @EnableAsync public class ServerGuardApplication { + private static final Logger logger = LoggerFactory.getLogger(ServerGuardApplication.class); + private static volatile ConfigurableApplicationContext context; + public static void main(String[] args) { - SpringApplication.run(ServerGuardApplication.class, args); + context = SpringApplication.run(ServerGuardApplication.class, args); + + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + logger.info("JVM shutdown hook triggered — closing application context"); + if (context != null) { + context.close(); + } + }, "serverguard-shutdown-hook")); + + logger.info("Aluer ServerGuard is ready"); + } + + public static ConfigurableApplicationContext getContext() { + return context; } } diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt new file mode 100644 index 0000000..7a5cc5b --- /dev/null +++ b/src/main/resources/banner.txt @@ -0,0 +1,18 @@ + +${AnsiColor.BRIGHT_CYAN} ╔════════════════════════════════════════════════════════════╗ + ║ ║ + ║ █████╗ ██╗ ██╗ ██╗███████╗██████╗ ║ + ║ ██╔══██╗██║ ██║ ██║██╔════╝██╔══██╗ ║ + ║ ███████║██║ ██║ ██║█████╗ ██████╔╝ ║ + ║ ██╔══██║██║ ██║ ██║██╔══╝ ██╔══██╗ ║ + ║ ██║ ██║███████╗╚██████╔╝███████╗██║ ██║ ║ + ║ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ║ + ║ ║ + ║ ServerGuard v1.0.0 ║ + ║ AI-Powered Minecraft Server Protection ║ + ║ ║ + ╚════════════════════════════════════════════════════════════╝${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}