Repository navigation
Releases
UFI-Gate v1.2.3
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
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 实际更新后验证:
- Android 浏览器/宿主 WebView 的地址栏收起展开、手势导航安全区、竖横屏切换,菜单全部可达且退出登录未被遮挡。
- 软键盘打开时输入框、长表单内容和确认/取消按钮可访问;Chrome、系统浏览器及实际使用的 WebView 分别检查。
- 开启认证仍必须勾选配置核对项;未勾选正确跳转、高亮,确认弹窗等待满 3 秒后才可提交;关闭认证也有倒计时,但不要求重新勾选。
- 消息清理、审批、设备管理和更新操作的确认/取消行为,以及实际慢网络、服务重启和会话过期时的提示。
- 桌面浏览器真实 125%、150%、200% 缩放及 iOS Safari 尚未专项验收;本次未运行 Android 真机、Linux race 或 QEMU 测试。
UFI-Gate v1.2.1
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
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 保存的插件菜单。
- 根据设备架构下载
UFI-Gate-1.2.0-arm32.js或UFI-Gate-1.2.0-arm64.js,不要同时导入两种架构。 - 替换旧插件条目,保存并刷新,先运行「检测环境」,核对接口和热点侧 IPv4 地址,再安装/更新服务。
- 如果已有保存配置错误,普通升级会保留它。更新服务后使用「修改热点接口与网关」明确确认修复,不要依靠修改安装输入框纠正旧状态。
- 查看修复结果,重新打开后台,检查配置后手动开启认证。
不要删除 /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
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
UFI-Gate v1.1.8
补全管理后台登录页的「忘记密码」入口,管理员可直接进入已有的恢复密钥重置流程,无需先手动打开认证门户。
调整
- 后台登录页新增入口:已初始化的管理后台登录页,在登录按钮下方显示「忘记密码?使用恢复密钥重置」。
- 直接进入密码恢复:点击后跳转到同一设备的 8090 门户管理员页面,并自动勾选「忘记密码,使用恢复密钥」,直接显示恢复密钥、新密码及确认密码输入框。
- 沿用现有恢复流程:验证有效密钥后,仍须下载新的恢复密钥 TXT 并确认保存,才能完成密码重置;完成后旧密钥失效,旧后台会话注销。
- 初始化入口保持原有流程:尚未创建管理员时,继续使用临时初始化凭证注册,不显示忘记密码入口。
兼容与升级
本次修改前端入口,不改变管理员设备访问限制、密钥校验、设备数据、配额及防火墙策略。非管理员设备仍可从认证门户的管理员登录入口进行验证或恢复。
网页资源嵌入 Go 服务,需要更新到 v1.1.8 服务后生效;仅刷新旧服务页面不会获得新入口。已有管理员账号及恢复密钥继续有效,无需重新初始化。
保留 /data/ufi-gate 状态目录。服务更新完成后,按原有流程检查设置并手动开启认证。
验证
- JavaScript 语法检查。
- 浏览器回归覆盖初始化页不显示忘记密码、后台登录页跳转并自动选择恢复方式、新密钥下载确认、密码重置、旧密码与旧密钥拒绝,以及三种屏幕宽度。
- 本次未进行真实随身 WiFi 设备验收。
详细操作见 管理员恢复指南。
UFI-Gate v1.1.7
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 分钟。输入管理员账号密码后,新增恢复密钥下载步骤;只有完成保存确认后,才正式创建管理员并使初始化凭证失效。
插件菜单「重置初始化凭证」在确认后:
- 清除管理员账号、密码、管理员设备权限、后台会话、旧恢复密钥及未完成的恢复流程。
- 保留设备记录、上网账号、流量、配额、已有联网授权和其他系统配置,不停止服务。
- 生成新的临时初始化凭证并打开后台,重新执行管理员注册和恢复密钥下载流程。
如果浏览器拦截新窗口,可使用插件显示的后台地址和初始化凭证手动进入。
兼容与升级
- 已安装用户无需重置账号。升级后,已有管理员首次进入新版后台时,若尚未配置恢复密钥,会引导生成、下载并确认保存。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
UFI-Gate v1.1.6
消息盒子新增清理操作:除原有的「全部已读」外,现在可以一键删除已读消息,或清空全部消息。
新增
- 删除已读:消息盒子工具栏新增「删除已读」按钮,一键移除所有已看过的消息,未读消息保留。
- 清空全部:消息盒子工具栏新增「清空全部」按钮,二次确认后删除所有消息(含未读),不可恢复。
- 后端新增
POST /admin-api/notifications/delete,支持{Read:true}删除已读与{All:true}清空全部。
兼容性
- 仅站内消息管理,不影响推送、审批、设备准入与防火墙逻辑。
- 不涉及配置变更,升级后无需重新设置。
UFI-Gate v1.1.5
UFI-Gate v1.1.5
管理后台左侧导航新增「关于」页面,集中展示当前版本、系统架构、运行时间、认证状态,并提供 GitHub 仓库、发布历史、问题反馈和 Telegram 联系方式入口。
新增
- 关于页面:左侧导航最底部新增「关于」菜单项(圆形 info 图标)。
- 系统信息卡片:实时显示当前版本号、设备架构(arm32 / arm64)、运行时长、认证服务状态。
- 项目资源链接:GitHub 仓库、发布历史、问题反馈、Telegram 联系作者(@nanbeiluduo)。
- dashboard API 新增
arch字段,供前端展示运行架构。
兼容性
- 纯前端展示页面,不影响设备准入、防火墙、更新等任何核心逻辑。
- 不涉及配置变更,升级后无需重新设置。
UFI-Gate v1.1.4
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 安装器覆盖修复。