Skip to content

Commit 6bb309f

Browse files
committed
feat(cli): 支持将 sing-box 节点配置转回节点链接
1. subscription.sh: 新增 `convert` 子命令,通过调用 `proxylink -singbox`将 JSON 格式的节点配置转换为标准节点链接 (URI)。 2. cli: 同步支持 `convert` 命令
1 parent 70445c9 commit 6bb309f

3 files changed

Lines changed: 30 additions & 1 deletion

File tree

src/module/bin/proxylink

-5.24 MB
Binary file not shown.

src/module/scripts/cli

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
# cli rm <名称|标签|路径> 删除节点
1919
# cli show <名称|标签|路径> 查看节点配置
2020
# cli delay [名称|标签|all] 测试节点延迟
21+
# cli convert <文件> sing-box 节点转链接
2122
#
2223
# 模式:
2324
# cli mode 查看出站模式
@@ -30,6 +31,7 @@
3031
# cli sub update-all 更新全部订阅
3132
# cli sub rm <名称> 删除订阅
3233
# cli sub parse <节点链接> 单链接转 sing-box 节点
34+
# cli sub convert <文件> sing-box 节点转链接
3335
# cli sub file <文件> 文件节点或 Clash YAML 转节点
3436
# cli sub sub <链接> [目录] 订阅链接转节点文件
3537
#
@@ -532,6 +534,12 @@ cmd_show() {
532534
cat "$node"
533535
}
534536

537+
cmd_convert() {
538+
local file="${1:-}"
539+
[ -n "$file" ] || die "用法: cli convert <文件>"
540+
sh "$SUB_SCRIPT" convert "$file"
541+
}
542+
535543
#######################################
536544
# 出站模式与控制接口
537545
#######################################
@@ -684,9 +692,10 @@ cmd_sub() {
684692
update-all) sh "$SUB_SCRIPT" update-all ;;
685693
rm | remove) sh "$SUB_SCRIPT" remove "${1:-}" ;;
686694
parse) sh "$SUB_SCRIPT" parse "${1:-}" "${2:-}" ;;
695+
convert) sh "$SUB_SCRIPT" convert "${1:-}" ;;
687696
file | import) sh "$SUB_SCRIPT" file "${1:-}" "${2:-}" ;;
688697
sub | fetch) sh "$SUB_SCRIPT" sub "${1:-}" "${2:-}" ;;
689-
*) die "用法: cli sub {list|add|update|update-all|rm|parse|file|sub}" ;;
698+
*) die "用法: cli sub {list|add|update|update-all|rm|parse|convert|file|sub}" ;;
690699
esac
691700
}
692701

@@ -831,6 +840,7 @@ NetProxy CLI
831840
cli import <文件>
832841
cli rm <名称|标签|路径>
833842
cli show <名称|标签|路径>
843+
cli convert <文件>
834844
cli delay [名称|标签|all]
835845
836846
模式:
@@ -844,6 +854,7 @@ NetProxy CLI
844854
cli sub update-all
845855
cli sub rm <名称>
846856
cli sub parse <节点链接>
857+
cli sub convert <文件>
847858
cli sub file <文件>
848859
cli sub sub <链接> [目录]
849860
@@ -889,6 +900,7 @@ main() {
889900
import) cmd_import "$@" ;;
890901
rm | remove) cmd_rm "$@" ;;
891902
show) cmd_show "$@" ;;
903+
convert) cmd_convert "$@" ;;
892904
delay) cmd_delay "$@" ;;
893905
mode) cmd_mode "$@" ;;
894906
sub | subscription) cmd_sub "$@" ;;

src/module/scripts/core/subscription.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ show_help() {
2121
2222
导入节点:
2323
parse <节点链接> [目录] 单个链接转 sing-box 节点
24+
convert <文件> sing-box 节点转链接
2425
file <文件> [目录] 文件节点或 Clash YAML 转 sing-box 节点
2526
sub <订阅链接> [目录] 订阅转 sing-box 节点,每个节点一个文件
2627
@@ -89,6 +90,19 @@ import_parse() {
8990
log "INFO" "单个节点导入完成"
9091
}
9192

93+
#######################################
94+
# sing-box 节点转链接
95+
#######################################
96+
export_link() {
97+
local file="$1"
98+
99+
[ -n "$file" ] || die "用法: $(basename "$0") convert <文件>"
100+
[ -f "$file" ] || die "文件不存在: $file"
101+
check_proxylink
102+
103+
"$PROXYLINK_BIN" -singbox "$file" -format uri
104+
}
105+
92106
#######################################
93107
# 文件节点转 sing-box
94108
#######################################
@@ -256,6 +270,9 @@ main() {
256270
parse)
257271
import_parse "${1:-}" "${2:-}"
258272
;;
273+
convert)
274+
export_link "${1:-}"
275+
;;
259276
file | import)
260277
import_file "${1:-}" "${2:-}"
261278
;;

0 commit comments

Comments
 (0)