implemented authorization

This commit is contained in:
Altair-sh
2026-11-04 17:08:55 +01:00
parent beff40ae8c
commit 7987c9e580
8 changed files with 124 additions and 11 deletions
+13 -4
View File
@@ -11,17 +11,26 @@ import (
func (conn *TcpConnection) serveFileOrDir(req *http.Request) *http.Response {
path, share, urlStatus := conn.srv.Conf.Share.MapUrl(req.Url)
// TODO implement authorization
_ = share
// handle authorization
if share != nil {
access := checkSharePasswords(share, req)
if access < AccessReadOnly {
return conn.createErrorResponse(req, false, http.StatusUnauthorized,
"authorization required").
WithHeader("www-authenticate",
`Basic realm="`+share.Url+`", charset="UTF-8"`)
}
}
switch urlStatus {
case UrlFile:
return conn.serveFile(req, path)
case UrlDir:
return conn.serveDirListing(req, path)
case UrlNotFound:
return conn.createErrorResponse(req, false, http.StatusNotFound, path)
return conn.createErrorResponse(req, false, http.StatusNotFound, req.Url)
case UrlForbidden:
return conn.createErrorResponse(req, false, http.StatusForbidden, path)
return conn.createErrorResponse(req, false, http.StatusForbidden, req.Url)
case UrlIncorrect:
return conn.createErrorResponse(req, false, http.StatusBadRequest,
"invalid url '"+req.Url+"'")