Files
Prism/internal/mihomoapi/chain.go
T
rose_cat707 c26b06f1cc
CI / test (push) Successful in 1m11s
CI / docker (push) Failing after 17s
feat: Prism HTTP/SOCKS5 代理网关及管理台
Go 控制面(SQLite + REST API)嵌入 Mihomo 数据面,Vue 3 多语言 Web 管理台。
含订阅/节点/规则/出站/监控/日志、OpenAPI、API Key、Gitea Actions CI 与开源文档;
CI 使用 ubuntu-latest runner,Go/Docker 步骤走国内镜像与 shell,避免 GitHub 下载超时。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 14:07:40 +08:00

41 lines
893 B
Go

package mihomoapi
var leafOutbounds = map[string]bool{
"DIRECT": true,
"REJECT": true,
"REJECT-DROP": true,
}
// ResolveLeafOutbound returns the actual proxy node from a Mihomo chains path.
// Policy groups are appended after the leaf dial, so the last chain entry is often a group name.
func ResolveLeafOutbound(chains []string, policyGroups map[string]bool) string {
if len(chains) == 0 {
return ""
}
for i := len(chains) - 1; i >= 0; i-- {
name := chains[i]
if leafOutbounds[name] {
return name
}
if policyGroups != nil && policyGroups[name] {
continue
}
return name
}
return chains[len(chains)-1]
}
func ChainStringsFromAny(raw any) []string {
arr, ok := raw.([]any)
if !ok {
return nil
}
out := make([]string, 0, len(arr))
for _, item := range arr {
if s, ok := item.(string); ok && s != "" {
out = append(out, s)
}
}
return out
}