Skip to content

Releases: J606y/moss

v0.5.0

23 Jun 00:42

Choose a tag to compare

本次为一轮深度代码扫描后的集中修复:33 项已确认问题(安全、稳定性、体验、死代码清理),均经构建、单元测试与真实运行验证。

安全

  • 修复 X-Forwarded-For 可伪造导致来源 IP 伪造(高危):此前 --trust-proxy 下取 XFF 最左段为真实 IP,攻击者可伪造任意来源绕过登录锁定与应用层限流。现改为「可信代理名单从右往左跳过取第一个非可信地址」,新增 --trusted-proxies(逗号分隔的 CIDR / 裸 IP)。⚠️ 多层反代部署需用 --trusted-proxies 配置边缘节点公网 IPdeploy/moss.sh 反代模式安装会询问);不配置则安全降级为取 XFF 最右段(不可伪造)。
  • 登录失败计数 loginAttempts 增加周期回收,防止只失败从不成功的 IP 条目无界堆积致内存耗尽。
  • token / 初始管理密码随机串改用无偏拒绝采样,消除取模偏置。
  • 登录校验改为恒定成本(无论用户名是否正确都执行一次 bcrypt 比较)+ 常量时间用户名比较,消除用户名枚举的时序侧信道。
  • 静态文件路径清理改为「先加根再 Clean」,与另一处写法对齐,加固目录穿越防御纵深。

稳定性

  • agent 重连后重置网速差值基准,消除断线 / 部署重连后首个上报点的虚高网速毛刺。
  • 服务器详情页「实时」图回填历史点后立即触发重渲染,不再需要等下一次上报才显示。
  • 前端 fetchServers 增加「后到丢弃」守卫、清理重复的重连定时器,消除并发拉取导致的数值短暂回跳。
  • 历史采样的 TCP / 进程数改用浮点均值后取整,消除系统性向下取整偏差。
  • 负载告警迟滞带改为比例式,修复低阈值(≤5)下永远收不到「恢复」通知。
  • 离线告警轮询改用 NewTicker + Stop
  • localStorage 读写增加异常兜底,存储被禁用时不再白屏;主题支持跨标签页同步。

体验

  • 国旗组件对空国家码判空、对国家码统一小写,修复未识别 / 大写国家码时渲染破损国旗框。
  • 后台数字输入失焦即钳制到合法区间;保存后回读后端钳制结果,界面不再与库中真值长期分歧。
  • 修改密码补充前端「至少 6 位」校验,与文案及后端规则一致。
  • 主页分组排除空值与「全部」字面碰撞,消除重复 React key 与筛选错乱。
  • fmtPercent 增加非有限值兜底(NaN / Infinity 不再显示为 NaN%)。

清理

  • 移除死代码:UDP 连接数全链路采集(省去每个上报周期一次系统调用)、未使用的类型字段(lastSeen / createdAt / LivePoint.load1 / udp)、未使用的组件 props(TickerclassName/durationChartCardheight)、Login 的失效错误分支。

升级提醒

  • 网速重连、协议注释等修复在 agent 端,需更新各监控机上的 agent 二进制方可生效(仅更新服务端无效)。
  • 新增 server/ratelimit_test.go,覆盖 realIP 的来源 IP 伪造防护(9 个用例)。

Full Changelog: v0.4.5...v0.5.0

v0.4.5

22 Jun 18:21

Choose a tag to compare

修复

  • 服务端更新/重启后 agent 重新上线慢(约 30s~1m):agent 的重连退避(backoff)此前在进程生命周期内只增不减——每次掉线或部署期间的拨号失败都 +3s 封顶 60s,但连接成功后从不归零。于是 agent 跑得越久、经历的部署越多,退避就越接近 60s 并钉死,导致每次更新服务端后都要干等一个很大的退避才重连。现改为:连接维持过一段时间(≥30s)的正常掉线后退避归零,下次 3s→6s→9s 快速重连,通常服务端一起来 3~9s 内即恢复在线;仅持续连不上时才保留指数退避到 60s,避免雪崩。需更新监控机上的 agent 二进制方可生效(退避逻辑在 agent 端,仅重启服务端无效)。

Full Changelog: v0.4.4...v0.4.5

v0.4.4

22 Jun 18:09

Choose a tag to compare

修复

  • 主页列表视图的网速刷新仍是旧式整段替换:卡片视图的网速早已用 Ticker 组件实现逐位等宽滚动(低位数字一位位跳、高位不动),但列表视图的网速列遗漏了这一处理,每次上报都把整段文本一次性替换。现列表视图同样改用 Ticker,与卡片视图观感一致。

Full Changelog: v0.4.3...v0.4.4

v0.4.3

22 Jun 12:58

Choose a tag to compare

修复

  • 服务器详情页刷新时会闪现约 1 秒「未找到该服务器」:详情页为懒加载路由,刷新后组件先于服务器列表(/api/servers)就绪而渲染,此时列表为空,!server 分支无法区分「列表尚未加载完」与「确实没有这台」,于是误显示「未找到」,待列表返回后才恢复。现 store 记录列表是否已首次加载完成(serversReady()):未加载完时显示「加载中…」,仅在确实加载完成后仍找不到才显示「未找到该服务器」。

Full Changelog: v0.4.2...v0.4.3

v0.4.2

22 Jun 12:37

Choose a tag to compare

修复

  • 服务器详情页「实时」图表每次刷新出现约 30 秒空窗:实时曲线此前把「进入页面时回填的历史点」与「WebSocket 实时点」画在同一条时间轴上,但两者时间戳来源不同——回填点用服务端时钟(与 /recent、历史接口一致),实时点却用浏览器时钟Date.now(),因 WS 推送未带时间)。当服务端系统时钟与浏览器存在偏差(如未同步 NTP 的服务器慢约 30 秒)时,两段曲线衔接处会出现与时差等长的平直空窗,刷新后空窗位置顺移、旧空窗被回填。现服务端在实时推送中附带落点时刻,前端统一采用,使实时 / 回填 / 历史三类数据点同源于服务端时钟,彻底消除空窗(与服务端、浏览器时差无关)。无需重新部署 agent(时间由服务端在收到上报时打点)。

Full Changelog: v0.4.1...v0.4.2

v0.4.1

22 Jun 05:16

Choose a tag to compare

修复

  • 管理后台桌面端布局:标题栏与左侧功能栏改为固定外壳,仅右侧内容区内部纵向滚动——此前滚动右侧会带动标题与左栏一起移动(v0.4 的粘性方案存在初始位移、且标题会随滚动消失)。移动端仍保持整页滚动。

Full Changelog: v0.4...v0.4.1

v0.4

22 Jun 04:55

Choose a tag to compare

新增

  • 应用层限流(按真实访客 IP):对 /api 默认 600 次/IP/分钟、登录等敏感端点 10 次/IP/分钟,超限返回 429(带 Retry-After);阈值由环境变量 MOSS_RATELIMIT_PER_MIN / MOSS_RATELIMIT_AUTH_PER_MIN 调整,设 0 关闭对应层。开启 --trust-proxy 时取最左 X-Forwarded-For 作为真实访客 IP(适配多层反代);实时上报走 WebSocket 长连接,不计入限流。
  • 一键部署脚本新增**「反代模式」**:安装时可选在 Nginx 等反向代理后面运行,自动以 --trust-proxy 启动并仅绑回环 127.0.0.1,让限流按真实访客 IP 生效;选择持久化,moss 更新时自动沿用。

优化

  • 首页实时数据改为按服务器粒度订阅:某台服务器上报只重渲染它自己的卡片 / 表格行,不再整页重渲染;渲染量从 O(N²) 降到 O(N),多机时显著降低浏览器 CPU 占用(网速数字逐位跳动的实时观感保持不变)。
  • 负载 / 延迟监控按时间分桶降采样:选 1 小时以上时段时后端在 SQL 内聚合,每条曲线点数压到约 600,无论范围多大都秒开且不卡顿(短时段保持原始精度)。
  • 前端按路由代码分割:详情页(含图表库 recharts)与后台改为按需加载,首屏 JS 体积(gzip)从约 205 KB 降到约 82 KB。
  • 后台移动端布局优化:服务器 / 探测任务表格在窄屏改为卡片纵向展示,信息不再因横向滚动被截断;左侧功能栏滚动时固定不动;修正「添加」按钮换行与整体间距;输入框在手机端改用 16px 字体,点击不再触发 iOS Safari 自动放大缩放。

Full Changelog: v0.3...v0.4

v0.3

21 Jun 19:16

Choose a tag to compare

新增

  • 后台服务器列表的 IP 地址(IPv4 / IPv6)支持一键复制。
  • 探测任务「应用于」改为多选,可同时勾选任意多台服务器(原仅支持「全部」或单台)。
  • 删除探测任务时新增二次确认弹窗,与删除服务器保持一致。

优化

  • 后台「服务器 / 探测任务」的增、删、改改为乐观更新:前端即时响应,网络请求转入后台进行,失败自动回滚并提示,消除约 1s 操作延迟(后端校验逻辑不变)。
  • 统一液态玻璃风格:原生下拉框、数字步进器、勾选框替换为自定义玻璃控件;输入框、弹窗、下拉面板等补齐液态玻璃反光质感。

Full Changelog: v0.2.4...v0.3

v0.2.4

21 Jun 09:02

Choose a tag to compare

修复

  • 后台「通知告警」「站点设置」页的卡片不再贴左:限宽容器加 mx-auto,在右侧内容区内水平居中(「服务器」「探测任务」为整宽表格,不受影响)。

Full Changelog: v0.2.3...v0.2.4

v0.2.3

20 Jun 19:07

Choose a tag to compare

优化

  • 主页卡片与详情页的网速数字改为数值平滑滚动:每次刷新用 requestAnimationFrame 把显示值从旧值滚到新值,单台服务器的网速也能像顶部合计那样「低位逐位滚动」,不再整段跳变。

修复

  • 还原 v0.2.2 对顶部总览「实时网速」的改动:顶部本就是合计的高频小步更新,原生等宽文本即为想要的观感,无需额外特效。

Full Changelog: v0.2.2...v0.2.3