|
37 | 37 | mixin 🧩 Mixin 配置管理 |
38 | 38 | relay 🔗 多跳节点管理 |
39 | 39 | lan 🏠 局域网代理管理 |
| 40 | + ipv6 🌐 IPv6 / IPv6-only 节点管理 |
40 | 41 | |
41 | 42 |
|
42 | 43 | 📦 Subscription: |
|
49 | 50 | clashui 🕹️ 查看 Web 控制台 |
50 | 51 | secret 🔑 查看或设置 Web 密钥 |
51 | 52 | lan on|off|status 🏠 开启 / 关闭局域网代理 |
| 53 | + ipv6 on|off|auto|status 🌐 管理内核与 DNS IPv6 |
52 | 54 |
|
53 | 55 | 🧪 Transparent proxy: |
54 | 56 | tun 🧪 Tun 模式管理 |
@@ -3290,6 +3292,7 @@ cmd_ui_help_summary() { |
3290 | 3292 | printf ' %-18s %s\n' "clash ls" "📜 查看订阅列表" |
3291 | 3293 | echo "📌 高级" |
3292 | 3294 | printf ' %-18s %s\n' "clash lan" "🏠 局域网代理管理" |
| 3295 | + printf ' %-18s %s\n' "clash ipv6" "🌐 IPv6 / IPv6-only 节点管理" |
3293 | 3296 | printf ' %-18s %s\n' "clash tun" "🧪 Tun 模式管理" |
3294 | 3297 | printf ' %-18s %s\n' "clash mixin" "🧩 Mixin 配置管理" |
3295 | 3298 | printf ' %-18s %s\n' "clash sub" "🧩 订阅高级管理(启用 / 禁用 / 重命名 / 删除)" |
@@ -4403,6 +4406,84 @@ cmd_lan() { |
4403 | 4406 | esac |
4404 | 4407 | } |
4405 | 4408 |
|
| 4409 | +print_ipv6_status() { |
| 4410 | + local mode mode_text kernel_ipv6 dns_ipv6 kernel |
| 4411 | + |
| 4412 | + mode="$(config_ipv6_mode)" |
| 4413 | + kernel_ipv6="$(runtime_config_ipv6_enabled 2>/dev/null || echo "等待运行配置生成")" |
| 4414 | + dns_ipv6="$(runtime_config_dns_ipv6_enabled 2>/dev/null || echo "等待运行配置生成")" |
| 4415 | + kernel="$(runtime_kernel_type 2>/dev/null || echo unknown)" |
| 4416 | + |
| 4417 | + case "$mode" in |
| 4418 | + true) mode_text="已开启" ;; |
| 4419 | + false) mode_text="已关闭" ;; |
| 4420 | + *) mode_text="自动(保留订阅设置)" ;; |
| 4421 | + esac |
| 4422 | + |
| 4423 | + ui_title "🌐 IPv6" |
| 4424 | + ui_kv "🔧" "配置模式" "$mode_text" |
| 4425 | + ui_kv "🚀" "当前内核" "$kernel" |
| 4426 | + ui_kv "🌐" "内核 IPv6" "$kernel_ipv6" |
| 4427 | + ui_kv "🔎" "DNS AAAA" "$dns_ipv6" |
| 4428 | + if [ "$kernel" != "mihomo" ]; then |
| 4429 | + ui_warn "Hysteria2 建议使用 Mihomo:clash config kernel mihomo" |
| 4430 | + fi |
| 4431 | + ui_blank |
| 4432 | +} |
| 4433 | + |
| 4434 | +cmd_ipv6() { |
| 4435 | + local action |
| 4436 | + prepare |
| 4437 | + |
| 4438 | + action="${1:-status}" |
| 4439 | + case "$action" in |
| 4440 | + on|enable) |
| 4441 | + set_config_ipv6_mode true |
| 4442 | + regenerate_config |
| 4443 | + apply_runtime_change_after_config_mutation |
| 4444 | + success "IPv6 与 DNS AAAA 已开启" |
| 4445 | + print_ipv6_status |
| 4446 | + print_config_apply_feedback |
| 4447 | + ;; |
| 4448 | + off|disable) |
| 4449 | + set_config_ipv6_mode false |
| 4450 | + regenerate_config |
| 4451 | + apply_runtime_change_after_config_mutation |
| 4452 | + success "IPv6 与 DNS AAAA 已关闭" |
| 4453 | + print_ipv6_status |
| 4454 | + print_config_apply_feedback |
| 4455 | + ;; |
| 4456 | + auto|reset) |
| 4457 | + set_config_ipv6_mode auto |
| 4458 | + regenerate_config |
| 4459 | + apply_runtime_change_after_config_mutation |
| 4460 | + success "IPv6 已恢复为自动模式" |
| 4461 | + print_ipv6_status |
| 4462 | + print_config_apply_feedback |
| 4463 | + ;; |
| 4464 | + status) |
| 4465 | + print_ipv6_status |
| 4466 | + ui_next "IPv6-only / Hysteria2 节点不可用时执行:clash ipv6 on" |
| 4467 | + ui_blank |
| 4468 | + ;; |
| 4469 | + -h|--help|help) |
| 4470 | + echo "📜 用法:" |
| 4471 | + echo " clash ipv6 status" |
| 4472 | + echo " clash ipv6 on" |
| 4473 | + echo " clash ipv6 off" |
| 4474 | + echo " clash ipv6 auto" |
| 4475 | + echo |
| 4476 | + echo "🌐 说明:" |
| 4477 | + echo " on 同时启用内核 IPv6 与 DNS AAAA" |
| 4478 | + echo " off 同时关闭内核 IPv6 与 DNS AAAA" |
| 4479 | + echo " auto 保留订阅中的 IPv6 设置,缺省时沿用兼容默认值" |
| 4480 | + ;; |
| 4481 | + *) |
| 4482 | + die_usage "未知的 ipv6 子命令:$action" "clash ipv6 on|off|auto|status" |
| 4483 | + ;; |
| 4484 | + esac |
| 4485 | +} |
| 4486 | + |
4406 | 4487 | print_profile_use_feedback() { |
4407 | 4488 | local profile="$1" |
4408 | 4489 |
|
@@ -7262,7 +7343,7 @@ cmd_sub() { |
7262 | 7343 |
|
7263 | 7344 | case "${1:-}" in |
7264 | 7345 | update) |
7265 | | - regenerate_config |
| 7346 | + regenerate_config "manual-refresh" |
7266 | 7347 | apply_runtime_change_after_config_mutation |
7267 | 7348 | print_config_regen_feedback |
7268 | 7349 | print_config_apply_feedback |
@@ -8087,6 +8168,7 @@ case "$cmd" in |
8087 | 8168 | dev) cmd_dev "$@" ;; |
8088 | 8169 | config) cmd_config "$@" ;; |
8089 | 8170 | lan) cmd_lan "$@" ;; |
| 8171 | + ipv6) cmd_ipv6 "$@" ;; |
8090 | 8172 | mixin) cmd_mixin "$@" ;; |
8091 | 8173 | relay) cmd_relay "$@" ;; |
8092 | 8174 | profile) cmd_profile "$@" ;; |
|
0 commit comments