diff --git a/internal/nodes/node_tasks.go b/internal/nodes/node_tasks.go index 2fdfab5..09c13ed 100644 --- a/internal/nodes/node_tasks.go +++ b/internal/nodes/node_tasks.go @@ -17,6 +17,7 @@ import ( "github.com/TeaOSLab/EdgeNode/internal/remotelogs" "github.com/TeaOSLab/EdgeNode/internal/rpc" "github.com/TeaOSLab/EdgeNode/internal/trackers" + "github.com/TeaOSLab/EdgeNode/internal/utils" "github.com/TeaOSLab/EdgeNode/internal/waf" "github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/maps" @@ -298,7 +299,7 @@ func (this *Node) execUpdatingServersTask(rpcClient *rpc.RPCClient) error { // 删除IP名单 func (this *Node) execDeleteIPList(taskType string) error { - optionsString, ok := strings.CutPrefix(taskType, "ipListDeleted@") + optionsString, ok := utils.CutPrefix(taskType, "ipListDeleted@") if !ok { return errors.New("invalid task type '" + taskType + "'") } diff --git a/internal/utils/string.go b/internal/utils/string.go index dc3745c..4026a98 100644 --- a/internal/utils/string.go +++ b/internal/utils/string.go @@ -56,3 +56,16 @@ func EqualStrings(s1 []string, s2 []string) bool { } return true } + +// CutPrefix returns s without the provided leading prefix string +// and reports whether it found the prefix. +// If s doesn't start with prefix, CutPrefix returns s, false. +// If prefix is the empty string, CutPrefix returns s, true. +// +// copy from go source +func CutPrefix(s, prefix string) (after string, found bool) { + if !strings.HasPrefix(s, prefix) { + return s, false + } + return s[len(prefix):], true +}