From aa4bc445aace2e29f02c28922d33ee64c9e480bc Mon Sep 17 00:00:00 2001 From: Graham Steffaniak <42989099+gtsteffaniak@users.noreply.github.com> Date: Wed, 6 Sep 2023 16:07:35 -0500 Subject: [PATCH 1/5] Update README.md --- README.md | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1b0a8af6..1765214f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,13 @@ -## Filebrowser +

+ License: MIT +

+

+ +

+

Filebrowser - A modern file manager for the web

+

+ +

> **NOTE** Intended for docker use only @@ -44,15 +53,12 @@ will only recieve security updates. These changes are mentioned above. Once this is fully complete, the only updates to th ## Look - -This is how desktop search looks in 0.2.0 -![darkmode-capture1](https://github.com/gtsteffaniak/filebrowser/assets/42989099/35cdeb3b-ab79-4b04-8001-8f51f6ea06bb) - -![darkmode2](https://github.com/gtsteffaniak/filebrowser/assets/42989099/8d426356-26cf-407b-b078-bf58f198e799) - -However [mobile search](https://github.com/gtsteffaniak/filebrowser/assets/42989099/37e8f03b-4f5a-4689-aa6c-5cd858a858e9) still appears very similar to filebrowser/filebrowsers original implementation. - -[Mobile web also looks similar](https://github.com/gtsteffaniak/filebrowser/assets/42989099/b04d3c1f-154b-45ba-927c-2112926ad3a9) +

+ + + + +

## Performance From 668bbdd481b8ef86bfed53781d46e5f4acfd3467 Mon Sep 17 00:00:00 2001 From: Graham Steffaniak Date: Sat, 9 Sep 2023 16:20:02 -0500 Subject: [PATCH 2/5] removed ace theme due to issue --- backend/http/static.go | 3 +- frontend/package-lock.json | 291 ++++++++++-------- frontend/package.json | 6 +- .../img/icons/android-chrome-192x192.png | 1 + .../img/icons/android-chrome-256x256.png | 1 + frontend/public/img/icons/favicon-16x16.png | 1 + frontend/public/img/icons/favicon-256x256.png | Bin 0 -> 15614 bytes frontend/public/img/icons/favicon-32x32.png | Bin 47441 -> 0 bytes frontend/public/img/icons/favicon.ico | Bin 194366 -> 67646 bytes frontend/public/img/icons/mstile-150x150.png | Bin 47441 -> 0 bytes frontend/public/img/icons/mstile-256x256.png | 1 + frontend/public/index.html | 10 +- frontend/src/views/bars/EditorBar.vue | 21 -- frontend/src/views/files/Editor.vue | 24 +- frontend/vue.config.js | 8 +- 15 files changed, 193 insertions(+), 174 deletions(-) create mode 120000 frontend/public/img/icons/android-chrome-192x192.png create mode 120000 frontend/public/img/icons/android-chrome-256x256.png create mode 120000 frontend/public/img/icons/favicon-16x16.png create mode 100644 frontend/public/img/icons/favicon-256x256.png delete mode 100644 frontend/public/img/icons/favicon-32x32.png delete mode 100644 frontend/public/img/icons/mstile-150x150.png create mode 120000 frontend/public/img/icons/mstile-256x256.png diff --git a/backend/http/static.go b/backend/http/static.go index b0e1685e..db475bc4 100644 --- a/backend/http/static.go +++ b/backend/http/static.go @@ -98,6 +98,7 @@ func handleWithStaticData(w http.ResponseWriter, _ *http.Request, d *data, fSys } func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs fs.FS) (index, static http.Handler) { + log.Print("requesting", store, assetsFs) index = handle(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { if r.Method != http.MethodGet { return http.StatusNotFound, nil @@ -139,7 +140,7 @@ func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs } w.Header().Set("Content-Encoding", "gzip") - w.Header().Set("Content-Type", "application/javascript; charset=utf-8") + w.Header().Set("Content-Type", "application/javascript; charset=utf-8") // Set the correct MIME type for JavaScript files if _, err := w.Write(fileContents); err != nil { return http.StatusInternalServerError, err diff --git a/frontend/package-lock.json b/frontend/package-lock.json index e5deadfb..d54ba7b2 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,7 @@ "name": "filebrowser-frontend", "version": "2.0.0", "dependencies": { - "ace-builds": "^1.4.7", + "ace-builds": "^1.24.2", "clipboard": "^2.0.4", "css-vars-ponyfill": "^2.4.3", "file-loader": "^6.2.0", @@ -53,12 +53,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz", - "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.10", + "@babel/highlight": "^7.22.13", "chalk": "^2.4.2" }, "engines": { @@ -137,13 +137,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -153,27 +153,27 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz", - "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", @@ -247,9 +247,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz", - "integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==", + "version": "7.22.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -387,9 +387,9 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "version": "1.0.0-next.23", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", "dev": true }, "node_modules/@sideway/address": { @@ -466,18 +466,18 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", "dev": true, "dependencies": { "@types/express-serve-static-core": "*", @@ -520,9 +520,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.35", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", - "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", "dev": true, "dependencies": { "@types/node": "*", @@ -570,9 +570,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz", - "integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==" + "version": "20.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", + "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -587,9 +587,9 @@ "dev": true }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", "dev": true }, "node_modules/@types/range-parser": { @@ -923,9 +923,9 @@ }, "node_modules/@vue/vue-loader-v15": { "name": "vue-loader", - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz", - "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", + "version": "15.10.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz", + "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==", "dev": true, "dependencies": { "@vue/component-compiler-utils": "^3.1.0", @@ -942,6 +942,9 @@ "cache-loader": { "optional": true }, + "prettier": { + "optional": true + }, "vue-template-compiler": { "optional": true } @@ -1114,9 +1117,9 @@ } }, "node_modules/ace-builds": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.24.1.tgz", - "integrity": "sha512-TLcxMxiTRX5Eq9bBVSd/bTJlanCBULiv/IULLohJDDaCAfcpZKJBVSd4OWfN/j2c2jCLc+jhpNWGELiJZw3wPw==" + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.24.2.tgz", + "integrity": "sha512-zjvJiEw05BADxPMq5gN/Vgc9FgyiiDHpdy676Af1nJk8DF4ipgf0cNmV3wy8JHeQ6vezypEZV6pHQu9avO+WtQ==" }, "node_modules/acorn": { "version": "8.10.0", @@ -1621,9 +1624,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001521", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz", - "integrity": "sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==", + "version": "1.0.30001532", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz", + "integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==", "funding": [ { "type": "opencollective", @@ -1839,6 +1842,18 @@ "node": ">=6" } }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2629,9 +2644,9 @@ "dev": true }, "node_modules/dns-packet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", - "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -2751,9 +2766,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.495", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.495.tgz", - "integrity": "sha512-mwknuemBZnoOCths4GtpU/SDuVMp3uQHKa2UNJT9/aVD6WVRjGpXOxRGX7lm6ILIenTdGXPSTCTDaWos5tEU8Q==" + "version": "1.4.513", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz", + "integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -3253,16 +3268,16 @@ } }, "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", "dev": true, "engines": { "node": "*" }, "funding": { "type": "patreon", - "url": "https://www.patreon.com/infusion" + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fresh": { @@ -3302,9 +3317,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -3932,13 +3947,10 @@ } }, "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, "engines": { "node": ">=0.10.0" } @@ -4031,9 +4043,9 @@ } }, "node_modules/joi": { - "version": "17.9.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", - "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", + "version": "17.10.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.1.tgz", + "integrity": "sha512-vIiDxQKmRidUVp8KngT8MZSOcmRVm2zV7jbMjNYWuHcJWI0bUck3nRTGQjhpPlQenIQIBC5Vp9AhcnHbWQqafw==", "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0", @@ -4201,12 +4213,36 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, "node_modules/lodash.defaultsdeep": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", "dev": true }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", + "dev": true + }, "node_modules/lodash.mapvalues": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", @@ -4219,6 +4255,12 @@ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", + "dev": true + }, "node_modules/lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -4230,6 +4272,12 @@ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -4397,9 +4445,9 @@ } }, "node_modules/material-icons": { - "version": "1.13.9", - "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.9.tgz", - "integrity": "sha512-dwuf2C8LR07FcrjRDx0vWnDEcHiDuamXOmtAck8bdONUv5Fi6wR/ubQwPfG1NbcqgPg+y0fHN8Unj5DO+5fV4w==" + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.11.tgz", + "integrity": "sha512-kp2oAdaqo/Zp6hpTZW01rOgDPWmxBUszSdDzkRm1idCjjNvdUMnqu8qu58cll6CObo+o0cydOiPLdoSugLm+mQ==" }, "node_modules/mdn-data": { "version": "2.0.14", @@ -4696,9 +4744,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -5181,9 +5229,9 @@ } }, "node_modules/postcss": { - "version": "8.4.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", - "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", "funding": [ { "type": "opencollective", @@ -6497,14 +6545,14 @@ "dev": true }, "node_modules/sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", "dev": true, "dependencies": { "@polka/url": "^1.0.0-next.20", "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "totalist": "^3.0.0" }, "engines": { "node": ">= 10" @@ -6783,9 +6831,9 @@ } }, "node_modules/terser": { - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "version": "5.19.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", + "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -7034,9 +7082,9 @@ } }, "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, "engines": { "node": ">=6" @@ -7049,9 +7097,9 @@ "dev": true }, "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/type-fest": { @@ -7401,20 +7449,27 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz", - "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "lodash": "^4.17.20", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", "opener": "^1.5.2", - "sirv": "^1.0.7", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", "ws": "^7.3.1" }, "bin": { @@ -7424,22 +7479,6 @@ "node": ">= 10.13.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/webpack-bundle-analyzer/node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -7449,6 +7488,18 @@ "node": ">= 10" } }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/webpack-chain": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", @@ -7545,9 +7596,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", + "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", "dev": true, "engines": { "node": ">=10.0.0" @@ -7661,9 +7712,9 @@ } }, "node_modules/whatwg-fetch": { - "version": "3.6.17", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz", - "integrity": "sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ==" + "version": "3.6.18", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz", + "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==" }, "node_modules/whatwg-url": { "version": "5.0.0", diff --git a/frontend/package.json b/frontend/package.json index ce75e1ca..00c529e1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,16 +9,16 @@ "watch": "vue-cli-service build --watch" }, "dependencies": { - "ace-builds": "^1.4.7", + "ace-builds": "^1.24.2", "clipboard": "^2.0.4", - "normalize.css": "^8.0.1", - "file-loader": "^6.2.0", "css-vars-ponyfill": "^2.4.3", + "file-loader": "^6.2.0", "js-base64": "^2.5.1", "lodash.clonedeep": "^4.5.0", "lodash.throttle": "^4.1.1", "material-icons": "^1.10.5", "moment": "^2.29.4", + "normalize.css": "^8.0.1", "noty": "^3.2.0-beta", "pretty-bytes": "^6.0.0", "qrcode.vue": "^1.7.0", diff --git a/frontend/public/img/icons/android-chrome-192x192.png b/frontend/public/img/icons/android-chrome-192x192.png new file mode 120000 index 00000000..f2ee31b9 --- /dev/null +++ b/frontend/public/img/icons/android-chrome-192x192.png @@ -0,0 +1 @@ +favicon-256x256.png \ No newline at end of file diff --git a/frontend/public/img/icons/android-chrome-256x256.png b/frontend/public/img/icons/android-chrome-256x256.png new file mode 120000 index 00000000..f2ee31b9 --- /dev/null +++ b/frontend/public/img/icons/android-chrome-256x256.png @@ -0,0 +1 @@ +favicon-256x256.png \ No newline at end of file diff --git a/frontend/public/img/icons/favicon-16x16.png b/frontend/public/img/icons/favicon-16x16.png new file mode 120000 index 00000000..f2ee31b9 --- /dev/null +++ b/frontend/public/img/icons/favicon-16x16.png @@ -0,0 +1 @@ +favicon-256x256.png \ No newline at end of file diff --git a/frontend/public/img/icons/favicon-256x256.png b/frontend/public/img/icons/favicon-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..50b30a60f90d54ae4afe92ce536637127eeda45c GIT binary patch literal 15614 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 AJ^%m! literal 0 HcmV?d00001 diff --git a/frontend/public/img/icons/favicon-32x32.png b/frontend/public/img/icons/favicon-32x32.png deleted file mode 100644 index bb33be2b36d7ae55b38fc469c6fe6d175b269676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47441 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 diff --git a/frontend/public/img/icons/favicon.ico b/frontend/public/img/icons/favicon.ico index d78d8bdbea8ea41467f343d5da8003731e983838..7f7a9eca49812b9c37c2d55234c76f136bfb0ee4 100644 GIT binary patch literal 67646 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 diff --git a/frontend/public/img/icons/mstile-150x150.png b/frontend/public/img/icons/mstile-150x150.png deleted file mode 100644 index bb33be2b36d7ae55b38fc469c6fe6d175b269676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47441 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 diff --git a/frontend/public/img/icons/mstile-256x256.png b/frontend/public/img/icons/mstile-256x256.png new file mode 120000 index 00000000..f2ee31b9 --- /dev/null +++ b/frontend/public/img/icons/mstile-256x256.png @@ -0,0 +1 @@ +favicon-256x256.png \ No newline at end of file diff --git a/frontend/public/index.html b/frontend/public/index.html index d6986bf1..00bd9650 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -11,8 +11,7 @@ [{[ if .Name -]}][{[ .Name ]}][{[ else ]}]File Browser[{[ end ]}] - - + @@ -38,12 +37,7 @@ "short_name": window.FileBrowser.Name || 'File Browser', "icons": [ { - "src": fullStaticURL + "/img/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": fullStaticURL + "/img/icons/android-chrome-512x512.png", + "src": fullStaticURL + "/img/icons/android-chrome-256x256.png", "sizes": "512x512", "type": "image/png" } diff --git a/frontend/src/views/bars/EditorBar.vue b/frontend/src/views/bars/EditorBar.vue index 8977c1f3..96b3d5a0 100644 --- a/frontend/src/views/bars/EditorBar.vue +++ b/frontend/src/views/bars/EditorBar.vue @@ -25,14 +25,9 @@ + \ No newline at end of file diff --git a/frontend/vue.config.js b/frontend/vue.config.js index 6f0be70c..4f6ecd6b 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -5,11 +5,17 @@ module.exports = { publicPath: "[{[ .StaticURL ]}]", parallel: true, configureWebpack: { + resolve: { + alias: { + // Add Ace Editor alias for importing it in your Vue components + ace: "ace-builds/src-min-noconflict", + }, + extensions: ["*", ".js", ".vue", ".json"], + }, plugins: [ new CompressionPlugin({ include: /\.js$/, deleteOriginalAssets: true, - threshold: 10240, // Only compress files larger than 10KB minRatio: 0.8, }), ], From 57214542d4a550d11fc83d55e697508e38fdd963 Mon Sep 17 00:00:00 2001 From: Graham Steffaniak Date: Sat, 9 Sep 2023 16:59:43 -0500 Subject: [PATCH 3/5] updated help document --- README.md | 48 +++++++++-------- backend/http/static.go | 1 - configuration.md | 114 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+), 22 deletions(-) create mode 100644 configuration.md diff --git a/README.md b/README.md index 1765214f..6caf927f 100644 --- a/README.md +++ b/README.md @@ -72,23 +72,23 @@ system should fully index within the first 5 minutes, potentially within the fir For example, a low end 11th gen i5 with SSD indexes 86K files within 1 second: ``` -2023/08/01 00:08:29 Using config file: /.filebrowser.json -2023/08/01 00:08:29 Indexing files... -2023/08/01 00:08:29 Listening on [::]:8080 -2023/08/01 00:08:30 Successfully indexed files. -2023/08/01 00:08:30 Files found : 85310 -2023/08/01 00:08:30 Directories found : 1711 -2023/08/01 00:08:30 Indexing scheduler will run every 5 minutes +2023/09/09 21:38:50 Initializing with config file: filebrowser.yaml +2023/09/09 21:38:50 Indexing files... +2023/09/09 21:38:50 Listening on [::]:8080 +2023/09/09 21:38:51 Successfully indexed files. +2023/09/09 21:38:51 Files found : 123452 +2023/09/09 21:38:51 Directories found : 1768 +2023/09/09 21:38:51 Indexing scheduler will run every 5 minutes ``` ## Install Using docker: -1. docker run: +1. docker run (no persistent db): ``` -docker run -it -v /path/to/folder:/srv -p 8080:8080 gtstef/filebrowser +docker run -it -v /path/to/folder:/srv -p 80:8080 gtstef/filebrowser ``` 1. docker-compose: @@ -100,12 +100,13 @@ version: '3.7' services: filebrowser: volumes: - - '/path/to/folder:/srv' - #- './database/:/database/' - - './config.json:/.filebrowser.json' + - '/path/to/folder:/srv' # required (for now not configurable) + - './database:/database' # optional if you want db to persist - configure a path under "database" dir in config file. + - './filebrowser.yaml:/filebrowser.yaml' # required ports: - - '8080:8080' + - '80:8080' image: gtstef/filebrowser + restart: always ``` - with network share @@ -115,23 +116,28 @@ version: '3.7' services: filebrowser: volumes: - - 'nas:/srv' - #- './database/:/database/' - #- './config.json:/.filebrowser.json' + - 'storage:/srv' # required (for now not configurable) + - './database:/database' # optional if you want db to persist - configure a path under "database" dir in config file. + - './filebrowser.yaml:/filebrowser.yaml' # required ports: - - '8080:80' + - '80:8080' image: gtstef/filebrowser + restart: always volumes: - nas: + storage: driver_opts: type: cifs - o: "username=myusername,password=mypassword,rw" - device: "//fileshare/" + o: "username=admin,password=password,rw" # enter valid info here + device: "//192.168.1.100/share/" # enter valid hinfo here + ``` ## Configuration -All configuration is now done via a single configuration file: `filebrowser.yaml`, here is an example [configuration file](./backend/filebrowser.yaml). +All configuration is now done via a single configuration file: `filebrowser.yaml`, here is an example minimal [configuration file](./backend/filebrowser.yaml). + +View the [Configuration Help Page](./configuration.md) for available configuration options and other help. + ### background The original project filebrowser/filebrowser used multiple different ways to configure the server. diff --git a/backend/http/static.go b/backend/http/static.go index db475bc4..aef7bd0d 100644 --- a/backend/http/static.go +++ b/backend/http/static.go @@ -98,7 +98,6 @@ func handleWithStaticData(w http.ResponseWriter, _ *http.Request, d *data, fSys } func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs fs.FS) (index, static http.Handler) { - log.Print("requesting", store, assetsFs) index = handle(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { if r.Method != http.MethodGet { return http.StatusNotFound, nil diff --git a/configuration.md b/configuration.md new file mode 100644 index 00000000..df13d0ee --- /dev/null +++ b/configuration.md @@ -0,0 +1,114 @@ +# Configuration Help + +This document covers the available configuration options, their defaults, and how they affect the functionality of filebrowser. + +## All possible configurations + +Here is an expanded config file which includes all possible configurations: + +``` +server: + indexingInterval: 5 + numImageProcessors: 4 + socket: "" + tlsKey: "" + tlsCert: "" + enableThumbnails: false + resizePreview: true + typeDetectionByHeader: true + port: 8080 + baseURL: "/" + address: "" + log: "stdout" + database: "/database/database.db" + root: "/srv" +auth: + recaptcha: + host: "" + key: "" + secret: "" + header: "" + method: json + command: "" + signup: false + shell: "" +frontend: + name: "" + disableExternal: false + disableUsedPercentage: true + files: "" + theme: "" + color: "" +userDefaults: + scope: "" + locale: "" + viewMode: "" + singleClick: true + sorting: + by: "" + asc: true + permissions: + admin: true + execute: true + create: true + rename: true + modify: true + delete: true + share: true + download: true + commands: [] + hideDotfiles: false + dateFormat: false +``` + +Here are the defaults if nothing is set: + +``` +Signup: true +AdminUsername: admin +AdminPassword: admin +Server: + EnableThumbnails: true + EnableExec: false + IndexingInterval: 5 + Port: 8080 + NumImageProcessors: 4 + BaseURL: "" + Database: database.db + Log: stdout + Root: /srv +Auth: + Method: password + Recaptcha: + Host: "" +UserDefaults: + Scope: "." + LockPassword: false + HideDotfiles: true + Permissions: + Create: true + Rename: true + Modify: true + Delete: true + Share: true + Download: true +``` + +## About each configuration + +### Server configuration settings + + - `indexingInterval`: This is the time in minutes the system waits before checking for filesystem changes. (used in search only) + - `numImageProcessors`: + socket: "" + tlsKey: "" + tlsCert: "" + enableThumbnails: false + resizePreview: true + typeDetectionByHeader: true + port: 8080 + baseURL: "/" + address: "" + log: "stdout" + - `database`: This is the database file path + filename that will be created if it does not already exist. If it exists, it will use the existing file. + - `root`: "/srv" \ No newline at end of file From 1d9993b3234865212fe3b734178fe168bbb3c223 Mon Sep 17 00:00:00 2001 From: Graham Steffaniak <42989099+gtsteffaniak@users.noreply.github.com> Date: Sat, 9 Sep 2023 17:01:09 -0500 Subject: [PATCH 4/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6caf927f..f795d379 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ License: MIT

- +

Filebrowser - A modern file manager for the web

From 85329243b15a937c5fc787aa087fc4973c56d7ff Mon Sep 17 00:00:00 2001 From: Graham Steffaniak <42989099+gtsteffaniak@users.noreply.github.com> Date: Sat, 9 Sep 2023 18:58:47 -0500 Subject: [PATCH 5/5] Update configuration.md --- configuration.md | 130 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 116 insertions(+), 14 deletions(-) diff --git a/configuration.md b/configuration.md index df13d0ee..dc5b5762 100644 --- a/configuration.md +++ b/configuration.md @@ -96,19 +96,121 @@ UserDefaults: ## About each configuration +# Configuration Settings Documentation + +## About each configuration + +- `Signup`: This boolean value indicates whether user signup is enabled. + +- `AdminUsername`: This is the username of the admin user. + +- `AdminPassword`: This is the password of the admin user. + ### Server configuration settings - - `indexingInterval`: This is the time in minutes the system waits before checking for filesystem changes. (used in search only) - - `numImageProcessors`: - socket: "" - tlsKey: "" - tlsCert: "" - enableThumbnails: false - resizePreview: true - typeDetectionByHeader: true - port: 8080 - baseURL: "/" - address: "" - log: "stdout" - - `database`: This is the database file path + filename that will be created if it does not already exist. If it exists, it will use the existing file. - - `root`: "/srv" \ No newline at end of file +- `indexingInterval`: This is the time in minutes the system waits before checking for filesystem changes (used in search only). + +- `numImageProcessors`: This is the number of image processors available. + +- `socket`: This is the socket configuration. + +- `tlsKey`: This is the TLS key configuration. + +- `tlsCert`: This is the TLS certificate configuration. + +- `enableThumbnails`: This boolean value determines whether thumbnails are enabled. + +- `resizePreview`: This boolean value determines whether preview resizing is enabled. + +- `typeDetectionByHeader`: This boolean value determines whether type detection is based on headers. + +- `port`: This is the port number on which the server is running. + +- `baseURL`: This is the base URL for the server. + +- `address`: This is the server address configuration. + +- `log`: This specifies the log destination (e.g., "stdout" for standard output). + +- `database`: This is the database file path + filename that will be created if it does not already exist. If it exists, it will use the existing file. + +- `root`: This is the root directory path. + +### Auth configuration settings + +- `recaptcha`: + + - `host`: This is the host for reCAPTCHA. + + - `key`: This is the reCAPTCHA key. + + - `secret`: This is the reCAPTCHA secret. + +- `header`: This is the authentication header. + +- `method`: This is the authentication method used (e.g., "json"). Possible values: + - password - username and password + - hook - hook authentication + - proxy - proxy authentication + - oath - oath authentication + +- `command`: This is the authentication command. + +- `signup`: This boolean value indicates whether user signup is enabled. + +- `shell`: This is the shell configuration. + +### Frontend configuration settings + +- `name`: This is the name of the frontend. + +- `disableExternal`: This boolean value determines whether external access is disabled. + +- `disableUsedPercentage`: This boolean value determines whether used percentage is disabled. + +- `files`: This is the files configuration. + +- `theme`: This is the theme configuration. + +- `color`: This is the color configuration. + +### UserDefaults configuration settings + +- `scope`: This is a scope of the permissions, "." or "./" means all directories, "./downloads" would mean only the downloads folder. + +- `locale`: This is the locale configuration. + +- `viewMode`: This is the view mode configuration. + +- `singleClick`: This boolean value determines whether single-click is enabled. + +- `sorting`: + + - `by`: This is the sorting method used (e.g., "asc"). + + - `asc`: This boolean value determines the sorting order. + +- `permissions`: + + - `admin`: This boolean value determines whether admin permissions are granted. + + - `execute`: This boolean value determines whether execute permissions are granted. + + - `create`: This boolean value determines whether create permissions are granted. + + - `rename`: This boolean value determines whether rename permissions are granted. + + - `modify`: This boolean value determines whether modify permissions are granted. + + - `delete`: This boolean value determines whether delete permissions are granted. + + - `share`: This boolean value determines whether share permissions are granted. + + - `download`: This boolean value determines whether download permissions are granted. + +- `commands`: This is a list of commands. + +- `hideDotfiles`: This boolean value determines whether dotfiles are hidden. + +- `dateFormat`: This boolean value determines whether date formatting is enabled. +