From 00b4153a28c309ee3b9c914c3e80174f871e2fe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sun, 19 May 2024 04:27:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=BD=AF=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/http/controllers/file_controller.go | 16 ++++++++-------- pkg/tools/system.go | 9 +++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/http/controllers/file_controller.go b/app/http/controllers/file_controller.go index 242f71eb..2b2c6d88 100644 --- a/app/http/controllers/file_controller.go +++ b/app/http/controllers/file_controller.go @@ -481,12 +481,7 @@ func (r *FileController) List(ctx http.Context) http.Response { var paths []any for _, fileInfo := range fileInfoList { info, _ := fileInfo.Info() - var owner, group string - stat, ok := info.Sys().(*syscall.Stat_t) - if ok { - owner = tools.GetUser(stat.Uid) - group = tools.GetGroup(stat.Gid) - } + stat := info.Sys().(*syscall.Stat_t) paths = append(paths, map[string]any{ "name": info.Name(), @@ -494,8 +489,13 @@ func (r *FileController) List(ctx http.Context) http.Response { "size": tools.FormatBytes(float64(info.Size())), "mode_str": info.Mode().String(), "mode": fmt.Sprintf("%04o", info.Mode().Perm()), - "owner": owner, - "group": group, + "owner": tools.GetUser(stat.Uid), + "group": tools.GetGroup(stat.Gid), + "uid": stat.Uid, + "gid": stat.Gid, + "hidden": tools.IsHidden(info.Name()), + "symlink": tools.IsSymlink(info.Mode()), + "link": tools.GetSymlink(filepath.Join(request.Path, info.Name())), "dir": info.IsDir(), "modify": carbon.FromStdTime(info.ModTime()).ToDateTimeString(), }) diff --git a/pkg/tools/system.go b/pkg/tools/system.go index 7c67ef06..6cbb7488 100644 --- a/pkg/tools/system.go +++ b/pkg/tools/system.go @@ -272,6 +272,15 @@ func IsHidden(path string) bool { return strings.HasPrefix(file, ".") } +// GetSymlink 获取软链接目标 +func GetSymlink(path string) string { + linkPath, err := os.Readlink(path) + if err != nil { + return "" + } + return linkPath +} + // GetUser 通过 uid 获取用户名 func GetUser(uid uint32) string { usr, err := user.LookupId(cast.ToString(uid))