experimental webdav upload
This commit is contained in:
parent
5e9ce5a306
commit
7570b09f9f
10 changed files with 47 additions and 2 deletions
|
|
@ -6,6 +6,7 @@ import (
|
|||
"bytes"
|
||||
"context"
|
||||
"errors"
|
||||
"git.giftfish.de/ston1th/authdav"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/core"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/db"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/fs"
|
||||
|
|
@ -14,6 +15,7 @@ import (
|
|||
"git.giftfish.de/ston1th/godrop/v2"
|
||||
"git.giftfish.de/ston1th/jwt/v3"
|
||||
"github.com/gorilla/mux"
|
||||
"golang.org/x/net/webdav"
|
||||
"html/template"
|
||||
"net"
|
||||
"net/http"
|
||||
|
|
@ -48,7 +50,6 @@ func NewHTTPServer(cfg core.Config, l net.Listener, s *scan.Scanner) (srv *HTTPS
|
|||
Scanner: s,
|
||||
Log: log.NewScanLog(0),
|
||||
}
|
||||
srv.handler = srv.buildRoutes()
|
||||
srv.loadTemplates()
|
||||
srv.srv = &http.Server{}
|
||||
return
|
||||
|
|
@ -75,6 +76,7 @@ func (s *HTTPServer) Start() (err error) {
|
|||
if err != nil {
|
||||
return errors.New("server: " + err.Error())
|
||||
}
|
||||
s.handler = s.buildRoutes()
|
||||
if !s.DB.UserExists() {
|
||||
log.Debug("server: starting register handler")
|
||||
s.srv.Handler = s.register()
|
||||
|
|
@ -107,6 +109,11 @@ func (s *HTTPServer) register() http.Handler {
|
|||
func (s *HTTPServer) buildRoutes() http.Handler {
|
||||
r := mux.NewRouter()
|
||||
r.NotFoundHandler = ¬FoundHandler{s}
|
||||
if s.Config.WebDav {
|
||||
fs := authdav.NewWriteOnlyOnceFileSystem(webdav.Dir(s.Config.DataDir))
|
||||
h := authdav.NewWebdavBasicAuth(core.WebDavPrefix, fs, nil, webdavLogger, s.DB, "DocStore WebDav")
|
||||
r.PathPrefix(core.WebDavPrefix).Handler(h)
|
||||
}
|
||||
for _, v := range routes {
|
||||
r.HandleFunc(v.Path, s.contextWrapper(v.Handler)).Methods(v.Methods...)
|
||||
}
|
||||
|
|
|
|||
14
pkg/server/webdav.go
Normal file
14
pkg/server/webdav.go
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"git.giftfish.de/ston1th/docstore/pkg/log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func webdavLogger(r *http.Request, err error) {
|
||||
if err != nil {
|
||||
log.Printf("webdav: %s %s %s error: %s\n", r.RemoteAddr, r.Method, r.URL, err)
|
||||
return
|
||||
}
|
||||
log.Printf("webdav: %s %s %s\n", r.RemoteAddr, r.Method, r.URL)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue