Aurora 配置项

基本信息

属性 值
配置类 serverutils.aurora.AuroraConfig
源码 src/main/java/serverutils/aurora/AuroraConfig.java:7-62
字段总数 10
配置文件名 filename = "aurora"(:7)
目录 configSubDirectory = "../serverutilities/"(:7)
自动 GUI @Config.ExcludeFromAutoGui(:8)—— 不出现在 /client_config 式自动生成界面中
实现 基于 Netty 的 HTTP 服务器(aurora/AuroraServer.java)

Aurora 是模组内置的一个只读 Web 状态页服务器,把 modlist、在线玩家、世界信息、指令列表、权限列表以网页形式暴露。默认关闭。

General(2 项)

字段 行 类型 默认 说明
general.enable 21 boolean false 启用 Aurora 服务器
general.port 26 int 48574 监听端口,@Config.RangeInt(min = 1024, max = 65535)

general.enable 的配置注释写的是「Enable the localhost server」(:19),但实际绑定代码是:

channel = bootstrap.bind(port).sync();   // aurora/AuroraServer.java:97

ServerBootstrap.bind(int port) 没有传入任何 InetAddress,源码中也不存在 InetAddress 引用(grep -n "InetAddress" AuroraServer.java 无匹配)。因此「只监听 localhost」这一点在本仓源码中没有任何强制手段。本条目只陈述源码事实,不推断运行时绑定结果。

[!WARNING] 这是「注释与实现不一致」的又一处实例(另一处见 服务端配置 的 disabled_right_click_items)。若打算对外开服,务必自行确认绑定范围。

Pages(8 项)

serverutils.aurora.PageType(src/main/java/serverutils/aurora/PageType.java:3-7)是 3 值枚举:

值 含义
ENABLED 页面开放访问
REQUIRES_AUTH 页面需要认证
DISABLED 页面关闭
字段 行 默认 页面内容
pages.modlist_page 33 ENABLED 模组列表
pages.world_info_json 37 ENABLED 世界信息(JSON)
pages.player_list_table 41 ENABLED 在线玩家表格
pages.player_list_json 45 ENABLED 在线玩家(JSON)
pages.player_rank_page 49 REQUIRES_AUTH 玩家 Rank 页面
pages.command_list_page 53 ENABLED 指令列表
pages.permission_list_page 57 ENABLED 权限节点列表
pages.modlist_excluded_mods 61 String[],{} 从 modlist 中排除的模组 ID

[!NOTE] PageType 只有 3 个值,但 7 个页面开关的 @Config.Comment 注释两两错位:modlist_page 与 world_info_json 都写「Enable the modlist page」(:31、:35),player_list_table 写「Enable the world info page」(:39),player_list_json 写「Enable the playerlist table page」(:43),player_rank_page 写「Enable the playerlist json page」(:47),command_list_page 写「Enable the player rank page」(:51),permission_list_page 写「Enable the command list page」(:55)。字段名本身是准确的,只有注释串位,按字段名理解。

唯一默认需要认证的是 player_rank_page(:48)—— 它会暴露玩家的 rank 归属,是唯一默认不公开的页面。

生命周期

serverutils.aurora.Aurora(src/main/java/serverutils/aurora/Aurora.java:5-26)是入口,两个静态方法:

方法 行为
Aurora.start(MinecraftServer) general.enable 为真且 server == null 时 new AuroraServer(s, general.port) 并 start()
Aurora.stop() general.enable 为真且 server != null 时 shutdown() 并置空

AuroraServer 构造时创建两个 Netty 线程组 masterGroup / slaveGroup(AuroraServer.java:38-45),并在 start() 里注册 JVM 关闭钩子(:55)。

HTTP 管线

AuroraServer.start()(:55-101)搭建的 Netty 子管线:

阶段 处理器 位置
编码 HttpServerCodec :71
聚合 HttpObjectAggregator(512 * 1024) :72
请求处理 ChannelInboundHandlerAdapter :73-95

连接选项:SO_BACKLOG = 128(:96),SO_KEEPALIVE = true(:97 上方)。channelRead 中非 FullHttpRequest 的消息直接透传给父类(:76-80),exceptionCaught 回 500 并把 cause.getMessage() 原样写进响应体(:86-94)。

handleRequest(:109-...)把 URI 首尾的 / 全部剥掉后再路由(:113-119)。

页面实现类

页面 类 源码
模组列表 aurora/mc/ModListPage.java —
模组详情 aurora/mc/ModPage.java —
玩家表格 aurora/mc/PlayerListTable.java —
玩家 JSON aurora/mc/PlayerListJson.java —
世界信息 aurora/mc/WorldInfoJson.java —
Rank 页面 aurora/mc/RankPage.java —
指令列表 aurora/mc/CommandListPage.java —
权限列表 aurora/mc/PermissionListPage.java —
首页 aurora/page/HomePage.java —
404 aurora/page/WebPageNotFound.java —
401 aurora/page/WebPageUnauthorized.java —

PageType.REQUIRES_AUTH 的页面在鉴权失败时落到 WebPageUnauthorized。

静默失败点

AuroraServer.start() 与 shutdown() 的 catch (InterruptedException ignored) {}(:98、:107)都是空 catch。若 bind(port).sync() 或 closeFuture().sync() 抛出 InterruptedException,端口绑定失败会被完全静默吞掉 —— 启用后没有任何日志提示,且 channel 不会被赋值,后续 shutdown() 会在 channel.channel() 上 NPE。

相关条目