triggerUserApply 找出用户关联的所有节点并异步重新下发配置,用于凭证变更后生效。 实际下发是异步的(applyNodes 内部 go func + context.Background),调用方无法通过 ctx 控制; 这里不接收 ctx 以避免误导。
(userID string)
| 805 | // 实际下发是异步的(applyNodes 内部 go func + context.Background),调用方无法通过 ctx 控制; |
| 806 | // 这里不接收 ctx 以避免误导。 |
| 807 | func (a *userAPI) triggerUserApply(userID string) error { |
| 808 | inbounds, err := a.users.ListUserInboundsByUser(userID) |
| 809 | if err != nil { |
| 810 | return err |
| 811 | } |
| 812 | seen := make(map[string]struct{}) |
| 813 | var nodeIDs []string |
| 814 | for _, ib := range inbounds { |
| 815 | if _, dup := seen[ib.NodeID]; !dup { |
| 816 | seen[ib.NodeID] = struct{}{} |
| 817 | nodeIDs = append(nodeIDs, ib.NodeID) |
| 818 | } |
| 819 | } |
| 820 | a.applyNodes(nodeIDs) |
| 821 | return nil |
| 822 | } |
| 823 | |
| 824 | // applyNodes pushes config to affected nodes after inbound association changes. |
| 825 | func (a *userAPI) applyNodes(nodeIDs []string) { |
no test coverage detected