MCPcopy Create free account
hub / github.com/0xUnixIO/pulse / doSyncNodeSNIProxy

Method doSyncNodeSNIProxy

internal/serverapi/sniproxy.go:18–52  ·  view source on GitHub ↗

doSyncNodeSNIProxy 从当前数据库状态生成节点的 sniproxy 配置并推送。 统一调用 jobs.BuildSNIProxySyncReq,与 ApplyNodeUsers 内的自动下发走同一套 builder 避免两份逻辑漂移。

(ctx context.Context, nodeID string)

Source from the content-addressed store, hash-verified

16// 统一调用 jobs.BuildSNIProxySyncReq,与 ApplyNodeUsers 内的自动下发走同一套
17// builder 避免两份逻辑漂移。
18func (a *API) doSyncNodeSNIProxy(ctx context.Context, nodeID string) error {
19 client, err := a.clientFor(nodeID)
20 if err != nil {
21 return err
22 }
23
24 node, err := a.store.Get(nodeID)
25 if err != nil {
26 return err
27 }
28
29 nodeInbounds, err := a.inboundStore.ListInboundsByNode(nodeID)
30 if err != nil {
31 return err
32 }
33
34 allNodeMap := make(map[string]nodes.Node)
35 if list, nErr := a.store.List(); nErr == nil {
36 for _, n := range list {
37 allNodeMap[n.ID] = n
38 }
39 }
40
41 cfToken := ""
42 if a.settings != nil {
43 if tok, _ := a.settings.GetSetting("cf_token"); tok != "" {
44 cfToken = strings.TrimSpace(tok)
45 }
46 }
47
48 req := jobs.BuildSNIProxySyncReq(node, nodeInbounds, a.inboundStore, allNodeMap, cfToken, ServerPort())
49 log.Printf("sniproxy sync node=%s routes=%d cf_token_set=%v",
50 nodeID, len(req.Routes), cfToken != "")
51 return client.SyncSNIProxy(ctx, req)
52}
53
54// handleNodeSNIProxySync 暴露给面板的手动同步入口,POST /v1/nodes/{id}/sniproxy/sync。
55// 处理节点 NodeGate (sniproxy) 同步请求。

Callers 2

TriggerNodeSyncMethod · 0.95

Calls 8

clientForMethod · 0.95
BuildSNIProxySyncReqFunction · 0.92
ServerPortFunction · 0.85
SyncSNIProxyMethod · 0.80
GetMethod · 0.65
ListInboundsByNodeMethod · 0.65
ListMethod · 0.65
GetSettingMethod · 0.65

Tested by

no test coverage detected