func (v visit) visitFile(fp string, fi os.FileInfo, err error) error { var res common.JSONResult var file common.JSONFile if err != nil { res = common.JSONResult{Result: "ko", Message: err.Error()} res.Send(v.connection) return nil } if v.exclude != "" && isMatch(v.exclude, fp) { return nil } // Set the file name and the operating system file.Name = fp file.Os = runtime.GOOS file.Mtime = fi.ModTime().Unix() if runtime.GOOS != "windows" { file.User, _ = getUserName(fi) file.Group, _ = getGroupName(fi) file.Mode = fi.Mode().String() file.Ctime = getCtime(fi) } // Set type of element (file or directory) if fi.IsDir() { file.Type = "directory" file.Size = fi.Size() } else if fi.Mode()&os.ModeSymlink == os.ModeSymlink { file.Type = "symlink" file.Size = fi.Size() link, err := os.Readlink(fp) if err != nil { v.log.Debug("Error when readlink for " + fp + ": " + err.Error()) } else { file.Link = link } } else { file.Type = "file" file.Size = fi.Size() file.Hash = hex.EncodeToString(common.Md5(fp)) } if v.acl && file.Type != "symlink" { if runtime.GOOS != "windows" { fa := FileACL(fp) file.Acl = fa.List(v.log) } } // Set result res.Result = "ok" res.Data = file res.Send(v.connection) return nil }