From 2660add53f4248253a2c9c2af76676645c58553c Mon Sep 17 00:00:00 2001 From: Alan Castro Date: Fri, 19 Jan 2024 23:28:34 -0800 Subject: [PATCH] feat: only-office integration pt 2: performed server-side signing. addressed other comments. --- cmd/config.go | 3 + files/file.go | 12 +- fileutils/file.go | 13 ++ frontend/package-lock.json | 8 - frontend/package.json | 1 - frontend/src/utils/constants.js | 4 +- frontend/src/views/Files.vue | 4 +- frontend/src/views/files/OnlyOfficeEditor.vue | 95 +++-------- go.mod | 1 + go.sum | 2 + http/auth.go | 1 + http/data.go | 11 +- http/http.go | 1 + http/onlyoffice.go | 150 +++++++++++++++++- http/static.go | 2 +- 15 files changed, 204 insertions(+), 104 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index ed3cc772ca7..155a42b19ed 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -47,6 +47,9 @@ func addConfigFlags(flags *pflag.FlagSet) { flags.String("branding.files", "", "path to directory with images and custom styles") flags.Bool("branding.disableExternal", false, "disable external links such as GitHub links") flags.Bool("branding.disableUsedPercentage", false, "disable used disk percentage graph") + + flags.String("onlyoffice.url", "", "onlyoffice integration url") + flags.String("onlyoffice.jwtSecret", "", "onlyoffice integration secret") } //nolint:gocyclo diff --git a/files/file.go b/files/file.go index 0a579d9fbd3..246c5604585 100644 --- a/files/file.go +++ b/files/file.go @@ -21,6 +21,7 @@ import ( "github.com/spf13/afero" "github.com/filebrowser/filebrowser/v2/errors" + "github.com/filebrowser/filebrowser/v2/fileutils" "github.com/filebrowser/filebrowser/v2/rules" ) @@ -197,16 +198,7 @@ func (i *FileInfo) Checksum(algo string) error { } func (i *FileInfo) RealPath() string { - if realPathFs, ok := i.Fs.(interface { - RealPath(name string) (fPath string, err error) - }); ok { - realPath, err := realPathFs.RealPath(i.Path) - if err == nil { - return realPath - } - } - - return i.Path + return fileutils.GetRealPath(i.Fs, i.Path) } // TODO: use constants diff --git a/fileutils/file.go b/fileutils/file.go index 81aeffeb334..14929ab9625 100644 --- a/fileutils/file.go +++ b/fileutils/file.go @@ -126,3 +126,16 @@ func CommonPrefix(sep byte, paths ...string) string { return string(c) } + +func GetRealPath(fs afero.Fs, path string) string { + if realPathFs, ok := fs.(interface { + RealPath(name string) (fPath string, err error) + }); ok { + realPath, err := realPathFs.RealPath(path) + if err == nil { + return realPath + } + } + + return path +} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 53503f25dc6..2311368c53b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -13,7 +13,6 @@ "core-js": "^3.32.0", "css-vars-ponyfill": "^2.4.8", "filesize": "^10.0.8", - "jose": "^4.13.1", "js-base64": "^3.7.5", "lodash.clonedeep": "^4.5.0", "lodash.throttle": "^4.1.1", @@ -3659,13 +3658,6 @@ "dev": true, "license": "ISC" }, - "node_modules/jose": { - "version": "4.15.4", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/js-base64": { "version": "3.7.5", "license": "BSD-3-Clause" diff --git a/frontend/package.json b/frontend/package.json index 32de85cdc38..4449a5f5afb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,7 +19,6 @@ "core-js": "^3.32.0", "css-vars-ponyfill": "^2.4.8", "filesize": "^10.0.8", - "jose": "^4.13.1", "js-base64": "^3.7.5", "lodash.clonedeep": "^4.5.0", "lodash.throttle": "^4.1.1", diff --git a/frontend/src/utils/constants.js b/frontend/src/utils/constants.js index f0142bb061d..bfd1b4729cc 100644 --- a/frontend/src/utils/constants.js +++ b/frontend/src/utils/constants.js @@ -18,7 +18,7 @@ const enableExec = window.FileBrowser.EnableExec; const tusSettings = window.FileBrowser.TusSettings; const origin = window.location.origin; const tusEndpoint = `/api/tus`; -const onlyOffice = window.FileBrowser.OnlyOffice; +const onlyOfficeUrl = window.FileBrowser.OnlyOfficeUrl; export { name, @@ -40,5 +40,5 @@ export { tusSettings, origin, tusEndpoint, - onlyOffice, + onlyOfficeUrl, }; diff --git a/frontend/src/views/Files.vue b/frontend/src/views/Files.vue index 25aa7aa0cd6..48f821e0b5f 100644 --- a/frontend/src/views/Files.vue +++ b/frontend/src/views/Files.vue @@ -22,7 +22,7 @@