From 16ec8b82ce38fea707b0d3a7c3bb859256fa6a68 Mon Sep 17 00:00:00 2001 From: Florian Schade Date: Tue, 1 Mar 2022 08:14:29 +0100 Subject: [PATCH] get rid of public link url hash --- changelog/unreleased/change-public-link-hash.md | 7 +++++++ internal/http/services/owncloud/ocdav/ocdav.go | 5 +++-- internal/http/services/owncloud/ocs/conversions/main.go | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 changelog/unreleased/change-public-link-hash.md diff --git a/changelog/unreleased/change-public-link-hash.md b/changelog/unreleased/change-public-link-hash.md new file mode 100644 index 00000000000..7b083922c21 --- /dev/null +++ b/changelog/unreleased/change-public-link-hash.md @@ -0,0 +1,7 @@ +Change: Remove hash from public link urls + +Public link urls do not contain the hash anymore, this is needed to support the ocis and web history mode. + +https://github.com/cs3org/reva/pull/2596 +https://github.com/owncloud/ocis/pull/3109 +https://github.com/owncloud/web/pull/6363 diff --git a/internal/http/services/owncloud/ocdav/ocdav.go b/internal/http/services/owncloud/ocdav/ocdav.go index fd1303e1a11..e925a645fb3 100644 --- a/internal/http/services/owncloud/ocdav/ocdav.go +++ b/internal/http/services/owncloud/ocdav/ocdav.go @@ -229,8 +229,9 @@ func (s *svc) Handler() http.Handler { head, r.URL.Path = router.ShiftPath(r.URL.Path) if head == "s" { token := r.URL.Path - url := s.c.PublicURL + path.Join("#", head, token) - http.Redirect(w, r, url, http.StatusMovedPermanently) + rURL := s.c.PublicURL + path.Join(head, token) + + http.Redirect(w, r, rURL, http.StatusMovedPermanently) return } } diff --git a/internal/http/services/owncloud/ocs/conversions/main.go b/internal/http/services/owncloud/ocs/conversions/main.go index 450dd2f7e57..cda5b94a921 100644 --- a/internal/http/services/owncloud/ocs/conversions/main.go +++ b/internal/http/services/owncloud/ocs/conversions/main.go @@ -23,6 +23,7 @@ import ( "context" "fmt" "net/http" + "net/url" "path" "time" @@ -205,6 +206,9 @@ func CS3Share2ShareData(ctx context.Context, share *collaboration.Share) (*Share // PublicShare2ShareData converts a cs3api public share into shareData data model func PublicShare2ShareData(share *link.PublicShare, r *http.Request, publicURL string) *ShareData { + sdURL, _ := url.ParseRequestURI(publicURL) + sdURL.Path = path.Join(sdURL.Path, "s", share.Token) + sd := &ShareData{ // share.permissions are mapped below // Displaynames are added later @@ -212,7 +216,7 @@ func PublicShare2ShareData(share *link.PublicShare, r *http.Request, publicURL s Token: share.Token, Name: share.DisplayName, MailSend: 0, - URL: publicURL + path.Join("/", "#/s/"+share.Token), + URL: sdURL.String(), UIDOwner: LocalUserIDToString(share.Creator), UIDFileOwner: LocalUserIDToString(share.Owner), }