diff --git a/kernel/model/sync.go b/kernel/model/sync.go index 9f37a0fe2..91f978fea 100644 --- a/kernel/model/sync.go +++ b/kernel/model/sync.go @@ -475,6 +475,26 @@ func SetSyncProviderLocal(local *conf.Local) (err error) { local.Endpoint = strings.TrimSpace(local.Endpoint) local.Endpoint = util.NormalizeLocalPath(local.Endpoint) + absPath, err := filepath.Abs(local.Endpoint) + if nil != err { + msg := fmt.Sprintf("get endpoint [%s] abs path failed: %s", local.Endpoint, err) + logging.LogErrorf(msg) + err = errors.New(fmt.Sprintf(Conf.Language(77), msg)) + return + } + if !gulu.File.IsExist(absPath) { + msg := fmt.Sprintf("endpoint [%s] not exist", local.Endpoint+" ("+absPath+")") + logging.LogErrorf(msg) + err = errors.New(fmt.Sprintf(Conf.Language(77), msg)) + return + } + if util.IsAbsPathInWorkspace(absPath) { + msg := fmt.Sprintf("endpoint [%s] is in workspace", local.Endpoint+" ("+absPath+")") + logging.LogErrorf(msg) + err = errors.New(fmt.Sprintf(Conf.Language(77), msg)) + return + } + local.Timeout = util.NormalizeTimeout(local.Timeout) local.ConcurrentReqs = util.NormalizeConcurrentReqs(local.ConcurrentReqs, conf.ProviderLocal)