Skip to content

Releases

UFI-Gate v1.2.3

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:58

UFI-Gate v1.2.3

新增门户页面设计器,让管理员可视化美化认证首页、等待审批、认证成功与访问受限页面。本版不包含广告功能。

新增

  • 三栏编辑器、组件添加与拖拽排序、手机上下移动、容器内部编辑、撤销与重做。
  • 文本、图片、双列容器、链接按钮、公告、分隔线、留白;字号、文字颜色、对齐、主题色、背景与卡片圆角设置。
  • 简洁、品牌展示、公告模板,以及多个页面共用的公共页脚。
  • 四种状态示意与多宽度预览;草稿保存、确认发布、恢复上一版和恢复默认。
  • 含图片的 JSON 主题导入导出,导入前服务端校验,修订号避免多窗口覆盖。

兼容与保护

  • 原有认证表单、错误提示、真实状态和管理员恢复入口保持在受保护区域,不能被自定义配置删除或覆盖。
  • 继续使用原有管理员设备、登录会话与来源校验。拒绝任意 HTML/JS/CSS、未知组件、超限图片与无效链接。
  • 主题独立保存在状态目录,草稿不公开。默认未发布主题时保持原门户;损坏主题回退默认。
  • 不改变认证、配额、防火墙、服务更新和热点配置逻辑。无需重新初始化或删除设备状态。
  • CI 与发布流程新增设计器脚本语法和浏览器回归,保留原有签名、安装器校验与双架构 QEMU 流程。

升级

更新服务后刷新管理后台,从左侧「页面设计器」进入。插件安装与后台更新继续采用原有流程;升级后按原有要求核对配置并手动开启认证。主题与图片随服务状态保留,不增加安装器运行时依赖。

使用说明、数据备份与限制见 门户页面设计器。现有配置备份不包含独立主题文件,请单独导出主题。

验证边界

本地验证记录随增量交付包附带。Windows 本地测试、浏览器模拟尺寸和交叉编译不代替 Android 真机、实际验证码平台、Linux race 或 QEMU 验收;GitHub Actions 需要上传后运行。真实设备重点检查认证小窗口、软键盘、图片加载、各认证方式和成功后窗口关闭行为。

本地验证结果

  • Windows Go 1.24.2 完整 go test -mod=vendor ./...、go vet -mod=vendor ./... 通过。
  • 新增服务端主题格式/危险链接/图片/组件数量校验、草稿隔离、发布、修订冲突、回退、默认恢复和损坏回退测试。
  • 设计器浏览器回归通过:拖入组件、文本安全、四种状态、320/390/768/1440 宽度、容器编辑、撤销重做、导入导出、发布及恢复默认。
  • 原有门户认证(账号、验证码、审批、封禁与恢复)、网络修复、设备管理、服务更新、管理员恢复、远程审批回归通过。
  • 原有后台 144 项页面/视口检查及三秒确认交互通过。
  • ARM32 与 ARM64 安装器分别为 4,169,794 和 3,986,634 字节;宿主存储检查及 24 项安装器验证通过。
  • 本地安装包未注入正式签名密钥;正式发布继续由 GitHub Actions 使用既有密钥签名。

UFI-Gate v1.2.2

Choose a tag to compare

@github-actions github-actions released this 18 Oct 00:00

UFI-Gate v1.2.2

优化管理后台的页面内确认弹窗与响应式布局,修复小屏、手机和低高度窗口中侧栏菜单及退出登录按钮难以完整访问的问题。

页面内确认与倒计时

  • 开启/关闭认证、管理员设备权限变更、删除设备、封禁、信任、清除会话、重置流量、清理审批、删除账号、清空消息和安装更新等原有浏览器确认框,统一改为页面内弹窗。
  • 二次确认按钮等待 3 秒后才可点击,倒计时结束不会自动执行。取消、Esc 或点击确认弹窗外部均不提交操作;重新打开会重新计时。
  • 删除已读消息和提交审批也加入二次确认。审批取消确认后保留已填写的处理备注。
  • 普通保存与结果提示不强制等待。表单提交期间禁用保存按钮,避免重复提交。
  • 消息盒子内可以正常打开确认弹窗;关闭确认后返回原界面。确认文本按纯文本展示,支持键盘焦点与取消操作。
  • 保留 v1.2.1 的开启认证要求:新老用户均需本次勾选「已核对接口、加速设置,并准备好 Root 恢复通道」。未满足时先跳转服务设置并聚焦、高亮;有未保存配置时先保存,再进入开启认证的倒计时确认。

3 秒等待是页面交互保护,不替代服务端登录、管理员设备权限、来源及开启认证确认校验。

自适应布局

  • 侧栏采用顶部标识、中间可滚动导航、底部账号与退出按钮三个区域。导航超出屏幕高度时独立滚动,退出登录保持在可视区域内。
  • 使用动态视口高度并保留传统视口回退,加入手机底部安全区间距与窄横屏布局。
  • 手机导航增加关闭按钮、遮罩、Esc 关闭和键盘焦点约束;打开时锁定背景滚动,选择菜单后收起。
  • 调整窄屏顶部操作区、卡片列数、长文本换行、触摸按钮高度和关于页面布局。版本说明中的宽表格在自身区域横向滚动。
  • 长表单弹窗内部滚动,底部操作区保持可触达;弹窗限制在可视高度内。消息按钮与普通提示错开,减少遮挡。
  • 保留浅色/深色主题,补充可见键盘焦点并尊重系统减少动画偏好。

升级说明

本次变更在服务内嵌后台页面中生效。已有用户更新服务后请刷新后台页面,无需删除状态目录、重新初始化管理员或重新配置热点。原有业务数据、认证策略及非管理员访问限制不变。

新安装可使用对应架构的 v1.2.2 安装包。插件菜单本身未改动,本次页面内倒计时适用于独立管理后台;宿主插件的 Root 操作确认仍使用原有流程。服务更新沿用既有停服和认证关闭行为,更新后应检查配置,再手动开启认证。

README 的版本与发布记录由现有发布工作流更新,本次不手动改写。仓库源码版本已设为 1.2.2,本地交付不代表已经上传或发布。

本地验证

  • CI 和发布工作流均接入新增布局回归,并检查 web/admin-ui.js 与 tests/admin-layout-ui-test.cjs 的 JavaScript 语法;布局测试失败将阻止后续发布。本地已核对工作流配置,尚未在 GitHub Actions 上执行此次改动。

  • 完整 Go 测试与 go vet 通过;非管理员访问限制测试增加了新静态资源 /admin-ui.js。

  • 新增布局与交互回归:12 组视口、12 个后台页面,共 144 项页面尺寸检查。覆盖宽度 320–2560,以及 390/450/600 像素等较低窗口高度。

  • 倒计时真实等待测试覆盖提前点击/回车、重新打开计时、取消、Esc、不自动提交、嵌套消息弹窗和焦点恢复;覆盖长文本安全展示、长表单滚动、移动导航退出和深色/减少动画模式。

  • 原有开启认证勾选与热点修复、设备管理、更新管理、门户认证流程回归通过;门户套件包含 30 项后台页面检查,浏览器脚本错误为 0。

  • ARM32(ARMv7 softfloat)、ARM64 构建通过。安装器分别为 4,151,874 与 3,970,082 字节,构建脚本的宿主 5 MiB 存储限制检查通过。本地构建未使用正式签名私钥,正式发布继续使用原工作流。

待真机验收

浏览器模拟视口和演示服务不替代真实设备验收。请在 F50 实际更新后验证:

  1. Android 浏览器/宿主 WebView 的地址栏收起展开、手势导航安全区、竖横屏切换,菜单全部可达且退出登录未被遮挡。
  2. 软键盘打开时输入框、长表单内容和确认/取消按钮可访问;Chrome、系统浏览器及实际使用的 WebView 分别检查。
  3. 开启认证仍必须勾选配置核对项;未勾选正确跳转、高亮,确认弹窗等待满 3 秒后才可提交;关闭认证也有倒计时,但不要求重新勾选。
  4. 消息清理、审批、设备管理和更新操作的确认/取消行为,以及实际慢网络、服务重启和会话过期时的提示。
  5. 桌面浏览器真实 125%、150%、200% 缩放及 iOS Safari 尚未专项验收;本次未运行 Android 真机、Linux race 或 QEMU 测试。

UFI-Gate v1.2.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 23:28

UFI-Gate v1.2.1

修复旧用户可能依靠历史确认值跳过开启认证引导的问题:每次手动开启认证均需本次勾选服务设置确认项,并保留自动跳转、聚焦与高亮引导;README 新增参考文档索引。

开启认证确认修复

  • 新老用户使用相同规则:不再仅依赖已保存的 Verified 历史值。每次手动开启认证,都需要在本次页面操作中勾选「已核对接口、加速设置,并准备好 Root 恢复通道」。刷新页面、重新登录,或关闭认证后再次开启,均需重新确认。
  • 修复取消勾选未保存时仍可开启的问题:页面当前未勾选时,即使设备保存的历史确认值为真,也不能开启认证。引导不会重新渲染并覆盖当前未勾选状态或其他未保存的服务设置。
  • 保留跳转与高亮:未完成确认时点击「开启认证」,会进入「服务设置」、滚动到确认项、聚焦并高亮一次。不会自动勾选、自动保存或自动开启认证。
  • 区分勾选与保存:如果设备尚未保存确认,或页面上的热点接口、网关有未保存修改,需要先保存设置再开启;已保存的历史配置仍不能替代本次勾选。
  • 服务端同步校验:开启请求须同时满足设备已保存确认和本次请求明确确认。旧页面或缺少本次确认标记的请求会被拒绝,并返回确认引导错误;更新后请刷新管理页面。
  • 关闭认证不受影响:未勾选确认项也可以关闭认证、恢复原有网络准入。取消勾选本身不会自动停止正在运行的认证服务。
  • 修复确认值保存一致性:认证开启且使用第三方验证码时,保存服务设置不再忽略用户取消勾选的值。

本次调整针对后台的手动开启操作,不改变既有开机认证恢复策略,不清除管理员、设备、账号、配额、流量或其他业务数据。

参考文档索引

在 README 的「下载与安装」章节新增「参考文档索引」表格,提供链接和内容摘要:

  • 安装与管理指南。
  • 热点接口与网关修复,包括检测、配置修复、失败恢复和 F50 验收说明。
  • 管理员恢复指南。
  • 自定义 Logo。
  • 服务更新与消息通知。
  • 远程审批指南。
  • 历代版本说明。

升级与使用

已有用户可通过独立后台更新服务。此次修复涉及服务端和内嵌管理页面,更新后请刷新页面;无需为本次确认修复单独替换已有的 v1.2.0 插件菜单。首次安装可使用对应架构的 v1.2.1 JS 安装包。

开启认证前,进入「服务设置」,核对接口、网关、加速设置和 Root 恢复通道,勾选确认项;配置有修改时先保存,再点击开启认证。不需要删除 /data/ufi-gate 或重新初始化管理员。

如自行调用管理 API,POST /admin-api/toggle 开启认证时需提交 {"Enabled":true,"Confirmed":true},且设备保存的 Verified 必须为真。关闭仍可提交 {"Enabled":false}。此确认标记不替代原有登录、管理员设备权限及来源检查。

验证范围

  • Windows 本地完整 Go 测试与 go vet 通过。新增测试覆盖历史确认值不能单独开启、本次确认与已保存确认的组合校验、未确认仍可关闭,以及第三方验证码场景下取消勾选的保存行为。
  • 浏览器回归覆盖旧配置已确认为真时仍需本次勾选、取消勾选但未保存、保留未保存接口输入、勾选后开启、关闭后重新引导、未保存确认时阻止开启及刷新后重新确认。
  • 原有热点配置修复交互与门户认证流程回归通过,门户完成 30 项页面检查,浏览器错误为 0。
  • ARM32/ARM64 本地构建与 24 个安装器场景通过,两种 JS 均低于宿主 5 MiB 限制;JavaScript 语法检查通过。本地构建未使用正式签名私钥,正式发布仍由现有工作流签名构建。
  • 本次未进行 F50 或其他 Android 真机验收,未在本地执行 Linux race/QEMU;浏览器演示和本地测试不代表真实设备验收已完成。

UFI-Gate v1.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 23:02

UFI-Gate v1.2.0

新增热点接口与网关检测、安装前校验及插件配置修复入口,帮助处理接口配置错误导致的管理员初始化失败;开启认证时增加服务设置确认项的跳转与高亮引导。

热点接口检测与安装校验

  • 统一检测规则:「检测环境」与安装前校验共用 Go 服务的检测逻辑,展示服务实际运行配置、已保存配置、安装引导配置,以及系统接口状态、IPv4 地址与前缀、候选接口和推荐理由。
  • 核实后推荐:优先推荐持有当前访问的本机 IPv4 管理地址的接口;浏览器地址必须与设备真实地址核对,不根据 wlan、br 等名称直接认定热点接口。无法可靠区分多个候选时,由用户选择。
  • 安装前验证:检查接口名称、接口是否存在及启用、是否适合作为热点,以及所填 IPv4 地址是否属于该接口。明确错误会阻止安装;系统查询失败或信息不完整时显示「无法验证」,保留手动输入能力,需恢复验证后再继续。
  • 明确配置来源:已有状态配置继续保留。安装器会提示,修改输入框或安装引导配置不会自动覆盖已保存的热点接口与网关,普通升级不会静默切换接口。

例如,中兴 F50 的 192.168.0.1/24 位于 br0,但填写了 wlan0 时,将提示:

192.168.0.1 当前配置在 br0,而不是 wlan0。请检查热点接口。

这里的网关是随身 WiFi 的热点侧 IPv4 地址,不是蜂窝网络的上游默认网关。检测不依赖设备安装 jq、Python 或支持 JSON 输出的完整 iproute2。

插件内修复接口与网关

  • 新增「修改热点接口与网关」:位于插件运维区域,无需进入 UFI-Gate 后台,也支持已安装但服务未运行的设备。
  • 显示配置差异:读取实际运行、保存和引导配置,展示检测结果与建议值,支持「重新检测」「取消」「确认修改」。未安装或旧服务缺少专用命令时给出明确提示,不直接编辑未知格式的状态文件。
  • 确认后执行:短暂停止服务、恢复原有网络准入,再修改 UFI-Gate 的接口和网关。保留管理员、管理员设备权限、恢复密钥、初始化凭证、上网账号、设备记录、信任与封禁、授权会话、配额、流量、限速、外观和推送设置。
  • 备份与恢复:与安装、更新共用互斥锁;待服务停止并保存最终状态后备份,通过事务记录协调状态与引导两个文件的写入。写入、启动或健康检查失败时尝试恢复原配置;中断事务可在后续启动时恢复。
  • 结果可查询:新增「查看配置修复结果」,显示任务结果、配置是否恢复、服务健康状态、认证关闭状态,以及备份和诊断位置。页面关闭后维护任务继续运行。

修复成功或完成回退后,认证保持关闭,需要检查后手动开启。若服务无法安全停止,会拒绝替换配置;恢复未完成时保留事务与诊断,不将失败显示为成功。

停止、重启可能造成网络连接中断或需要重新登录。本功能不修改 UFI-TOOLS 自身的 SSID、密码、加密或 OPEN 等 WiFi 参数,也不删除状态目录或清空系统全局防火墙。

初始化诊断与开启认证引导

  • 更明确的设备识别错误:区分接口配置错误、配置有效但找不到当前设备 MAC,以及系统查询失败或权限不足。可确定的配置错误会引导用户进入插件菜单的「修改热点接口与网关」,避免只提示反复重连 WiFi。
  • 保留身份验证边界:仍只使用配置接口上的内核 ARP/邻居绑定,不接受浏览器自报 MAC,不跨接口随意放行,不因初始化失败开放非管理员访问完整后台。
  • 启动诊断:错误接口配置会记录明确告警,不因新增诊断直接退出服务;原有规则清理和恢复入口继续保留。
  • 跳转并高亮确认项:未勾选「已核对接口、加速设置,并准备好 Root 恢复通道」时点击开启认证,会进入「服务设置」、聚焦并高亮该项一次。用户须自行核对、勾选并保存,系统不会自动勾选或开启认证。

安装与维护调整

  • 移除安装器通过 pkill -f ufi-gate 模糊匹配清理进程的步骤,避免误杀更新或配置维护任务。
  • supervisor 按 PID 文件和具体进程身份检查服务。配置维护期间等待 worker 正常退出;超时拒绝改配置,不强制结束尚未完成最终保存的 worker。
  • 服务先取得锁再读取状态,避免维护期间载入旧配置。事务提交前暂时拒绝页面业务写入、远程审批提交和管理员重置,防止新操作随后被回退覆盖。

升级与使用

本次包含 Go 服务、启动脚本、管理页面和插件菜单修改。需要更新服务,并替换 v1.2.0 对应架构的 JS 插件;只在独立后台更新服务,不会更新 UFI-TOOLS 保存的插件菜单。

  1. 根据设备架构下载 UFI-Gate-1.2.0-arm32.js 或 UFI-Gate-1.2.0-arm64.js,不要同时导入两种架构。
  2. 替换旧插件条目,保存并刷新,先运行「检测环境」,核对接口和热点侧 IPv4 地址,再安装/更新服务。
  3. 如果已有保存配置错误,普通升级会保留它。更新服务后使用「修改热点接口与网关」明确确认修复,不要依靠修改安装输入框纠正旧状态。
  4. 查看修复结果,重新打开后台,检查配置后手动开启认证。

不要删除 /data/ufi-gate。设备上的事务备份包含敏感配置,请留在设备上,不要上传到 GitHub 或放入发布包。

详细操作、失败恢复与真机验收清单见 热点接口与网关修复指南。

验证范围

  • Windows 本地完整 Go 测试与 go vet 通过。新增测试覆盖 F50 接口错配复现、正确配置、多候选、接口不存在、地址不匹配、命令失败、特殊字符、配置冲突、信息脱敏及跨接口身份拒绝。
  • 事务测试覆盖运行与停止状态修复、停止后快照、业务数据保留、写入顺序、单文件写入失败、启动与健康检查失败、停止失败、持续恢复失败及中断重试。
  • 新增浏览器测试通过,覆盖配置差异展示、重检、取消无写入、输入校验、确认提交、旧服务提示,以及开启认证时的跳转、聚焦和高亮;检查 390、834、1440 三种宽度。
  • 原有管理员管理、密码恢复、更新管理、远程审批和门户浏览器回归通过;门户完成 30 项页面检查,浏览器错误为 0。
  • ARM32/ARM64 服务及测试程序交叉编译通过,24 个安装器场景通过,实际内嵌插件负载的浏览器校验通过;两种 JS 均低于宿主 5 MiB 限制。JavaScript 与 Shell 语法检查通过。
  • 本地构建未使用正式签名私钥,仅用于验证;正式发布仍由 GitHub Actions 使用仓库签名 Secret 构建。新增浏览器测试已加入 CI 和发布工作流,但不将工作流配置视为已在线执行。
  • 尚未完成 F50 或其他 Android 真机验收,也未在本地执行 Linux race/QEMU。 Unix 锁和权限检查已纳入测试代码,但交叉编译不代表已运行。真实 Root/SELinux、supervisor 停止、规则清理、最终流量保存、开机及断电恢复、厂商加速和实际网络准入仍需设备验证。

UFI-Gate v1.1.9

Choose a tag to compare

@github-actions github-actions released this 17 Oct 17:44

UFI-Gate v1.1.9

新增用户自配的远程审批入口与测试消息,支持通过自备 HTTPS 穿透服务在外网审批;修复插件菜单输入框文字不清晰,并增加使用教程按钮。

远程审批

  • 管理后台「消息推送」新增远程审批设置:启用开关、HTTPS 公网地址及本机端口,默认关闭。
  • 独立服务仅监听 127.0.0.1,默认端口 8091,供同机穿透客户端转发。只开放审批页面、专用测试及样式资源;8081 后台继续限制管理员设备访问。
  • 设置保存后立即生效,端口冲突时保留原设置;停止远程审批关闭监听。启动时端口异常不会阻止主服务运行,可在日志中查看并修改设置。
  • 复用正式审批签名、有效期和单次处理规则,GET 不执行审批,POST 确认后才处理;补充限流、跨站来源检查及禁止缓存、禁止传递 Referer 的响应策略。
  • 新增「发送远程审批测试」:管理员用手机流量打开消息并确认,验证公网连接。5 分钟有效,不会放行任何设备;重新生成或重启后旧测试链接失效。
  • 项目不提供、也不内置公共穿透服务。用户自行选择免费或付费方案,承担相应服务器、域名和服务费用。填写 URL 不会自动建立隧道。

插件菜单

  • 为热点接口、IPv4 网关输入框明确设置深色文字、WebKit 文字填充、光标和浅色背景,避免宿主深色主题将文字覆盖成白色。
  • 增加「使用教程」按钮,新窗口打开仓库的 docs/INSTALL.md;同时显示可复制的教程地址。

升级

更新服务后可使用远程审批。插件菜单的颜色修复与教程按钮需要另外替换 v1.1.9 对应架构的 JS 插件;后台更新不会修改 UFI-TOOLS 保存的插件代码。

原有局域网审批配置保持兼容。不要删除 /data/ufi-gate;服务升级完成后检查配置并手动开启认证。新启用远程审批时,请将隧道指向独立审批端口,不要将 8081 或 Root Shell 暴露到公网。

配置及排查见 远程审批指南。

验证范围

  • Windows 本地完整 Go 测试与 go vet 通过,新增测试覆盖入口隔离、签名篡改/过期/重放拒绝、跨站来源限制、限流、测试消息与确认流程、配置持久化、保存失败回滚、端口冲突/切换/停用和重启恢复。
  • 新增远程审批浏览器测试通过,覆盖设置校验、保存与刷新、停用、390/834/1440 三种宽度、宿主白色文字覆盖场景及教程链接;管理员管理、密码恢复、更新管理及原有门户浏览器回归通过,原有门户完成 30 项页面宽度检查,浏览器错误为 0。
  • Linux ARM32 / ARM64 本地构建通过,安装器 24 个用例通过,两种 JS 均低于 5 MiB 限制。本地构建仅用于验证,未使用正式签名密钥;正式发布仍由现有 GitHub Actions 使用仓库签名 Secret 构建。
  • 新增浏览器测试已加入 CI 与发布工作流。本地未执行 Linux race / QEMU,不将工作流配置视为线上执行结果。
  • 真实随身 WiFi、真实飞书推送及第三方穿透连通性仍需设备端验收。

UFI-Gate v1.1.8

Choose a tag to compare

@github-actions github-actions released this 17 Oct 16:56

UFI-Gate v1.1.8

补全管理后台登录页的「忘记密码」入口,管理员可直接进入已有的恢复密钥重置流程,无需先手动打开认证门户。

调整

  • 后台登录页新增入口:已初始化的管理后台登录页,在登录按钮下方显示「忘记密码?使用恢复密钥重置」。
  • 直接进入密码恢复:点击后跳转到同一设备的 8090 门户管理员页面,并自动勾选「忘记密码,使用恢复密钥」,直接显示恢复密钥、新密码及确认密码输入框。
  • 沿用现有恢复流程:验证有效密钥后,仍须下载新的恢复密钥 TXT 并确认保存,才能完成密码重置;完成后旧密钥失效,旧后台会话注销。
  • 初始化入口保持原有流程:尚未创建管理员时,继续使用临时初始化凭证注册,不显示忘记密码入口。

兼容与升级

本次修改前端入口,不改变管理员设备访问限制、密钥校验、设备数据、配额及防火墙策略。非管理员设备仍可从认证门户的管理员登录入口进行验证或恢复。

网页资源嵌入 Go 服务,需要更新到 v1.1.8 服务后生效;仅刷新旧服务页面不会获得新入口。已有管理员账号及恢复密钥继续有效,无需重新初始化。

保留 /data/ufi-gate 状态目录。服务更新完成后,按原有流程检查设置并手动开启认证。

验证

  • JavaScript 语法检查。
  • 浏览器回归覆盖初始化页不显示忘记密码、后台登录页跳转并自动选择恢复方式、新密钥下载确认、密码重置、旧密码与旧密钥拒绝,以及三种屏幕宽度。
  • 本次未进行真实随身 WiFi 设备验收。

详细操作见 管理员恢复指南。

UFI-Gate v1.1.7

Choose a tag to compare

@github-actions github-actions released this 16 Oct 18:48

UFI-Gate v1.1.7

新增门户管理员登录与离线恢复密钥。当管理员设备的 MAC 地址变化、被识别为新设备时,可通过认证门户恢复管理权限,避免所有管理员设备都无法访问后台。首次注册、重新初始化和忘记密码流程同步加入恢复密钥 TXT 下载确认。

新增

  • 门户管理员登录:认证门户新增「管理员登录」入口。使用 UFI-Gate 管理员账号密码验证成功后,当前连接设备自动加入管理员设备列表,并进入管理后台。无需先访问 UFI-TOOLS,也不依赖旧 MAC 仍可用。
  • 保留后台访问限制:未通过管理员验证的设备仍受原有后台访问限制。服务根据当前连接和热点邻居表识别设备 MAC,不接受浏览器自行指定 MAC。认证开启时,同步更新网关管理端口的防火墙放行规则,使当前设备恢复访问 UFI-Gate 和 UFI-TOOLS 的能力;UFI-TOOLS 自身的登录验证仍然有效。
  • 忘记密码恢复:在门户管理员登录页面勾选「忘记密码,使用恢复密钥」,输入有效密钥、新密码及确认密码,即可进入密码重置流程,不需要原管理员密码。
  • 一次性恢复密钥:恢复密钥由密码学随机源生成,包含 256 位随机数,以 UFIG- 加分组字符的形式保存在 TXT 中。设备仅持久化校验摘要,不在状态文件中保存密钥明文。
  • 强制下载确认:首次注册、重新初始化、恢复密码时,均须点击「下载恢复密钥 TXT」,确认文件已保存后才能完成流程。服务端同时检查下载步骤,不能仅跳过页面直接提交完成请求。

密码恢复与密钥轮换

连接热点后,打开 http://热点网关:8090/,点击「管理员登录」即可操作。

  • 记得管理员密码:使用原账号密码登录,自动登记当前设备的新 MAC。已有恢复密钥继续有效,不必因 MAC 变化而更换。
  • 忘记管理员密码:使用恢复密钥验证后,下载并确认保存新密钥。完成时,新密码与新密钥生效,旧密钥立即失效,原有后台登录会话全部注销。
  • 中途退出:在下载确认完成前刷新页面、退出或服务重启,不会完成注册或密码重置。密码恢复时,原密码和原恢复密钥仍然有效,可重新发起流程。

下载确认流程有效期为 10 分钟;初始化还受原临时凭证 20 分钟有效期限制。下载票据绑定当前设备 MAC、IP 和原管理员凭据,不能由另一设备使用。门户管理员验证加入全局限流,不能通过更换 MAC 或 IP 清除失败限制。

恢复密钥等同管理员恢复权限。任何连接到该热点且持有有效密钥的设备都可以重置密码,请离线妥善保存,勿分享或上传到 GitHub。浏览器无法证明文件已永久落盘,因此下载后仍需用户确认已保存;系统认证小窗口不支持下载时,请改用正常浏览器打开门户。

初始化与插件重置

首次安装继续使用插件提供的临时初始化凭证 setup.token,有效期为 20 分钟。输入管理员账号密码后,新增恢复密钥下载步骤;只有完成保存确认后,才正式创建管理员并使初始化凭证失效。

插件菜单「重置初始化凭证」在确认后:

  1. 清除管理员账号、密码、管理员设备权限、后台会话、旧恢复密钥及未完成的恢复流程。
  2. 保留设备记录、上网账号、流量、配额、已有联网授权和其他系统配置,不停止服务。
  3. 生成新的临时初始化凭证并打开后台,重新执行管理员注册和恢复密钥下载流程。

如果浏览器拦截新窗口,可使用插件显示的后台地址和初始化凭证手动进入。

兼容与升级

  • 已安装用户无需重置账号。升级后,已有管理员首次进入新版后台时,若尚未配置恢复密钥,会引导生成、下载并确认保存。MAC 已变化的设备也可从门户使用原管理员账号进入此流程。
  • 管理员设备权限与联网授权继续独立。门户管理员登录不会自动解除封禁、清除配额或重置流量;旧管理员设备保留,可在后台单独移除。
  • 本次包含 Go 服务、门户、管理后台及插件安装器修改。仅上传源码或刷新旧页面不会启用新功能,需要构建并安装新版服务。
  • 已接入后台更新机制的用户可在 v1.1.7 正式发布后升级服务;要获得插件菜单重置后自动打开后台的行为,还需换用 v1.1.7 对应架构的 JS 插件。
  • 保留 /data/ufi-gate 状态目录。安装或更新服务会短暂停服并关闭认证,完成后核对配置并手动开启认证;日常使用「重置初始化凭证」无需停服。
  • 沿用现有 HTTP 部署,本次未新增 HTTPS,不能保证开放 WiFi 上管理员凭据的传输保密性。

验证范围

  • 本地 Go 测试与 go vet 通过。新增测试覆盖下载门槛、设备绑定、密钥重放拒绝、持久化、过期、旧会话失效、限流、跨站请求拒绝、配置保护、旧账号迁移、失败回滚及设备数据保留。
  • 管理员恢复、设备管理、更新管理和原有门户四组浏览器测试通过,覆盖 390、834、1440 三种宽度;原有门户回归包含账号认证、验证码、审批、封禁、解除限制及关闭认证。
  • 已完成包含本次功能的 ARM32 / ARM64 本地构建,安装器 24 个用例通过,两种插件均低于 5 MiB 限制。
  • CI 已加入恢复流程浏览器测试;本地 Windows 未执行 Linux race / QEMU,不能将现有工作流配置视为本次线上执行结果。
  • 尚未完成实际随身 WiFi 验收。需在目标设备验证 MAC 变化后的两个后台访问限制、门户登录后的权限恢复、其他访客继续受限、手机 TXT 下载,以及重置后原有数据和联网状态保留。

详细操作见 管理员恢复指南。

UFI-Gate v1.1.6

Choose a tag to compare

@github-actions github-actions released this 13 Oct 15:19

UFI-Gate v1.1.6

消息盒子新增清理操作:除原有的「全部已读」外,现在可以一键删除已读消息,或清空全部消息。

新增

  • 删除已读:消息盒子工具栏新增「删除已读」按钮,一键移除所有已看过的消息,未读消息保留。
  • 清空全部:消息盒子工具栏新增「清空全部」按钮,二次确认后删除所有消息(含未读),不可恢复。
  • 后端新增 POST /admin-api/notifications/delete,支持 {Read:true} 删除已读与 {All:true} 清空全部。

兼容性

  • 仅站内消息管理,不影响推送、审批、设备准入与防火墙逻辑。
  • 不涉及配置变更,升级后无需重新设置。

UFI-Gate v1.1.5

Choose a tag to compare

@github-actions github-actions released this 13 Oct 14:40

UFI-Gate v1.1.5

管理后台左侧导航新增「关于」页面,集中展示当前版本、系统架构、运行时间、认证状态,并提供 GitHub 仓库、发布历史、问题反馈和 Telegram 联系方式入口。

新增

  • 关于页面:左侧导航最底部新增「关于」菜单项(圆形 info 图标)。
  • 系统信息卡片:实时显示当前版本号、设备架构(arm32 / arm64)、运行时长、认证服务状态。
  • 项目资源链接:GitHub 仓库、发布历史、问题反馈、Telegram 联系作者(@nanbeiluduo)。
  • dashboard API 新增 arch 字段,供前端展示运行架构。

兼容性

  • 纯前端展示页面,不影响设备准入、防火墙、更新等任何核心逻辑。
  • 不涉及配置变更,升级后无需重新设置。

UFI-Gate v1.1.4

Choose a tag to compare

@github-actions github-actions released this 13 Oct 14:04

UFI-Gate v1.1.4

修复安装器在残留更新进程卡住时无法安装的问题。点击「安装/修复」后,安装器会先强制结束所有残留的 ufi-gate 进程、清理中断的临时目录,再执行安装,不再卡在"另一个安装或更新任务正在运行"。

问题

v1.1.3 及之前,如果一次更新因网络超时等原因中断,updater 进程可能残留并持有文件锁。之后无论是在后台点"更新"还是重新用 JS 安装器安装,都会一直提示"另一个安装或更新任务正在运行",只能手动 ADB 杀进程或重启设备才能恢复。

改动

  • 安装器安装前自动清理:在 plugin.template.js 的安装流程中,用户确认安装后、解压新二进制前,自动执行 pkill -f ufi-gate 结束所有残留进程,等待 2 秒确保文件锁释放,并清理 /data/ufi-gate/update-stage-* 临时目录。
  • 锁机制本身不变:仍为 flock(LOCK_EX|LOCK_NB),进程退出后内核自动释放锁,无需手动删 update.lock 文件。
  • 仅影响 JS 安装器的前置步骤,Go 二进制、签名校验、镜像回退等逻辑均未改动。

兼容性

  • 安装本来就会短暂停服,先杀进程再装不影响网络恢复流程。
  • 已安装 v1.1.0~v1.1.3 的设备可直接用本版 JS 安装器覆盖修复。