{"record":{"id":"96b6cb87e12407eb","repo":"siyuan-note/siyuan","slug":"conf-language-194","errorCode":null,"errorMessage":"Conf.Language(194)","messagePattern":"Conf\\.Language\\(194\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kernel/model/sync.go","lineNumber":669,"sourceCode":"\tif strings.Contains(rawEndpoint, \"://\") && !strings.HasPrefix(rawEndpoint, \"http://\") && !strings.HasPrefix(rawEndpoint, \"https://\") {\n\t\treturn errors.New(Conf.Language(249))\n\t}\n\tendpoint, err := url.Parse(util.NormalizeEndpoint(rawEndpoint))\n\tif err != nil || endpoint.Hostname() == \"\" || (endpoint.Scheme != \"http\" && endpoint.Scheme != \"https\") {\n\t\treturn errors.New(Conf.Language(249))\n\t}\n\treturn nil\n}\n\nfunc SetSyncProviderWebDAV(webdav *conf.WebDAV) (err error) {\n\trelease := lockAssetSourceChange()\n\tdefer release()\n\twebdav.Endpoint = strings.TrimSpace(webdav.Endpoint)\n\twebdav.Endpoint = util.NormalizeEndpoint(webdav.Endpoint)\n\n\t// 不支持配置坚果云 WebDAV 进行同步 https://github.com/siyuan-note/siyuan/issues/7657\n\tif strings.Contains(strings.ToLower(webdav.Endpoint), \"dav.jianguoyun.com\") {\n\t\terr = errors.New(Conf.Language(194))\n\t\treturn\n\t}\n\n\twebdav.Username = strings.TrimSpace(webdav.Username)\n\twebdav.Password = strings.TrimSpace(webdav.Password)\n\twebdav.Timeout = util.NormalizeTimeout(webdav.Timeout)\n\twebdav.ConcurrentReqs = util.NormalizeConcurrentReqs(webdav.ConcurrentReqs, conf.ProviderWebDAV)\n\tif Conf.Sync.Provider == conf.ProviderWebDAV && (Conf.Sync.WebDAV == nil ||\n\t\tConf.Sync.WebDAV.Endpoint != webdav.Endpoint || Conf.Sync.WebDAV.Username != webdav.Username) {\n\t\tif err = requireCompleteAssetDownloads(); err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tConf.Sync.WebDAV = webdav\n\tConf.Save()\n\trefreshLANSyncManager()\n\treturn","sourceCodeStart":651,"sourceCodeEnd":687,"githubUrl":"https://github.com/siyuan-note/siyuan/blob/9f775e8a12daef8255556097396f9b2739078892/kernel/model/sync.go#L651-L687","documentation":"SetSyncProviderWebDAV explicitly refuses Jianguoyun (坚果云) WebDAV endpoints by checking whether the normalized endpoint contains \"dav.jianguoyun.com\"; on a match it returns Conf.Language(194), the localized message that Jianguoyun WebDAV is not supported for syncing (issue #7657). Jianguoyun rate-limits and does not tolerate the request pattern the sync engine generates, so the kernel blocks it up front.","triggerScenarios":"Calling SetSyncProviderWebDAV (via the setSyncProviderWebDAVContract or importSyncProviderWebDAVContract API handlers) with webdav.Endpoint containing dav.jianguoyun.com (case-insensitive), e.g. \"https://dav.jianguoyun.com/dav/\".","commonSituations":"Chinese users configuring their Jianguoyun account's app-password WebDAV as a sync target; migrating configs from another sync tool that allowed Jianguoyun; following older tutorials recommending Jianguoyun for SiYuan sync.","solutions":["Choose a different WebDAV provider (self-hosted WebDAV/Nextcloud, InfiniCloud, Alist, etc.)","Use S3-compatible storage or the local-folder sync provider instead","Use SiYuan's official cloud sync service (siyuan-note membership sync)","Do not attempt to bypass the check by URL tricks — Jianguoyun will throttle/fail sync operations anyway"],"exampleFix":"// before\nEndpoint: \"https://dav.jianguoyun.com/dav/\"\n// after\nEndpoint: \"https://dav.example-owncloud.example.com/remote.php/dav\"","handlingStrategy":"validation","validationCode":"if strings.Contains(strings.ToLower(endpoint), \"dav.jianguoyun.com\") {\n\treturn errors.New(\"Jianguoyun WebDAV is not supported for sync\")\n}","typeGuard":null,"tryCatchPattern":"if err := model.SetSyncProviderWebDAV(cfg); err != nil {\n\tif strings.Contains(err.Error(), \"Language(194)\") || strings.Contains(cfg.Endpoint, \"jianguoyun\") {\n\t\t// prompt user to choose a different WebDAV provider\n\t}\n}","preventionTips":["Do not configure Jianguoyun as a WebDAV sync target","Check the endpoint domain before submitting WebDAV settings","Use supported providers: self-hosted WebDAV, Nextcloud, S3-compatible storage, or official cloud sync"],"tags":["webdav","unsupported-provider","sync","config-validation"],"backgroundTag":"unsupported-operation","analyzedSha":"9f775e8a12daef8255556097396f9b2739078892","analyzedAt":"2026-09-19T03:17:15.984Z","contentChangedAt":"2026-09-19T03:17:15.984Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}