Skip to content

Releases: slobys/AdZero

AdZero v0.23.6

Choose a tag to compare

@slobys slobys released this 01 Nov 00:54
2806cb9

概览的 5/15/30 分钟是临时暂停保护的时长。此前标签只供读屏软件读取,容易被当成统计时间范围。

  • 显示「暂停时长」标签,按钮随选项更新为「暂停 N 分钟」。选择本身不执行暂停;点击按钮后才操作。
  • 统计区明确显示「累计统计」,请求数和拦截数仍累计至本次开机或上次清零。
  • 保留状态刷新后的时长选择、键盘标签与手机窄屏布局;严格 DNS 模式仍不提供临时暂停。
  • 同步在线文档,并修复本地 UI 预览缺少 SDK DOM 时的节点数组渲染。

验证:447 项 LuCI 回归断言;共享 IPK、APK 的源码、内容及压缩后界面回归校验;25 项安装入口与统一安装器测试;8 项文档测试,12 个页面及 69 个搜索章节构建。真实浏览器在本地模拟环境验证了时长选择、重新检测、15 分钟暂停与恢复,及 360px 手机布局。

本次未在生产路由器上执行暂停、安装、重启或配置修改。仍使用同一稳定安装入口,由安装器自动选择 IPK/APK;升级保留原有保护开关。

GitHub 发布门槛:PR 的 17 项检查通过(文档部署按设计跳过),合并主分支后的 10 项检查亦全部成功,线上文档部署通过。

AdZero v0.23.5

Choose a tag to compare

@slobys slobys released this 31 Oct 17:54
fbc5451

AdZero v0.23.5

修复桥接 LAN 切换代理后 DNS 统计不增长的问题。部分代理会在桥成员上提前重定向请求,旧版只观察主网桥的 53 端口,因此无法把请求和应答对应起来。

  • 同时观察主局域网网桥及其成员接口,用接口索引限制范围;保留请求/应答关联及重复包去重,不混入 WAN。非桥接接口沿用原路径。
  • 对命中当前规则但收到 SERVFAIL 的查询单独提示,不把 DNS 故障、超时或孤立应答当作已拦截,也不加入最近拦截及效果检测成功凭据。
  • 保留同次开机的累计数、清零功能和隐私边界;不改代理、DNS 上游、防火墙规则、缓存或用户过滤列表。
  • 在线文档补充统计不增长和拒绝应答被代理转换的排查说明。

已完成 38 项原生统计回归、426 条 LuCI 断言,以及真实网桥/veth/独立客户端/nft DNAT 的隔离 UDP/TCP 测试。真机只读对照确认候选采集可完整关联 6 次查询及应答;未在路由器安装候选包或重启服务。

注意:NaiLink / mihomo 路径实测存在「本地 DNS 桥返回 REFUSED、客户端收到 SERVFAIL」的转换。此版修复采集遗漏并解释这种应答,不修复 NaiLink 自身的转换行为,也不把 SERVFAIL 虚算成拦截。详细证据与验证边界见 桥接 DNS 统计。

发布验证:GitHub 最终提交的全部测试通过,PR 文档部署按预期跳过;916 项官方原生回归、426 条 UI 断言、共享 IPK/APK 及固件 SDK 检查通过。仅做真机只读探测,未替用户安装新包、修改网络配置或重启服务。

合并到主分支后的 10 项检查亦全部成功,线上文档部署通过。

AdZero v0.23.4

Choose a tag to compare

@slobys slobys released this 31 Oct 11:58

AdZero v0.23.4

修复统一安装器对 OPKG 已安装状态的误判。此前只接受 install ok installed,会把带 user、hold 等正常标记的已安装包当成缺失,提示“本机原生软件包清单不完整”。

  • 以原生查询成功、包名精确匹配且实际状态为 installed 判断安装情况;接受正常安装标记,不接受仅解包、残留配置、查询失败、错误包名或重复记录。
  • 同时修复安装、升级、依赖补充和卸载归属检查使用的同一判定。基础清单不完整时明确指出 base-files、luci-base 或 rpcd 中未确认的具体包。
  • 增加三种固件、正常 OPKG 标记和失败状态回归,以及来自固定 SHA-256 官方镜像的真实 OPKG / BusyBox 检查;读取私有数据库副本,不安装软件包、不修改路由器。
  • 继续使用同一正式安装入口和共享 IPK/APK;保留原生依赖、系统包替换、ABI、备份与旧保护恢复检查,不借用其他固件的依赖。

用户截图来自 iStoreOS 24.10.7 x86_64;截图能定位到清单检查阶段,尚不能确认该朋友设备具体哪一个包的状态。此修复已在隔离环境复现相同错误并验证;不代表已经在那台设备完成安装验收,也不保证后续软件源与依赖一定齐全。

验证:GitHub 17 项检查通过,PR 文档部署按预期跳过;官方 OpenWrt 原生回归 914 项、425 条 UI 断言、74 项安装相关回归、9 个真实 OPKG 检查及共享 IPK/APK SDK 构建、载荷和摘要核验通过。

AdZero v0.23.3

Choose a tag to compare

@slobys slobys released this 31 Oct 06:26

AdZero v0.23.3

修复切换代理或 NaiLink 内核后,关闭请求因等锁或恢复失败而丢失、后台提前停止的问题。

  • 先保存关闭请求,再等待操作锁;失败后后台继续恢复,页面刷新后仍显示「正在关闭并恢复」。关闭完成前阻止新的开启和规则应用。
  • 保留恢复所需的 DNS 辅助服务到恢复完成;即使 UCI 开关已关闭,也能继续完成遗留恢复。最终停止后台时先释放操作租约。
  • 区分 AdZero 自己造成的 NaiLink 待应用状态和用户的新编辑,保留 DNS、路由、规则文件、全局选项、节点、群组及原生服务设置的冲突保护。记录仅保存摘要,不保存节点凭据。
  • 必要的 NaiLink 原生恢复按应用/恢复两个阶段限次,不循环重启;已经确认载入原配置时避免再次重载。保留用户选择的内核及停止状态,不重启路由器。
  • 同步在线排障说明;继续共用一份 IPK 和一份 APK,不新增安装渠道或大型依赖。

验证边界:v0.23.2 真机换核验收曾复现 sing-box 重载未确认;本次新增关闭恢复路径使用原生 OpenWrt 运行时和隔离故障回归验证。现网 mihomo 的接入、运行状态与操作锁仅作只读核对,本轮未部署程序或制造断网故障,不将其记为新版三个内核的完整现网验收。

验证:GitHub 17 项检查通过,PR 文档部署按预期跳过;官方 OpenWrt 原生回归 909 项、425 条 UI 断言、16 个原生入口编译及共享 IPK/APK 的正式 SDK 构建、载荷和摘要核验通过。

AdZero v0.23.2

Choose a tag to compare

@slobys slobys released this 31 Oct 03:31

AdZero v0.23.2

修复 NaiLink 切换 sing-box/mihomo 后,AdZero 重载等待无法结束、关闭恢复只能依赖整机重启的问题。

  • 重载完成按运行版本、当前内核就绪状态、DNS/路由配置与规则文件共同核验,允许已完成的请求跨内核确认;不丢弃未确认的请求。
  • 正在切换的内核不再当作已停止;恢复期间保留仍可能使用的规则文件。仅旧 API 明确缺少字段时使用兼容接口,传输或授权失败不会误判成 dae。
  • 后台同步期间可排队关闭;等待锁和内核切换均有上限与进度提示,保护状态只在完成核验后更新。
  • 操作锁增加 ucode 内置的内核租约,无新增依赖。活跃子任务继承租约,控制进程异常退出不会被抢锁;已确认退出的孤儿操作可安全回收,未知锁及外部文件继续保护。
  • 显式关闭时,旧版无法证明完成的重载记录可以在核对配置所有权后,至多针对同一管理进程恢复一次 NaiLink 原生服务;核对进程身份变化后才恢复配置。后台同步不会因此重启代理。
  • 保留外部编辑冲突、严格 DNS、下载校验和停止内核不自动拉起的保护,并同步在线排障文档。

现场只读检查:设备安装 v0.23.0、NaiLink 0.6.60-1;检查时 AdZero 已关闭、dae 运行、操作锁释放。历史日志存在重载未确认记录,故障中的完整旧恢复记录已不在设备上。隔离测试用于复现切换与丢失回执;不将其表述成现网内核切换验收。

验证:GitHub 17 项检查通过,PR 文档部署按预期跳过;420 项界面断言、16 个 ucode 入口编译和正式 IPK/APK SDK 构建及载荷核验通过。已在 ARM64 路由器独立临时文件中验证内核锁,未进行现网代理切换。

AdZero v0.23.1

Choose a tag to compare

@slobys slobys released this 31 Oct 01:14

AdZero v0.23.1

修复在线检查仅依赖 GitHub API、遇到偶发 HTTP 403 或连接异常就无法继续的问题。

  • API 不可用或元数据无效时,从同一个官方安装入口只解析固定正式版本和 SHA-256。不会执行未校验的入口脚本,不接受第三方 URL,也不要求用户提供 Token。
  • 保留正式安装脚本 SHA-256、本机依赖预检、一次性确认、15 分钟有效期、并发锁及升级失败不自动重试。摘要冲突不会通过后备来源绕过。
  • 更新面板标明后备来源;失败时分别显示 API 与官方入口状态。网络、下载或摘要失败不再统一提示固件不兼容。
  • 检查改成后台任务与短请求轮询,避免 LuCI 默认约 20 秒等待时间截断慢网络预检;刷新后可继续核对已保存的检查回执,不占用保护操作锁。
  • 统一升级说明,清理排障页仍要求选择旧 Beta/品牌专用渠道的过时指引。

现场只读检查曾收到 API HTTP 403,随后同一设备检查恢复为可更新且兼容。没有证据把该次 403 唯一归因为请求配额;路由器未执行升级、代理切换或服务重启。

验证:881 项 Python 回归、419 项界面断言及 8 种真实 OpenWrt 运行环境的受控更新场景通过。GitHub 17 项检查通过,PR 文档部署按预期跳过。实际包经过官方 IPK/APK SDK 构建和载荷核验。

AdZero v0.23.0

Choose a tag to compare

@slobys slobys released this 30 Oct 17:20

AdZero v0.23.0

OpenWrt、ImmortalWrt、iStoreOS 继续使用同一个正式版本和安装入口。

  • NaiLink 通过新版 coreStatus 与实际进程归属识别 dae、sing-box、mihomo,兼容旧接口。后台同步感知同一插件内的换核和实例更换。
  • PassWall2 接入原生复制 dnsmasq 的广告过滤,并在重载后检查运行实例确实继承当前过滤文件。保留节点、DNS 引擎、上游和原生分流;不混用 PassWall v1 的接口。
  • 共享内核按配置参数归属,排除配置校验进程、日志路径和未就绪的管理服务;状态不明时保留原配置。
  • 页面显示实际 NaiLink 内核,换核尚未同步时显示待同步。PassWall2 的 DNS 设置由原插件管理,不展示为 AdZero 已改写上游。
  • 常规 CI 核验实际复用的六份不可变原生依赖档案。厂商滚动目录的历史固件在线复查保留为显式手动检查,不修改历史 SHA、ABI 或冲突保护,也不把新固件元数据冒充旧固件来源。

PassWall2 暂不支持 AdZero 严格 DNS 模式;NaiLink 的可选 CNAME/设备增强监听入口目前仅适用于 dae,原生新内核不强行启用该入口。基础域名过滤和增强入口分别确认。

测试覆盖原生 ucode/UCI、真实 OpenWrt dnsmasq 的 UDP/TCP A/AAAA 查询、界面与 SDK 构建;没有在在线路由器上升级、切换或重启服务,不等于所有物理设备组合均已验收。

验证:873 项原生 Python 回归、413 项界面断言、11 种新旧接口场景及 12 次隔离 PassWall2 DNS 查询通过;GitHub 17 项检查通过,PR 文档部署按预期跳过。实际安装包通过 IPK/APK 官方 SDK 构建与载荷校验。

AdZero v0.22.0

Choose a tag to compare

@slobys slobys released this 30 Oct 11:08

OpenWrt、ImmortalWrt、iStoreOS 现在共用 一个正式版本、一个安装入口。不再需要选择品牌专用版、ARM64 版或 Beta。

wget -O /tmp/adzero-install-auto.sh https://raw.githubusercontent.com/slobys/AdZero/main/scripts/install-auto.sh && sh /tmp/adzero-install-auto.sh --menu

选择 1 自动安装或升级。安装器自动选择通用 IPK / APK,并检查原生依赖;iStoreOS 缺失组件在内部按精确固件构建匹配。首次安装保持保护关闭,升级保留原开关。

  • 修复 APK 数据库迁移、OPKG 残留造成的识别问题。
  • 缺失依赖先准备,再恢复旧版;保留真正的包冲突、ucode ABI、恢复记录及操作锁保护。
  • 支持固件自带 wget;在线更新只选择正式数字版本。
  • 安全卸载只移除 AdZero,保留已安装依赖,不给依赖设置永久版本锁。
  • 安装、兼容、维护及问题排查文档统一更新。历史测试包保留供恢复追溯,不再作为安装选择渠道。

验证:857 项原生回归、406 项界面检查、17 项 GitHub 检查通过,包含 9 组官方/厂商 SDK 构建。通用包源码哈希已与 CI 产物核对;依赖声明与六组历史原厂构建一致。当前 OpenWrt ARM64 清单的离线 APK 预检及本地快照卸载验证通过。

推荐带 LuCI 的 24.10 / 25.12 系列;其他构建以本机依赖预检为准。上述验证不代表所有物理设备、代理及 IPv6 组合都完成现场验收;本次未对在线路由器安装、重启或切换代理。

在线安装说明 · 兼容范围 · 代码与 CI

AdZero iStoreOS 25.12.6 Beta.4:安全修复旧版与一键卸载

Choose a tag to compare

@slobys slobys released this 30 Oct 08:18

AdZero iStoreOS 25.12.6 Beta.4:旧版一键修复与安全卸载

版本:v0.21.5-istoreos-beta.4(独立 Pre-release;不是稳定版认证)。

本次专门解决用户在原厂 iStoreOS 25.12.6 x86/64 遇到的「系统检测到已有 AdZero,无法安装;选择卸载时又找不到 Beta 安装标记」的闭环问题。

适用范围

只支持 iStoreOS 25.12.6,修订号 2026102312 对应三个原厂 target:

目标 包架构 说明
x86/64 x86_64 AMD / Intel 软路由
armsr/armv8 aarch64_generic 原厂 ARMSR
rockchip/armv8 aarch64_generic 原厂 R6XS 板型白名单

不支持 iStoreOS 24.10.x 的 OPKG/IPK,也不会复用其他厂商 APK。

用户只需一条命令

通过 root SSH 执行:

curl -fL --proto '=https' --proto-redir '=https' https://raw.githubusercontent.com/slobys/AdZero/main/scripts/install-auto.sh -o /tmp/adzero-install-auto.sh && sh /tmp/adzero-install-auto.sh --menu

中文菜单现在包含「2)一键安装/安全修复已有 AdZero」「4)安全卸载当前 AdZero(包括没有 Beta 标记的旧版)」「5)只读检测安装来源、包版本、接管状态」。操作失败会回到同一个菜单,无须再下载脚本。首先选择 5 可不修改网络地确认状态。

  • 全新安装:严格验证官方固件、原厂七份 APK 的 SHA、架构和离线依赖模拟,安装后默认不启用 DNS 过滤。
  • 同版本、无 Beta 标记:必须由真正的 APK 数据库确认包安装、由 APK 文件清单确认控制程序归属,且版本精确为 0.21.5-r1;仅对 AdZero 本体执行离线模拟和 --force-reinstall,不重装依赖、不中途使用在线软件源。先备份并安全恢复旧版的 DNS/代理设置。
  • 不同版本的旧 AdZero:为避免覆盖不兼容配置,不直接强制升级;在相同菜单选择 4,完成安全恢复和本体卸载,再选 2 安装。共享依赖与备份保留。
  • 已带已知 Beta 标记:识别已有安装,不重复执行安装。卸载前也会核对来源、所有权、依赖变化计划。
  • 孤立配置、非 APK 所有者、版本不明、锁冲突、异常符号链接、依赖计划不安全或 DNS/代理恢复失败:拒绝修改,不允许自动删除原系统文件。配置与状态备份在 /etc/adzero-backups。

Beta.4 使用的 AdZero 本体 APK 和六份原厂依赖与 Beta.3 完全相同;升级内容仅安装器和独立发行包的元数据。原厂已安装包原版 tcpdump 不应被替换。

验证与限制

三个目标有原厂来源、SHA 和隔离测试。对比 Beta.3 公开原文件与 Beta.4 新发行文件,确保本体 APK 的 SHA-256 一致且稳定兼容矩阵未改变。已在原厂 iStoreOS 25.12.6 x86/64 镜像的完全断网 QEMU 虚拟机中,使用真实 APK 3.0.5 和已发布的 Beta.3 归档进行实测:实际安装旧版→模拟无 Beta 标记→新 Beta.4 只读检测→仅重装 AdZero 本体→成功安全卸载,均完成且输出 ADZERO_GUEST_BETA4_LIFECYCLE_PASS。原始镜像校验、发行字节 SHA、虚拟机边界和详细检查结果见 发布证据。

这不是实体设备稳定性认证。 原厂 ARM64 设备的 LAN IPv4/IPv6、NaiLink/PassWall、DNS、重启和故障恢复仍需自愿测试者反馈。不要在唯一生产路由器且无本地救援手段的情况下首次开启拦截。

反馈只需要固件版本、菜单 5 的非敏感状态和脱敏后的错误信息;不要上传密码、代理订阅、私有域名、原始 /etc/config 或密钥。

Beta.4 Release · 统一安装手册 · GitHub Issues。

AdZero iStoreOS 25.12.6 Beta.3:修复 APK 检测误判与一键安装

Choose a tag to compare

@slobys slobys released this 29 Oct 05:26
725d222

AdZero iStoreOS 25.12.6 Beta.3:修复 APK 误判

版本:`v0.21.5-istoreos-beta.3`(公开预发行测试版)

有真实用户反馈:在 iStoreOS 25.12.6(修订号 2026102312)运行统一安装命令后,提示 “目标需要 APK,当前包管理器或已安装数据库不匹配”,导致无法进入中文安装菜单。

修复内容

  • 统一安装器不再要求 APK 数据库必须位于固定的 `/lib/apk/db/installed`,也不会因为存在旧版遗留的 `/usr/lib/opkg/status` 文件就误判系统仍使用 OPKG。
  • iStoreOS 专用安装器同样改为调用真实的 `apk info -e`(只读)检查当前已安装的 `base-files`、`luci-base`、`rpcd` 和完整版 `tcpdump`。确实缺少必要组件、原生 APK 不可用或包架构不匹配时仍拒绝安装。
  • 保留 精确固件版本、2026102312 修订号、target/ABI、R6XS 原厂板型、SHA-256、原厂依赖闭环、离线模拟与安全卸载等保护。
  • 新版菜单可以安全识别 Beta.1 和 Beta.2 的安装标记,优先恢复 AdZero 管理的 DNS/代理状态后再卸载,不会强制覆盖安装。
  • APK 本体与 6 个原厂依赖字节与 Beta.2 完全一致;仅安装脚本、菜单检查和发行元数据更新。首次安装默认不启用 DNS 过滤。

适用设备

仅 iStoreOS 25.12.6,修订号 2026102312:

固件 target CPU 架构 发行包
`x86/64` `x86_64` 原厂 x86_64 APK + 6 依赖
`armsr/armv8` `aarch64_generic` 原厂 ARMSR APK + 6 依赖
`rockchip/armv8`(官方 R6XS) `aarch64_generic` 原厂 R6XS APK + 6 依赖

不支持其它 iStoreOS 版本、其它修订号或所有 Rockchip ARM64 通用安装。

一条命令,自动进入匹配菜单

以 root SSH 登录软路由,直接执行:

```sh
curl -fL --proto '=https' --proto-redir '=https' https://raw.githubusercontent.com/slobys/AdZero/main/scripts/install-auto.sh -o /tmp/adzero-install-auto.sh && sh /tmp/adzero-install-auto.sh --menu
```

首次推荐选择 “一键安装(默认关闭过滤)”。确认 SSH、LuCI、正常网站与原代理正常后,再手动开启广告过滤。已安装 Beta.1/Beta.2 的设备若要重装,先在新菜单选择「安全卸载」,不要直接覆盖。

想单独测试是否被错误识别,可运行 `sh /tmp/adzero-install-auto.sh --detect`(只读、不联网)。如果依然提示 APK 检查失败,可在 SSH 执行以下只读命令并将脱敏结果提交到 GitHub Issues:

```sh
cat /etc/openwrt_release
apk --print-arch
apk info -e base-files luci-base rpcd tcpdump
```

请不要发布代理订阅地址、账号密码、API 密钥及私人网络配置。

验证结果与范围

通过真实原厂 iStoreOS 25.12.6 ARMSR 与 R6XS 固件的 APK 软件包数据库以及原厂 apk-tools 只读查询验证:遗留 OPKG 标记存在时仍可正确识别,缺失真正的 APK 已安装信息则会安全拒绝。三个目标的中文菜单、安装/卸载、R6XS 设备限制、旧 Beta 恢复和哈希篡改拦截均有隔离回归测试;所有 APK 实际二进制与 Beta.2 已核对一致。

尚未在截图用户的真实路由器上执行安装,也未宣称 LAN DNS、代理共存与回滚全部完成实机认证。

Beta.3 发布下载页 · 在线统一安装教程 · 提交反馈

本次不会修改稳定版 `v0.21.5`、OpenWrt/ImmortalWrt ARM64 Beta.2 或此前的 iStoreOS Beta.1/Beta.2 发布资产。