More and better error logging.
This commit is contained in:
parent
f7e588dfae
commit
3cd4a072fd
11
dirlist.go
11
dirlist.go
|
@ -12,11 +12,11 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func generateDirectoryListing(URL *url.URL, path string, config Config) string {
|
func generateDirectoryListing(URL *url.URL, path string, config Config) (string, error) {
|
||||||
var listing string
|
var listing string
|
||||||
files, err := ioutil.ReadDir(path)
|
files, err := ioutil.ReadDir(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
return listing, err
|
||||||
}
|
}
|
||||||
listing = "# Directory listing\n\n"
|
listing = "# Directory listing\n\n"
|
||||||
// Override with .mollyhead file
|
// Override with .mollyhead file
|
||||||
|
@ -24,9 +24,10 @@ func generateDirectoryListing(URL *url.URL, path string, config Config) string {
|
||||||
_, err = os.Stat(header_path)
|
_, err = os.Stat(header_path)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
header, err := ioutil.ReadFile(header_path)
|
header, err := ioutil.ReadFile(header_path)
|
||||||
if err == nil {
|
if err != nil {
|
||||||
listing = string(header)
|
return listing, err
|
||||||
}
|
}
|
||||||
|
listing = string(header)
|
||||||
}
|
}
|
||||||
// Do "up" link first
|
// Do "up" link first
|
||||||
if URL.Path != "/" {
|
if URL.Path != "/" {
|
||||||
|
@ -62,7 +63,7 @@ func generateDirectoryListing(URL *url.URL, path string, config Config) string {
|
||||||
}
|
}
|
||||||
listing += fmt.Sprintf("=> %s %s\n", url.PathEscape(file.Name()), generatePrettyFileLabel(file, path, config))
|
listing += fmt.Sprintf("=> %s %s\n", url.PathEscape(file.Name()), generatePrettyFileLabel(file, path, config))
|
||||||
}
|
}
|
||||||
return listing
|
return listing, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func generatePrettyFileLabel(info os.FileInfo, path string, config Config) string {
|
func generatePrettyFileLabel(info os.FileInfo, path string, config Config) string {
|
||||||
|
|
|
@ -277,9 +277,16 @@ func serveDirectory(URL *url.URL, path string, log *LogEntry, conn net.Conn, con
|
||||||
serveFile(index_path, log, conn, config, errorLog)
|
serveFile(index_path, log, conn, config, errorLog)
|
||||||
// Serve a generated listing
|
// Serve a generated listing
|
||||||
} else {
|
} else {
|
||||||
|
listing, err := generateDirectoryListing(URL, path, config)
|
||||||
|
if err != nil {
|
||||||
|
errorLog.Println("Error generating listing for directory " + path + ": " + err.Error())
|
||||||
|
conn.Write([]byte("40 Server error!\r\n"))
|
||||||
|
log.Status = 40
|
||||||
|
return
|
||||||
|
}
|
||||||
conn.Write([]byte("20 text/gemini\r\n"))
|
conn.Write([]byte("20 text/gemini\r\n"))
|
||||||
log.Status = 20
|
log.Status = 20
|
||||||
conn.Write([]byte(generateDirectoryListing(URL, path, config)))
|
conn.Write([]byte(listing))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue