From d17040df0bac12c56f3b3a36228cfb608fd6f976 Mon Sep 17 00:00:00 2001 From: Pierre Dubouilh Date: Sat, 18 Jan 2025 21:14:21 +0100 Subject: [PATCH] fixup symlinks listing appearance closes #123 --- gossa.go | 9 +++++---- gossa_test.go | 7 +++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gossa.go b/gossa.go index 8054290..a5e42ce 100644 --- a/gossa.go +++ b/gossa.go @@ -106,8 +106,9 @@ func replyList(w http.ResponseWriter, r *http.Request, fullPath string, path str p.Title = template.HTML(html.EscapeString(title)) for _, el := range files { - info, err := el.Info() - if err != nil { + info, errInfo := el.Info() + el, err := os.Stat(fullPath + "/" + el.Name()) + if err != nil || errInfo != nil { log.Println("error - cant stat a file", err) continue } @@ -115,7 +116,7 @@ func replyList(w http.ResponseWriter, r *http.Request, fullPath string, path str if *skipHidden && strings.HasPrefix(el.Name(), ".") { 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 } @@ -132,7 +133,7 @@ func replyList(w http.ResponseWriter, r *http.Request, fullPath string, path str } else { sl := strings.Split(name, ".") 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) } } diff --git a/gossa_test.go b/gossa_test.go index d388993..2c06ab2 100644 --- a/gossa_test.go +++ b/gossa_test.go @@ -238,6 +238,8 @@ func doTestRegular(t *testing.T, url string, testExtra bool) { hasListing := strings.Contains(body0, `readme.md`) body1 = get(t, url+"/support/readme.md") hasReadme := strings.Contains(body1, `the master branch is automatically built and pushed`) + body2 = get(t, url) + hasMainListing := strings.Contains(body2, `href="support">support/`) if !testExtra && hasReadme { 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 { 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 { fmt.Println("\r\n~~~~~~~~~~ test symlink mkdir & cleanup")