Files
Prism/internal/mihomoapi/chain.go
T
rose_cat707 fc3a66dc83
CI / docker (push) Has been cancelled
CI / test (push) Has been cancelled
feat: Prism HTTP/SOCKS5 代理网关及管理台
Go 控制面(SQLite + REST API)嵌入 Mihomo 数据面,Vue 3 多语言 Web 管理台。
含订阅/节点/规则/出站/监控/日志、OpenAPI、API Key、Gitea Actions CI(runs-on: ubuntu-latest)
与开源文档;镜像发布至 git.rc707blog.top Container Registry。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 13:41:56 +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
}