flipped-aurora/gin-vue-admin · error
服务端目录无效: %w
Error message
服务端目录无效: %w
What it means
Thrown by newAutoCodeTaskLayout when pathWithin(root, server) rejects the configured server subdirectory — meaning the server path escapes or is outside the auto-code root, an unsafe sandbox violation for staging generated files.
Source
Thrown at server/service/system/auto_code_task.go:58
Kind string
Existed bool
Mode fs.FileMode
BeforeHash string
AfterHash string
BeforeContent []byte
StagedPath string
}
type autoCodeFilePublisher func(file *autoCodeTaskFile) (published bool, err error)
func newAutoCodeTaskLayout(root, server, web string) (autoCodeTaskLayout, error) {
root, err := filepath.Abs(root)
if err != nil {
return autoCodeTaskLayout{}, fmt.Errorf("解析自动代码根目录失败: %w", err)
}
serverRoot, err := pathWithin(root, server)
if err != nil {
return autoCodeTaskLayout{}, fmt.Errorf("服务端目录无效: %w", err)
}
webRoot, err := pathWithin(root, web)
if err != nil {
return autoCodeTaskLayout{}, fmt.Errorf("前端目录无效: %w", err)
}
return autoCodeTaskLayout{
root: filepath.Clean(root),
serverRoot: serverRoot,
webRoot: webRoot,
}, nil
}
func prepareAutoCodeFileTask(layout autoCodeTaskLayout, files map[string][]byte) (_ *autoCodeFileTask, err error) {
stagingDir, err := os.MkdirTemp(layout.root, autoCodeStagingPrefix)
if err != nil {
return nil, fmt.Errorf("创建自动代码 staging 目录失败: %w", err)
}
task := &autoCodeFileTask{View on GitHub (pinned to 3136500ef3)
Solutions
- Set the server path to a plain relative subdirectory inside the auto-code root (e.g. 'server').
- Remove '..' segments and symlink hops; verify with filepath.EvalSymlinks.
- Check the config file for the autoCode server setting and correct it.
Example fix
// before (config) autoCode: server: ../outside-server // after autoCode: server: server
Defensive patterns
Strategy: validation
Validate before calling
srvAbs, _ := filepath.Abs(server)
rootAbs, _ := filepath.Abs(root)
if !strings.HasPrefix(srvAbs+string(os.PathSeparator), rootAbs+string(os.PathSeparator)) {
return fmt.Errorf("server path %s escapes root %s", srvAbs, rootAbs)
} Try / catch
layout, err := newAutoCodeTaskLayout(root, server, web)
if err != nil {
return fmt.Errorf("invalid autoCode config: %w", err)
} Prevention
- Keep server/web config values as plain relative subpaths.
- Audit config for '..' or absolute paths.
- Avoid symlinks inside the generated tree.
When it happens
Trigger: Create (or the layout test) is invoked with a server-relative path that resolves outside the resolved root: absolute paths, '..' segments, or symlinked directories that escape the root.
Common situations: Config's server path edited to an absolute path like /etc or ../other; symlinks in the project tree causing filepath eval to escape root; OS path separator mistakes on Windows-style config values.
Related errors
AI-assisted analysis of flipped-aurora/gin-vue-admin@3136500ef3 (2026-08-31).
Data as JSON: /api/errors/20b23e5dc8b24ca1.
Report an issue: GitHub.