feat: webdav for sharepoint online (#460)

This commit is contained in:
Xhofe
2022-04-11 21:32:38 +08:00
parent 395de069c2
commit 8e059c64b5
5 changed files with 85 additions and 28 deletions

View File

@ -5,7 +5,6 @@ import (
"github.com/Xhofe/alist/drivers/webdav/odrvcookie"
"github.com/Xhofe/alist/model"
"github.com/Xhofe/alist/utils"
"github.com/Xhofe/alist/utils/cookie"
log "github.com/sirupsen/logrus"
"github.com/studio-b12/gowebdav"
"net/http"
@ -14,20 +13,15 @@ import (
func (driver WebDav) NewClient(account *model.Account) *gowebdav.Client {
c := gowebdav.NewClient(account.SiteUrl, account.Username, account.Password)
if account.InternalType == "sharepoint" {
ca := odrvcookie.New(account.Username, account.Password, account.SiteUrl)
tokenConf, err := ca.Cookies()
log.Debugln(err, tokenConf)
if err != nil {
if isSharePoint(account) {
cookie, err := odrvcookie.GetCookie(account.Username, account.Password, account.SiteUrl)
log.Debugln(cookie, err)
if err == nil {
log.Debugln("set interceptor")
c.SetInterceptor(func(method string, rq *http.Request) {
rq.Header.Del("Authorization")
//rq.AddCookie(&tokenConf.FedAuth)
//rq.AddCookie(&tokenConf.RtFa)
rq.Header.Set("Cookie", cookie.ToString([]*http.Cookie{&tokenConf.RtFa, &tokenConf.FedAuth}))
if method == "PROPFIND" {
rq.Header.Set("Depth", "0")
}
rq.Header.Set("Cookie", cookie)
log.Debugf("sp webdav req: %+v", rq)
})
}
}