fixup symlinks listing appearance

closes #123
This commit is contained in:
Pierre Dubouilh 2025-01-18 21:14:21 +01:00 committed by Pierre Dubouilh
parent 1cac56abfa
commit d17040df0b
2 changed files with 12 additions and 4 deletions

View file

@ -106,8 +106,9 @@ func replyList(w http.ResponseWriter, r *http.Request, fullPath string, path str
p.Title = template.HTML(html.EscapeString(title)) p.Title = template.HTML(html.EscapeString(title))
for _, el := range files { for _, el := range files {
info, err := el.Info() info, errInfo := el.Info()
if err != nil { el, err := os.Stat(fullPath + "/" + el.Name())
if err != nil || errInfo != nil {
log.Println("error - cant stat a file", err) log.Println("error - cant stat a file", err)
continue continue
} }
@ -115,7 +116,7 @@ func replyList(w http.ResponseWriter, r *http.Request, fullPath string, path str
if *skipHidden && strings.HasPrefix(el.Name(), ".") { if *skipHidden && strings.HasPrefix(el.Name(), ".") {
continue // dont print hidden files if we're not allowed continue // dont print hidden files if we're not allowed
} }
if *symlinks && info.Mode()&os.ModeSymlink != 0 { if !*symlinks && info.Mode()&os.ModeSymlink != 0 {
continue // dont follow symlinks if we're not allowed continue // dont follow symlinks if we're not allowed
} }
@ -132,7 +133,7 @@ func replyList(w http.ResponseWriter, r *http.Request, fullPath string, path str
} else { } else {
sl := strings.Split(name, ".") sl := strings.Split(name, ".")
ext := strings.ToLower(sl[len(sl)-1]) ext := strings.ToLower(sl[len(sl)-1])
row := rowTemplate{name, template.URL(href), humanize(info.Size()), ext} row := rowTemplate{name, template.URL(href), humanize(el.Size()), ext}
p.RowsFiles = append(p.RowsFiles, row) p.RowsFiles = append(p.RowsFiles, row)
} }
} }

View file

@ -238,6 +238,8 @@ func doTestRegular(t *testing.T, url string, testExtra bool) {
hasListing := strings.Contains(body0, `readme.md`) hasListing := strings.Contains(body0, `readme.md`)
body1 = get(t, url+"/support/readme.md") body1 = get(t, url+"/support/readme.md")
hasReadme := strings.Contains(body1, `the master branch is automatically built and pushed`) hasReadme := strings.Contains(body1, `the master branch is automatically built and pushed`)
body2 = get(t, url)
hasMainListing := strings.Contains(body2, `href="support">support/</a>`)
if !testExtra && hasReadme { if !testExtra && hasReadme {
t.Fatal("error symlink file reached where illegal") t.Fatal("error symlink file reached where illegal")
@ -249,6 +251,11 @@ func doTestRegular(t *testing.T, url string, testExtra bool) {
} else if testExtra && !hasListing { } else if testExtra && !hasListing {
t.Fatal("error symlink folder unreachable") t.Fatal("error symlink folder unreachable")
} }
if !testExtra && hasMainListing {
t.Fatal("error symlink folder where illegal")
} else if testExtra && !hasMainListing {
t.Fatal("error symlink folder unreachable")
}
if testExtra { if testExtra {
fmt.Println("\r\n~~~~~~~~~~ test symlink mkdir & cleanup") fmt.Println("\r\n~~~~~~~~~~ test symlink mkdir & cleanup")