1
Fork 0
mirror of https://github.com/jech/galene.git synced 2024-11-22 16:45:58 +01:00

Minor tweaks to web server.

This commit is contained in:
Juliusz Chroboczek 2021-08-18 18:30:19 +02:00
parent 5db63685a2
commit 10becd3828

View file

@ -117,6 +117,7 @@ func httpError(w http.ResponseWriter, err error) {
http.Error(w, "403 forbidden", http.StatusForbidden) http.Error(w, "403 forbidden", http.StatusForbidden)
return return
} }
log.Printf("HTTP server error: %v", err)
http.Error(w, "500 Internal Server Error", http.Error(w, "500 Internal Server Error",
http.StatusInternalServerError) http.StatusInternalServerError)
return return
@ -200,6 +201,7 @@ func (fh *fileHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
index := path.Join(p, "index.html") index := path.Join(p, "index.html")
ff, err := fh.root.Open(index) ff, err := fh.root.Open(index)
if err != nil { if err != nil {
// return 403 if index.html doesn't exist
if os.IsNotExist(err) { if os.IsNotExist(err) {
err = os.ErrPermission err = os.ErrPermission
} }
@ -253,7 +255,7 @@ func parseGroupName(prefix string, p string) string {
return "" return ""
} }
name := p[len("/group/"):] name := p[len(prefix):]
if name == "" { if name == "" {
return "" return ""
} }
@ -280,8 +282,7 @@ func groupHandler(w http.ResponseWriter, r *http.Request) {
} }
if r.URL.Path != "/group/"+name { if r.URL.Path != "/group/"+name {
http.Redirect(w, r, "/group/"+name, http.Redirect(w, r, "/group/"+name, http.StatusPermanentRedirect)
http.StatusPermanentRedirect)
return return
} }
@ -298,8 +299,7 @@ func groupHandler(w http.ResponseWriter, r *http.Request) {
} }
if redirect := g.Redirect(); redirect != "" { if redirect := g.Redirect(); redirect != "" {
http.Redirect(w, r, redirect, http.Redirect(w, r, redirect, http.StatusPermanentRedirect)
http.StatusPermanentRedirect)
return return
} }
@ -414,13 +414,13 @@ func recordingsHandler(w http.ResponseWriter, r *http.Request) {
return return
} }
p = path.Clean(p)
if p == "/" { if p == "/" {
http.Error(w, "nothing to see", http.StatusForbidden) http.Error(w, "nothing to see", http.StatusForbidden)
return return
} }
p = path.Clean(p)
f, err := os.Open(filepath.Join(diskwriter.Directory, p)) f, err := os.Open(filepath.Join(diskwriter.Directory, p))
if err != nil { if err != nil {
httpError(w, err) httpError(w, err)
@ -556,6 +556,7 @@ func checkGroupPermissions(w http.ResponseWriter, r *http.Request, groupname str
} }
func serveGroupRecordings(w http.ResponseWriter, r *http.Request, f *os.File, group string) { func serveGroupRecordings(w http.ResponseWriter, r *http.Request, f *os.File, group string) {
// read early, so we return permission errors to HEAD
fis, err := f.Readdir(-1) fis, err := f.Readdir(-1)
if err != nil { if err != nil {
http.Error(w, "server error", http.StatusInternalServerError) http.Error(w, "server error", http.StatusInternalServerError)