-/*
-godlighty -- highly-customizable HTTP, HTTP/2, HTTPS server
-Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, version 3 of the License.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
+// godlighty -- highly-customizable HTTP, HTTP/2, HTTPS server
+// Copyright (C) 2021-2024 Sergey Matveev <stargrave@stargrave.org>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
package godlighty
"html/template"
"io/fs"
"os"
+ "path"
"sort"
"time"
IsDir bool
Type string
ModTime string
+ Symlink string
}
func dirList(
cfg *HostCfg,
- dir string,
+ dir, pth string,
entries []os.DirEntry,
readme string,
) (*os.File, error) {
if fi.IsDir() {
file.IsDir = true
} else {
- file.Type = mediaType(file.Name, cfg.MIMEOverride)
+ file.Type = mediaType(file.Name, cfg.MIMEs)
+ }
+ if (entry.Type() & fs.ModeSymlink) > 0 {
+ file.Symlink, _ = os.Readlink(path.Join(pth, fi.Name()))
}
files = append(files, file)
}