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。