logger and fs update for requestwriter
This commit is contained in:
parent
5714cb2f8b
commit
ae81f1b488
2 changed files with 16 additions and 15 deletions
|
@ -3,7 +3,6 @@ package fileserver
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"mime"
|
||||
"os"
|
||||
|
@ -18,34 +17,34 @@ var (
|
|||
ErrUnsupportedFileType = errors.New("disabled/unsupported file type")
|
||||
)
|
||||
|
||||
func Serve(root string, autoindex bool) func(w io.Writer, r *gemini.Request) {
|
||||
return func(w io.Writer, r *gemini.Request) {
|
||||
func Serve(root string, autoindex bool) func(w gemini.ResponseWriter, r *gemini.Request) {
|
||||
return func(w gemini.ResponseWriter, r *gemini.Request) {
|
||||
fullpath, err := fullPath(root, r.URL.Path)
|
||||
if err != nil {
|
||||
if errors.Is(err, ErrDirWithoutIndexFile) && autoindex {
|
||||
body, mimeType, err := listDirectory(fullpath, r.URL.Path)
|
||||
if err != nil {
|
||||
gemini.WriteHeader(w, gemini.StatusNotFound, err.Error())
|
||||
w.WriteHeader(gemini.StatusNotFound, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
gemini.WriteHeader(w, gemini.StatusSuccess, mimeType)
|
||||
gemini.Write(w, body)
|
||||
w.WriteHeader(gemini.StatusSuccess, mimeType)
|
||||
w.Write(body)
|
||||
return
|
||||
}
|
||||
|
||||
gemini.WriteHeader(w, gemini.StatusNotFound, err.Error())
|
||||
w.WriteHeader(gemini.StatusNotFound, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
body, mimeType, err := readFile(fullpath)
|
||||
if err != nil {
|
||||
gemini.WriteHeader(w, gemini.StatusNotFound, err.Error())
|
||||
w.WriteHeader(gemini.StatusNotFound, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
gemini.WriteHeader(w, gemini.StatusSuccess, mimeType)
|
||||
gemini.Write(w, body)
|
||||
w.WriteHeader(gemini.StatusSuccess, mimeType)
|
||||
w.Write(body)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ package middleware
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
|
@ -11,20 +10,23 @@ import (
|
|||
"github.com/n0x1m/gmifs/gemini"
|
||||
)
|
||||
|
||||
func Logger(log *log.Logger) func(next gemini.Handler) gemini.Handler {
|
||||
func Logger(log *log.Logger) func(gemini.Handler) gemini.Handler {
|
||||
return func(next gemini.Handler) gemini.Handler {
|
||||
fn := func(w io.Writer, r *gemini.Request) {
|
||||
fn := func(w gemini.ResponseWriter, r *gemini.Request) {
|
||||
t := time.Now()
|
||||
|
||||
next.ServeGemini(w, r)
|
||||
ri := gemini.NewInterceptor(w)
|
||||
next.ServeGemini(ri, r)
|
||||
ri.Flush()
|
||||
|
||||
ip := strings.Split(r.RemoteAddr, ":")[0]
|
||||
hostname, _ := os.Hostname()
|
||||
fmt.Fprintf(log.Writer(), "%s %s - - [%s] \"%s\" - %v\n",
|
||||
fmt.Fprintf(log.Writer(), "%s %s - - [%s] \"%s\" %d - %v\n",
|
||||
hostname,
|
||||
ip,
|
||||
t.Format("02/Jan/2006:15:04:05 -0700"),
|
||||
r.URL.Path,
|
||||
ri.Code,
|
||||
time.Since(t),
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue