Skip to content

Releases: jakoes-wu/ownexit

v2.0.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 07 Oct 08:39
039be01

Removed / 移除

The spellings deprecated in 1.5.0 (they kept working, with a hint, through 1.5.0, 1.6.0 and 1.7.0) are removed. Calling one now exits 2 and prints the replacement on stderr:

1.5.0 废弃的旧写法(1.5.0、1.6.0、1.7.0 都照常可用并提示新写法)在本版移除。调用时退出 2,并在 stderr 给出替代写法:

  • ownexit direct --rotate-keys / --rotate-token / --add-device <name> / --remove-device <name> / --migrate / --uninstall → ownexit direct rotate-keys / rotate-token / add-device <name> / remove-device <name> / migrate / uninstall
  • ownexit subctl start / stop / status / log / qr / devices / login (and running direct/subctl directly) → ownexit direct sub start / sub stop / status / log / qr / devices / login. direct/subctl stays as the internal implementation of these operations. / direct/subctl 保留,作为这些操作的内部实现。
  • ownexit chain rehost-exit → ownexit chain migrate-exit --to <new IP> (the same machine is detected automatically). / (同一台机器会自动识别。)

Upgrading / 升级

  • Nothing to do: local configuration, state, subscriptions, server files and every other command, option, exit code and machine-readable output are unchanged, so deployments made with 1.x keep working without redeploying or re-importing clients. Update your own scripts or aliases that still use the spellings above.
  • 无需任何操作:本机配置、状态、订阅、服务器上的文件,以及其余命令、参数、退出码和机器可读输出都没有变,1.x 部署的直连与链升级后照常管理,不用重新部署、客户端不用重新导入。自己的脚本或别名里如果还写着上述旧写法,改成新写法即可。
  • A rehost-exit interrupted under 1.x (configuration already on the new IP, state still on the old one): rerun it with 1.x before upgrading, or after upgrading run ownexit chain migrate-exit --to <EXIT_HOST from the configuration> to finish it.
  • 1.x 里中断的 rehost-exit(配置已改成新 IP、state 还是旧 IP):升级前用 1.x 重跑它,或升级后运行 ownexit chain migrate-exit --to <配置中的 EXIT_HOST> 续上。

Changed / 变更

  • The compatibility promise now covers 2.x (docs/reference/compatibility.md): the reference documents are frozen for 2.x, and 2.x reads every file 1.x wrote. direct/subctl and the OWNEXIT_VIA_DIRECT marker are listed as internal.
  • 兼容承诺改为 2.x(docs/reference/compatibility.md):参考文档按 2.x 冻结,2.x 能读取 1.x 写下的全部文件;direct/subctl 与内部标记 OWNEXIT_VIA_DIRECT 列为内部内容。

v1.7.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 07 Oct 07:55
6cf9a18

Added / 新增

  • The scripts now speak English as well as Chinese: --help, progress, warnings, errors, the "next steps" summary, the server-side [vps] log lines of direct, the relay chain's remote preflight messages and doctor's camouflage-domain scan. The language follows the entry point's rule: OWNEXIT_LANG=zh|en wins; otherwise Chinese when LC_ALL / LC_MESSAGES / LANG starts with zh, English otherwise. The language picked in the guided setup is passed on to the scripts, so the English setup note "the scripts print in Chinese for now" is gone.
  • 脚本输出中英双语:--help、进度、警告、报错、“下一步”汇总、直连的服务器端 [vps] 日志、链式远端预检的报错、doctor 的伪装域名扫描都有英文。语言规则与入口相同:OWNEXIT_LANG=zh|en 优先;否则 LC_ALL / LC_MESSAGES / LANG 以 zh 开头为中文,其余英文。向导里选的语言会传给脚本,英文向导里“脚本输出目前是中文”的提示随之删除。
  • Generated comments follow the language too: the header of a chain configuration written by chain init and of clash-snippet.yaml written by multi render.
  • 生成文件里的注释也跟随语言:chain init 写的链配置头部、multi render 写的 clash-snippet.yaml 头部。
  • scripts/check_ui_lang.sh (run in CI) fails when a Chinese message in the scripts has no English twin, or when the two texts have different %, ${ or $( placeholders.
  • 新增 scripts/check_ui_lang.sh(接入 CI):脚本里有中文提示没写英文,或两种语言的 %、${、$( 个数不同时报错。

Changed / 变更

  • Chinese-speaking users whose system language is not Chinese now see English output; set OWNEXIT_LANG=zh to switch back. Machine-readable output (status=, reason=, health=, rotate=, migrate= and the other frozen keys and values) is identical in both languages; the INFO / WARN / ERROR level words are not translated.
  • 系统语言不是中文的中文用户,现在看到的是英文输出;设 OWNEXIT_LANG=zh 即可改回。机器可读输出(status=、reason=、health=、rotate=、migrate= 等冻结的键与值)两种语言完全相同;INFO / WARN / ERROR 级别词不翻译。
  • English documentation quotes the scripts' English messages instead of Chinese originals with a gloss.
  • 英文文档引用报错时改用脚本的英文原文,不再附中文原文加释义。

v1.6.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 07 Oct 06:53
b3ad226

Added / 新增

  • The guided setup (ownexit with no arguments in a terminal) now asks for the language first (中文 / English); Enter keeps the language detected from your locale, and setting OWNEXIT_LANG=zh|en skips the question. In English it also notes that the setup scripts' progress output is currently in Chinese.
  • 向导(在终端里只敲 ownexit)第一步先选语言(中文 / English);回车沿用按系统语言判断的结果,设 OWNEXIT_LANG=zh|en 可跳过这一步。选 English 时会提示部署脚本的进度输出目前是中文。
  • English editions of the user-facing documentation: the direct, relay chain and Clash direct-IP guides, the three reference documents, and the chain/ and direct/ READMEs (*.en.md); CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md and the issue / pull request templates are now bilingual. The English README links to the English editions.
  • 面向用户的文档有了英文版:直连、链式、Clash 直连 IP 三篇手册,三篇参考文档,以及 chain/、direct/ 的 README(*.en.md);CONTRIBUTING.md、SECURITY.md、CODE_OF_CONDUCT.md 与 issue / PR 模板改为中英双语。英文 README 改链英文版。
  • Checks that keep the two languages in step: scripts/check_interface.sh now also compares the table first columns of the Chinese and English reference documents, and the new scripts/check_i18n.sh checks that document pairs exist, link to each other, and that English pages neither link back to Chinese editions nor use broken anchors. Both run in CI.
  • 防止中英两版走样的检查:scripts/check_interface.sh 增加中英参考文档表格首列比对;新增 scripts/check_i18n.sh 检查成对文档存在、互相链接,英文页不链回中文版、锚点有效。两者都接入 CI。

Changed / 变更

  • OWNEXIT_LANG is documented as controlling both the entry point's help and the guided setup (previously described as affecting the help only).
  • 参考文档里 OWNEXIT_LANG 的说明改为“决定入口帮助与向导的语言”(原写只影响帮助)。

v1.5.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 07 Oct 05:50
a8cc771

新增

  • 直连改用子命令,与链式一致:ownexit direct up(部署;不带子命令仍等同 up)、rotate-keys、rotate-token、add-device <名>、remove-device <名>、migrate、uninstall,以及原 ownexit subctl 的日常操作 sub start [--ttl] / sub stop / status / log / qr / devices / login。
  • ownexit chain migrate-exit --to <新 IP> 能自动处理“同一台出口机换了 IP”:经中转确认主机指纹相同后,自己登记新 IP 的主机密钥、备份并改写配置,原地切换,输出 migrate=rehosted;旧 IP 连不上也可以,中断后重跑同一条命令续上。

变更

  • migrate-exit 以前在两种情形退出 2,现在会成功:--to 就是当前出口机(已切换完成,输出 rehost=noop);新地址与当前出口机是同一台(原地切换)。
  • ownexit --help 不再列出 subctl、connect(两者照常可用);向导部署直连时执行 ownexit direct up。
  • 所有提示文字、帮助、README 与手册改用新写法。

废弃

  • ownexit direct --rotate-keys / --rotate-token / --add-device / --remove-device / --migrate / --uninstall、ownexit subctl …、ownexit chain rehost-exit:照常可用,使用时在 stderr 提示新写法,最早在 2.0 移除(见 docs/reference/compatibility.md “已废弃项”)。

v1.4.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 07 Oct 03:34
a11e19f

新增

  • 向导:在终端里只敲 ownexit(不带参数),先问“在你这里能直接连上这台 VPS 吗”,再问 IP 与 SSH 端口,然后自动执行 ownexit direct 或 ownexit chain up。脚本、管道里不带参数仍打印帮助。
  • Homebrew 一行安装:brew install jakoes-wu/tap/ownexit(macOS),连同 qrencode 一起装好。
  • 直连订阅服务可选自动关闭:ownexit direct --sub-ttl 30m、ownexit subctl start --ttl 30m,到时在 VPS 上自动停掉订阅服务;不给则与之前一样一直开着。subctl status 显示离自动关闭还剩多久,subctl stop 一并取消计时。

变更

  • 手册与帮助把“出口机变了”统一为先运行 migrate-exit;同一台机器只换了 IP 时(包括旧 IP 已经连不上),它的提示现在指向 rehost-exit,并写清楚之前要改哪些配置。

v1.3.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 07 Oct 02:56
4f61b31

新增

  • 直连自适应订阅地址 http://<VPS>:<订阅端口>/<TOKEN>/sub(default 与每台设备都有):按客户端 User-Agent 返回 Clash 配置、sing-box 配置或 base64 节点列表,认不出的客户端返回节点列表;部署结束只推荐这一条,原来四条按格式固定的地址照旧可用。已部署的直连升级后重跑一次 ownexit direct 即可启用。
  • 首次配免密改用 Python 包 pexpect 自动输入密码(pipx / pip 安装时自动带上),本机不再需要另装 expect;没有 pexpect 时仍可用系统 expect。新增环境变量 OWNEXIT_PYTHON(入口自动设置)。

变更

  • 直连订阅服务由 python3 -m http.server 换成随包分发的 subserver.py(服务名、端口、目录、文件名不变):只响应订阅路径,根目录与其它路径返回 404,不再把带 TOKEN 的请求路径写进系统日志。
  • 新增 Python 依赖 pexpect(含 ptyprocess);离线安装需一并准备。

v1.2.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 07 Oct 01:52
e178100

新增

  • 链式 chain up --relay <IP> --exit <IP>:一条命令完成 init、deploy 并打印节点二维码与下一步;可重跑,已有配置且地址一致时直接继续,不带 IP 且本机只有一条链时复用它。
  • 链式子命令在本机只有一条链时可以省略 --id(ownexit chain status);没有配置或有多条时退出 2 并提示。
  • 链式 chain qr [--device <名字>]:在终端显示节点二维码,只读本机文件。
  • 直连与链式部署成功后打印“下一步”块(导入哪条链接、应显示的出口 IP、subctl stop、doctor),二维码紧随其后。
  • ownexit --help 按系统语言输出中文或英文(OWNEXIT_LANG=zh|en 可强制),并分“常用 / 其它”两组;chain --help 的子命令按常用 / 日常 / 维护 / 高级分组。

变更

  • 部署前自检(行为变化):ownexit direct、chain deploy / chain up 开始前检查本机到服务器的路由是否经过代理 TUN;经过时不再只是警告,而是拒绝(链式退出 3,直连退出 1)并给出处理办法。一直在 TUN 下部署的用户需要关闭 TUN、按 docs/manual/clash-direct-ips.md 让服务器 IP 走物理网卡,或加 --allow-tun 恢复旧行为。

v1.1.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 06 Oct 12:46
dcc9a24

新增

  • 链式 migrate-exit --to <新出口机 IPv4> [--to-port <n>]:出口机换一台机器。旧出口机的配置(含 Reality 私钥)经本机内存搬到新机器,UUID、密钥、short id、全部设备、中转地址与端口都不变,客户端不用重新导入;中转转发目标切过去后自动删除旧出口机上本链的服务与文件。中途中断重跑同一条命令即可收敛;中转切换前可用 --abort 放弃,旧机器永久失联时可用 --abandon-cleanup 放弃清理。
  • 链式 status 新增 reason=exit-migration-pending;新增输出行 migrate=done / migrate=aborted;新增本机文件 chains/<id>/migrate-exit.env(迁移进行中才存在)。

变更

  • 出口机迁移进行中时,deploy、rollback、rehost-exit、rebaseline、rotate-keys、add-device、remove-device 拒绝执行并提示先完成迁移。没有迁移记录时行为与 1.0.0 相同。

v1.0.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 06 Oct 08:29
b6ae13d

新增

  • 接口冻结:命令行、配置键、本机与服务器文件格式在 1.x 内只增不减,已有部署升级后无需重新部署或重新导入客户端;不兼容改动只在 2.0 并提供迁移。规则见 docs/reference/compatibility.md。
  • 参考文档 docs/reference/commands.md(命令、参数、退出码、机器可读输出、环境变量)与 docs/reference/files.md(文件、键、路径、节点名)。
  • scripts/check_interface.sh:CI 自动比对源码与参考文档里的参数、子命令、status 取值、配置 / 状态键、订阅文件名,不一致时失败。

变更

  • PyPI 分类标为 Development Status :: 5 - Production/Stable。
  • 本版本不改变任何命令、输出与文件格式。

v0.7.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 06 Oct 05:58
2c9d929

新增

  • 多设备(直连与链式):每台设备一个独立 UUID,可单独吊销,其它设备不受影响。直连 --add-device / --remove-device(每台设备有自己的订阅地址)与 subctl devices;链式 add-device / remove-device / list-devices(每台设备一个节点文件)。现有的那套凭据就是 default,订阅地址与 node.txt 不变。
  • ownexit doctor --scan-sni:在出口服务器上对候选伪装域名逐个做真实 Reality 握手(本机回环),按可用与握手耗时排序;可用 --sni-candidates 指定候选。

变更

  • 凭据轮换(直连 --rotate-keys、链式 rotate-keys)同时重新生成全部设备的 UUID。
  • 链式 status 在出口机有未完成的凭据或设备操作时输出 reason=exit-op-pending next=rerun-interrupted-command(原为 reason=rotate-pending next=run-rotate-keys)。
  • 新部署的链与改过参数的直连,服务器配置的 users 项带 name 字段。