Skip to content

Commit 3abf1ae

Browse files
authored
updated with final touches (#682)
1 parent 78d8bb5 commit 3abf1ae

File tree

12 files changed

+95
-24
lines changed

12 files changed

+95
-24
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ All notable changes to this project will be documented in this file. For commit
2626
- webm video preview issue https://github.com/gtsteffaniak/filebrowser/issues/673
2727
- fix signup issue https://github.com/gtsteffaniak/filebrowser/issues/648
2828
- fix default source bug
29+
- https://github.com/gtsteffaniak/filebrowser/issues/666
30+
- fix 500 error for subtitle videos https://github.com/gtsteffaniak/filebrowser/issues/678
31+
- spaces and special characters in source name issue https://github.com/gtsteffaniak/filebrowser/issues/679
2932

3033
![image](https://github.com/user-attachments/assets/28e4e67e-31a1-4107-9294-0e715e87b558)
3134

backend/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ require (
5252
github.com/bkielbasa/cyclop v1.2.3 // indirect
5353
github.com/blizzy78/varnamelen v0.8.0 // indirect
5454
github.com/bombsimon/wsl/v4 v4.5.0 // indirect
55-
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect
55+
github.com/boombuler/barcode v1.0.2 // indirect
5656
github.com/breml/bidichk v0.3.2 // indirect
5757
github.com/breml/errchkjson v0.4.0 // indirect
5858
github.com/butuzov/ireturn v0.3.1 // indirect

backend/go.sum

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,9 @@ github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ
102102
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
103103
github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A=
104104
github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc=
105-
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI=
106105
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
106+
github.com/boombuler/barcode v1.0.2 h1:79yrbttoZrLGkL/oOI8hBrUKucwOL0oOjUgEguGMcJ4=
107+
github.com/boombuler/barcode v1.0.2/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
107108
github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs=
108109
github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos=
109110
github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk=

backend/http/preview.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"context"
66
"fmt"
77
"net/http"
8+
"net/url"
89
"os"
910
"strconv"
1011
"strings"
@@ -47,6 +48,13 @@ func previewHandler(w http.ResponseWriter, r *http.Request, d *requestContext) (
4748
source := r.URL.Query().Get("source")
4849
if source == "" {
4950
source = settings.Config.Server.DefaultSource.Name
51+
} else {
52+
var err error
53+
// decode url encoded source name
54+
source, err = url.QueryUnescape(source)
55+
if err != nil {
56+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
57+
}
5058
}
5159
if path == "" {
5260
return http.StatusBadRequest, fmt.Errorf("invalid request path")

backend/http/public.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@ func publicPreviewHandler(w http.ResponseWriter, r *http.Request, d *requestCont
118118
source := r.URL.Query().Get("source")
119119
if source == "" {
120120
source = settings.Config.Server.DefaultSource.Name
121+
} else {
122+
var err error
123+
// decode url encoded source name
124+
source, err = url.QueryUnescape(source)
125+
if err != nil {
126+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
127+
}
121128
}
122129
if path == "" {
123130
return http.StatusBadRequest, fmt.Errorf("invalid request path")

backend/http/resource.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ func resourceGetHandler(w http.ResponseWriter, r *http.Request, d *requestContex
4141
source := r.URL.Query().Get("source")
4242
if source == "" {
4343
source = config.Server.DefaultSource.Name
44+
} else {
45+
var err error
46+
// decode url encoded source name
47+
source, err = url.QueryUnescape(source)
48+
if err != nil {
49+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
50+
}
4451
}
4552
// Decode the URL-encoded path
4653
path, err := url.QueryUnescape(encodedPath)
@@ -109,6 +116,13 @@ func resourceDeleteHandler(w http.ResponseWriter, r *http.Request, d *requestCon
109116
source := r.URL.Query().Get("source")
110117
if source == "" {
111118
source = config.Server.DefaultSource.Name
119+
} else {
120+
var err error
121+
// decode url encoded source name
122+
source, err = url.QueryUnescape(source)
123+
if err != nil {
124+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
125+
}
112126
}
113127
// Decode the URL-encoded path
114128
path, err := url.QueryUnescape(encodedPath)
@@ -163,6 +177,13 @@ func resourcePostHandler(w http.ResponseWriter, r *http.Request, d *requestConte
163177
source := r.URL.Query().Get("source")
164178
if source == "" {
165179
source = config.Server.DefaultSource.Name
180+
} else {
181+
var err error
182+
// decode url encoded source name
183+
source, err = url.QueryUnescape(source)
184+
if err != nil {
185+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
186+
}
166187
}
167188
if !d.user.Permissions.Modify {
168189
return http.StatusForbidden, fmt.Errorf("user is not allowed to create or modify")
@@ -226,6 +247,13 @@ func resourcePutHandler(w http.ResponseWriter, r *http.Request, d *requestContex
226247
source := r.URL.Query().Get("source")
227248
if source == "" {
228249
source = config.Server.DefaultSource.Name
250+
} else {
251+
var err error
252+
// decode url encoded source name
253+
source, err = url.QueryUnescape(source)
254+
if err != nil {
255+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
256+
}
229257
}
230258
if !d.user.Permissions.Modify {
231259
return http.StatusForbidden, fmt.Errorf("user is not allowed to create or modify")
@@ -404,6 +432,9 @@ func inspectIndex(w http.ResponseWriter, r *http.Request) {
404432
source := r.URL.Query().Get("source")
405433
if source == "" {
406434
source = config.Server.DefaultSource.Name
435+
} else {
436+
// decode url encoded source name
437+
source, _ = url.QueryUnescape(source)
407438
}
408439
// Decode the URL-encoded path
409440
path, _ := url.QueryUnescape(encodedPath)

backend/http/search.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ func searchHandler(w http.ResponseWriter, r *http.Request, d *requestContext) (i
6060
source := r.URL.Query().Get("source")
6161
if source == "" {
6262
source = config.Server.DefaultSource.Name
63+
} else {
64+
var err error
65+
// decode url encoded source name
66+
source, err = url.QueryUnescape(source)
67+
if err != nil {
68+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
69+
}
6370
}
6471
scope := r.URL.Query().Get("scope")
6572
unencodedScope, err := url.QueryUnescape(scope)

backend/http/share.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ func shareGetHandler(w http.ResponseWriter, r *http.Request, d *requestContext)
6969
source := r.URL.Query().Get("source")
7070
if source == "" {
7171
source = settings.Config.Server.DefaultSource.Name
72+
} else {
73+
var err error
74+
// decode url encoded source name
75+
source, err = url.QueryUnescape(source)
76+
if err != nil {
77+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
78+
}
7279
}
7380
// Decode the URL-encoded path
7481
path, err := url.QueryUnescape(encodedPath)
@@ -192,6 +199,13 @@ func sharePostHandler(w http.ResponseWriter, r *http.Request, d *requestContext)
192199
sourceName := r.URL.Query().Get("source")
193200
if sourceName == "" {
194201
sourceName = config.Server.DefaultSource.Name
202+
} else {
203+
var err error
204+
// decode url encoded source name
205+
sourceName, err = url.QueryUnescape(sourceName)
206+
if err != nil {
207+
return http.StatusBadRequest, fmt.Errorf("invalid source encoding: %v", err)
208+
}
195209
}
196210
source := config.Server.NameToSource[sourceName]
197211

frontend/src/components/Search.vue

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,25 +81,23 @@
8181
<!-- Inputs for filtering by file size -->
8282
<div class="sizeConstraints">
8383
<div class="sizeInputWrapper">
84-
<p> {{ $t('search.smallerThan') }} </p>
84+
<p>{{ $t("search.smallerThan") }}</p>
8585
<input
8686
class="sizeInput"
8787
v-model="smallerThan"
8888
type="number"
8989
min="0"
9090
placeholder="number"
91-
/>
92-
<p>MB</p> <!-- eslint-disable-line @intlify/vue-i18n/no-raw-text -->
91+
/><p>MB</p> <!-- eslint-disable-line @intlify/vue-i18n/no-raw-text -->
9392
</div>
9493
<div class="sizeInputWrapper">
95-
<p> {{ $t('search.largerThan') }} </p>
94+
<p>{{ $t("search.largerThan") }}</p>
9695
<input
9796
class="sizeInput"
9897
v-model="largerThan"
9998
type="number"
10099
placeholder="number"
101-
/>
102-
<p>MB</p> <!-- eslint-disable-line @intlify/vue-i18n/no-raw-text -->
100+
/><p>MB</p> <!-- eslint-disable-line @intlify/vue-i18n/no-raw-text -->
103101
</div>
104102
</div>
105103
</div>
@@ -112,12 +110,12 @@
112110
<!-- Message when no results are found -->
113111
<div class="searchPrompt" v-show="isEmpty && !isRunning">
114112
<p>{{ noneMessage }}</p>
115-
<div class="helpButton" @click="toggleHelp()"> {{ $t('sidebar.help') }} </div>
113+
<div class="helpButton" @click="toggleHelp()">{{ $t("sidebar.help") }}</div>
116114
</div>
117115
<!-- Help text section -->
118116
<div class="helpText" v-if="showHelp">
119-
<p>{{ $t('search.helpText1') }}</p>
120-
<p>{{ $t('search.helpText2') }}</p>
117+
<p>{{ $t("search.helpText1") }}</p>
118+
<p>{{ $t("search.helpText2") }}</p>
121119
</div>
122120
<!-- List of search results -->
123121
<ul v-show="results.length > 0">
@@ -131,7 +129,7 @@
131129
<a :href="getRelative(s.path)" @contextmenu="addSelected(event, s)">
132130
<Icon :mimetype="s.type" />
133131
<span class="text-container">
134-
{{ basePath(s.path, s.type == "directory") }}/{{ baseName(s.path) }}/ <!-- eslint-disable-line @intlify/vue-i18n/no-raw-text -->
132+
{{ basePath(s.path, s.type == "directory") }}/{{ baseName(s.path) }}/<!-- eslint-disable-line @intlify/vue-i18n/no-raw-text -->
135133
</span>
136134
<div class="filesize">{{ humanSize(s.size) }}</div>
137135
</a>
@@ -394,11 +392,12 @@ export default {
394392
if (path.startsWith("/")) {
395393
path = path.slice(1); // remove leading slash
396394
}
395+
const encodedPath = encodeURIComponent(path).replace("/%20/g", "/");
397396
let fullpath = path;
398397
if (serverHasMultipleSources) {
399-
fullpath = "/files/" + this.selectedSource + "/" + encodeURIComponent(path);
398+
fullpath = "/files/" + this.selectedSource + "/" + encodedPath;
400399
} else {
401-
fullpath = "/files/" + encodeURIComponent(path);
400+
fullpath = "/files/" + encodedPath;
402401
}
403402
return fullpath;
404403
},

frontend/src/components/prompts/Totp.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ export default {
100100
return;
101101
}
102102
try {
103-
console.log("Verifying OTP code:", this.code);
104103
await usersApi.verifyOtp(this.username, this.password, this.code);
105104
if (this.redirect != "") {
106105
await usersApi.login(this.username, this.password, this.redirect, this.code);

0 commit comments

Comments
 (0)