Skip to content

Commit

Permalink
implement url translation for legacy urls
Browse files Browse the repository at this point in the history
  • Loading branch information
David Christofas committed Sep 27, 2021
1 parent 969ac3c commit a8f6ef8
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 2 deletions.
5 changes: 5 additions & 0 deletions changelog/unreleased/legacy-path-translations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Enhancement: Add redirects from OC10 URL formats

Added redirectors for ownCloud 10 URLs. This allows users to continue to use their bookmarks from ownCloud 10 in ocis.

https://github.com/cs3org/reva/pull/1989
17 changes: 15 additions & 2 deletions internal/http/services/owncloud/ocdav/ocdav.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ func (s *svc) Close() error {
}

func (s *svc) Unprotected() []string {
return []string{"/status.php", "/remote.php/dav/public-files/"}
return []string{"/status.php", "/remote.php/dav/public-files/", "/apps/files/", "/index.php/f/", "/index.php/s/"}
}

func (s *svc) Handler() http.Handler {
Expand Down Expand Up @@ -187,7 +187,20 @@ func (s *svc) Handler() http.Handler {

// yet, add it to baseURI
base = path.Join(base, "remote.php")

case "apps":
head, r.URL.Path = router.ShiftPath(r.URL.Path)
if head == "files" {
s.handleLegacyPath(w, r)
return
}
case "index.php":
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)
return
}
}
switch head {
// the old `/webdav` endpoint uses remote.php/webdav/$path
Expand Down
32 changes: 32 additions & 0 deletions internal/http/services/owncloud/ocdav/redirect.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Copyright 2018-2021 CERN
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// In applying this license, CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

package ocdav

import (
"net/http"
"net/url"
"path"
)

func (s *svc) handleLegacyPath(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query()
dir := query.Get("dir")
url := s.c.PublicURL + path.Join("#", "/files/list/all", url.PathEscape(dir))
http.Redirect(w, r, url, http.StatusMovedPermanently)
}

0 comments on commit a8f6ef8

Please sign in to comment.