Skip to content

Commit 3e6c2b0

Browse files
committed
feat(serverHandler/responseData): dereference symbol links
1 parent 8bfa372 commit 3e6c2b0

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/serverHandler/responseData.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,23 @@ func (h *handler) statIndexFile(rawReqPath, baseDir string, baseItem os.FileInfo
276276
return nil, nil, nil
277277
}
278278

279+
func dereferenceSymbolLinks(reqFsPath string, subItems []os.FileInfo) (errs []error) {
280+
baseFsPath := reqFsPath + "/"
281+
282+
for i := range subItems {
283+
if subItems[i].Mode()&os.ModeSymlink != 0 {
284+
dereferencedItem, err := os.Stat(baseFsPath + subItems[i].Name())
285+
if err != nil {
286+
errs = append(errs, err)
287+
} else {
288+
subItems[i] = dereferencedItem
289+
}
290+
}
291+
}
292+
293+
return
294+
}
295+
279296
func (h *handler) getResponseData(r *http.Request) *responseData {
280297
var errs []error
281298

@@ -363,6 +380,11 @@ func (h *handler) getResponseData(r *http.Request) *responseData {
363380
status = http.StatusInternalServerError
364381
}
365382

383+
_dereferenceErrs := dereferenceSymbolLinks(reqFsPath, subItems)
384+
if len(_dereferenceErrs) > 0 {
385+
errs = append(errs, _dereferenceErrs...)
386+
}
387+
366388
subItems = h.FilterItems(subItems)
367389
rawSortBy, sortState := sortInfos(subItems, rawQuery, h.defaultSort)
368390

0 commit comments

Comments
 (0)