Commit graph

2059 commits

Author SHA1 Message Date
MickaelK
f584807fac feature (plugin): handle compression in opener plugin 2025-02-18 13:54:56 +11:00
MickaelK
2c1edd85e9 feature (template): enhance templating functions 2025-02-13 15:56:24 +11:00
MickaelK
00eed6e922 fix (sw): add support for raw + gzip static 2025-02-07 12:20:37 +11:00
MickaelK
65cf080af7 fix (admin): report validation error
I've seen someone who mistakenly had updated their config secret key,
not sure if it was done by a weird password manager or a manual action
but that did corrupt their entire setup.

We now make sure value like secret key get validated before saving.
Didn't realise this would be necessary to start with as the appraoch has
always been "with great power come great responsability" but if it can
prevent catastrophic failure mode hapening by mistake, then we will be
making an exception to the moto
2025-02-06 21:06:55 +11:00
MickaelK
65bd2fde5c fix (filesystem): rules to redraw screen 2025-02-06 17:43:59 +11:00
MickaelK
67d4eb9cc1 fix (selection): edge case for selection
if selecting something and deselecting it, we'd
see the selection to be 0 which is a bit meh ...

while fixing it, we've share the cost of the selection length as it can
be potentially expensive to calculate if the user has selected tons of
stuff manually + shift selection + ctrl, etc...
2025-02-06 16:58:40 +11:00
MickaelK
eedbfd42af fix (download): download in new page
whenever clicking on the download link, there were issue with
target=_blank + the download attribute. Effectively the download
attribute remove the effect of target blank, hence this workaround to
make sure the files that are downloaded are correctly named + open up in
a new tab. The issue without target blank is if the user starts the
download, he doesn't see a direct feedback telling him that something is
working under the hood, hence the target blank
2025-02-06 15:03:25 +11:00
MickaelK
849f206408 feature (plg_backend_url): url storage backend
usefull for open directory kind of scenarios.
cool example at play: https://locker.phinugamma.org/swf/
2025-02-05 01:57:16 +11:00
MickaelK
367974a7a2 chore (frontend): refactor minor elements 2025-02-05 01:40:46 +11:00
MickaelK
acad39b05f fix (config): regression on config change 2025-02-04 02:35:23 +11:00
MickaelK
fe830fb8e2 chore (refactoring): main html cleanup 2025-02-04 01:43:04 +11:00
MickaelK
67275e32e9 chore (constant): env constants 2025-02-04 01:11:16 +11:00
MickaelK
c5ee4e0632 chore (refactoring): remove config global variable 2025-02-04 00:18:17 +11:00
MickaelK
0f0e8f56e3 chore (linter): linting of new js 2025-02-03 23:44:34 +11:00
MickaelK
c8bd0121c9 feature (embed): embed components for sharing 2025-02-03 23:16:39 +11:00
MickaelK
3fffac0f01 chore (loader): wasm loader with cache 2025-02-03 22:34:01 +11:00
MickaelK
c1b090e210 chore (maitenance): boot sequence 2025-02-03 18:46:41 +11:00
MickaelK
b2c9b29384 chore (refactoring): revamp sqlite full text search 2025-02-03 16:01:50 +11:00
MickaelK
ae7e6d0801 chore (release): prepare release 2025-02-02 18:53:53 +11:00
MickaelK
db86daf867 fix (plg_search_sqlitefs): refactoring 2025-01-31 23:48:59 +11:00
MickaelK
773fd02871 fix (plg_office_wopi): wopi office integration 2025-01-30 17:49:40 +11:00
MickaelK
6e2a99adf1 fix (plg_office_wopi): shared link on wopi issue 2025-01-30 12:58:47 +11:00
MickaelK
22f17f17e6 chore (version): refactoring around configuration 2025-01-28 15:16:13 +11:00
MickaelK
3ce10045df fix (table): missing loader 2025-01-28 01:52:26 +11:00
MickaelK
496c05360e feature (templating): new templating function 2025-01-27 16:22:03 +11:00
MickaelK
c3f2c57e5f feature (turboload): decrease load time via sw 2025-01-27 14:05:55 +11:00
MickaelK
fddc98b462 fix (sidebar): improve UX for sidebar 2025-01-27 13:21:06 +11:00
MickaelK
6b3edfbffa chore (search): improve UX around search 2025-01-24 15:18:07 +11:00
MickaelK
42fd37e2ec fix (sharedlink): issue with ifram / wopi 2025-01-24 13:59:11 +11:00
MickaelK
9193c86266 chore (table): improve UX for table app 2025-01-23 16:55:13 +11:00
MickaelK
1510e0bcda chore (plugin): polish the new plugin interface 2025-01-23 15:26:05 +11:00
MickaelK
daf96fdcff chore (refactoring): skeleton plugin app 2025-01-23 12:50:08 +11:00
MickaelK
4ed4365a33 fix (smb): finicky persistent stuff when decorated 2025-01-23 04:11:44 +11:00
MickaelK
f53dc6a7a3 fix (webdav): network drive via window 2025-01-21 16:54:01 +11:00
MickaelK
753e76d4af feature (auth): follow param in redirect URL 2025-01-15 02:56:21 +11:00
MickaelK
28028f540c feature (viewer): skeleton for new plugins 2025-01-15 01:29:59 +11:00
MickaelK
f1b1d71f40 feature (signature): protect url param via signature 2025-01-15 01:09:53 +11:00
Mickael
e9870f72f2
chore (refactoring): revamp map to plugin mechanism (#805)
* chore (refactoring): revamp map to plugin mechanism

* chore (docker): Dockerfile
2025-01-14 15:01:17 +11:00
MickaelK
0d4709595c chore (refactoring): 3d app revamp 2025-01-13 22:53:02 +11:00
MickaelK
fd839808b7 feature (feedback): suggestion from a redditor 2025-01-13 17:41:29 +11:00
MickaelK
2d3b0de210 chore (colors): root colors and menubar 2025-01-13 16:29:58 +11:00
Mickael
d30c3120b6
feature (plugins): expand and migrate plugin - #803
* chore (dockerfile): cleanup dockerfile

* feature (plugin): extend plugin interface

* chore (docker): setup new Dockerfile

* chore (dockerfile): update dockerfile
2025-01-13 15:41:04 +11:00
Mickael
82dd3adf5d
fix (versitygw): better handling of missing filesize
* fix (s3): bug on versitygw

the plugin would break on versitgw which on some version isn't sending
the size metadata, ending with a null pointer dereference.

I wasn't able to replicate this on my own but the bug report shows:

2025/01/10 04:35:47 http: panic serving 130.194.66.248:54701: runtime error: invalid memory address or nil pointer dereference
goroutine 5590 [running]:
net/http.(*conn).serve.func1()
        /usr/local/go/src/net/http/server.go:1947 +0xbe
panic({0x19c2740?, 0x535ece0?})
        /usr/local/go/src/runtime/panic.go:785 +0x132
github.com/mickael-kerjean/filestash/server/plugin/plg_backend_s3.S3Backend.Ls.func1(0xc000986bd0, 0xe0?)
        /home/server/plugin/plg_backend_s3/index.go:218 +0x18a
github.com/aws/aws-sdk-go/service/s3.(*S3).ListObjectsV2PagesWithContext(0xc0005b01a8, {0x46ae758, 0xc000f187e0}, 0xc0006649a0, 0xc0005d7270, {0x0, 0x0, 0x0})
        /home/vendor/github.com/aws/aws-sdk-go/service/s3/api.go:7654 +0x1ad
github.com/mickael-kerjean/filestash/server/plugin/plg_backend_s3.S3Backend.Ls({0xc0005b0178, 0xc00074cd80, 0xc000f188a0, {0x46ae758, 0xc000f187e0}, 0x32}, {0xc0008810f0?, 0x99?})
        /home/server/plugin/plg_backend_s3/index.go:202 +0x31a
github.com/mickael-kerjean/filestash/filestash-enterprise/plugins/utils.wrapper.Ls({{0x46b77c0, 0xc000f18ff0}, {0x5511fc0, 0x0, 0x0}}, {0xc0008810f0?, 0x165dc9a?})
        /home/filestash-enterprise/plugins/utils/authorisation.go:64 +0x94
github.com/mickael-kerjean/filestash/server/ctrl.FileLs(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/ctrl/files.go:136 +0x7a2
github.com/mickael-kerjean/filestash/server/middleware.LoggedInOnly.func1(0xc000001d40?, {0x46a8bc8, 0xc000f18810}, 0x0?)
        /home/server/middleware/session.go:23 +0x2e
github.com/mickael-kerjean/filestash/server/middleware.SessionStart.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/session.go:77 +0x2e7
github.com/mickael-kerjean/filestash/server/middleware.WithPublicAPI.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:115 +0x3a7
github.com/mickael-kerjean/filestash/server/middleware.SecureOrigin.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:99 +0x4a2
github.com/mickael-kerjean/filestash/server/middleware.SecureHeaders.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:79 +0x28c
github.com/mickael-kerjean/filestash/server/middleware.ApiHeaders.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:22 +0x29d
github.com/mickael-kerjean/filestash/server.Build.NewMiddlewareChain.func18({0x46a8cb8, 0xc000904000}, 0xc000227680)
        /home/server/middleware/index.go:28 +0x17b
net/http.HandlerFunc.ServeHTTP(0xc000227540?, {0x46a8cb8?, 0xc000904000?}, 0x52f069?)
        /usr/local/go/src/net/http/server.go:2220 +0x29
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000000480, {0x46a8cb8, 0xc000904000}, 0xc000227400)
        /home/vendor/github.com/gorilla/mux/mux.go:212 +0x1e2
net/http.serverHandler.ServeHTTP({0xc000c41d40?}, {0x46a8cb8?, 0xc000904000?}, 0x6?)
        /usr/local/go/src/net/http/server.go:3210 +0x8e
net/http.(*conn).serve(0xc00059d950, {0x46ae758, 0xc000832240})
        /usr/local/go/src/net/http/server.go:2092 +0x5d0
created by net/http.(*Server).Serve in goroutine 135
        /usr/local/go/src/net/http/server.go:3360 +0x485

* fix (s3): versitygw issue

* fix (uint64): size

* fix (s3): better handling of missing size info
2025-01-10 16:23:29 +11:00
Mickael
29db7d6934
fix (#799): s3 - versitygw bug
* fix (s3): bug on versitygw

the plugin would break on versitgw which on some version isn't sending
the size metadata, ending with a null pointer dereference.

I wasn't able to replicate this on my own but the bug report shows:

2025/01/10 04:35:47 http: panic serving 130.194.66.248:54701: runtime error: invalid memory address or nil pointer dereference
goroutine 5590 [running]:
net/http.(*conn).serve.func1()
        /usr/local/go/src/net/http/server.go:1947 +0xbe
panic({0x19c2740?, 0x535ece0?})
        /usr/local/go/src/runtime/panic.go:785 +0x132
github.com/mickael-kerjean/filestash/server/plugin/plg_backend_s3.S3Backend.Ls.func1(0xc000986bd0, 0xe0?)
        /home/server/plugin/plg_backend_s3/index.go:218 +0x18a
github.com/aws/aws-sdk-go/service/s3.(*S3).ListObjectsV2PagesWithContext(0xc0005b01a8, {0x46ae758, 0xc000f187e0}, 0xc0006649a0, 0xc0005d7270, {0x0, 0x0, 0x0})
        /home/vendor/github.com/aws/aws-sdk-go/service/s3/api.go:7654 +0x1ad
github.com/mickael-kerjean/filestash/server/plugin/plg_backend_s3.S3Backend.Ls({0xc0005b0178, 0xc00074cd80, 0xc000f188a0, {0x46ae758, 0xc000f187e0}, 0x32}, {0xc0008810f0?, 0x99?})
        /home/server/plugin/plg_backend_s3/index.go:202 +0x31a
github.com/mickael-kerjean/filestash/filestash-enterprise/plugins/utils.wrapper.Ls({{0x46b77c0, 0xc000f18ff0}, {0x5511fc0, 0x0, 0x0}}, {0xc0008810f0?, 0x165dc9a?})
        /home/filestash-enterprise/plugins/utils/authorisation.go:64 +0x94
github.com/mickael-kerjean/filestash/server/ctrl.FileLs(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/ctrl/files.go:136 +0x7a2
github.com/mickael-kerjean/filestash/server/middleware.LoggedInOnly.func1(0xc000001d40?, {0x46a8bc8, 0xc000f18810}, 0x0?)
        /home/server/middleware/session.go:23 +0x2e
github.com/mickael-kerjean/filestash/server/middleware.SessionStart.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/session.go:77 +0x2e7
github.com/mickael-kerjean/filestash/server/middleware.WithPublicAPI.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:115 +0x3a7
github.com/mickael-kerjean/filestash/server/middleware.SecureOrigin.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:99 +0x4a2
github.com/mickael-kerjean/filestash/server/middleware.SecureHeaders.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:79 +0x28c
github.com/mickael-kerjean/filestash/server/middleware.ApiHeaders.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:22 +0x29d
github.com/mickael-kerjean/filestash/server.Build.NewMiddlewareChain.func18({0x46a8cb8, 0xc000904000}, 0xc000227680)
        /home/server/middleware/index.go:28 +0x17b
net/http.HandlerFunc.ServeHTTP(0xc000227540?, {0x46a8cb8?, 0xc000904000?}, 0x52f069?)
        /usr/local/go/src/net/http/server.go:2220 +0x29
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000000480, {0x46a8cb8, 0xc000904000}, 0xc000227400)
        /home/vendor/github.com/gorilla/mux/mux.go:212 +0x1e2
net/http.serverHandler.ServeHTTP({0xc000c41d40?}, {0x46a8cb8?, 0xc000904000?}, 0x6?)
        /usr/local/go/src/net/http/server.go:3210 +0x8e
net/http.(*conn).serve(0xc00059d950, {0x46ae758, 0xc000832240})
        /usr/local/go/src/net/http/server.go:2092 +0x5d0
created by net/http.(*Server).Serve in goroutine 135
        /usr/local/go/src/net/http/server.go:3360 +0x485

* fix (s3): versitygw issue

* fix (uint64): size
2025-01-10 16:13:33 +11:00
Mickael
0d8ea12517
fix (s3): bug on versitygw (#798)
the plugin would break on versitgw which on some version isn't sending
the size metadata, ending with a null pointer dereference.

I wasn't able to replicate this on my own but the bug report shows:

2025/01/10 04:35:47 http: panic serving 130.194.66.248:54701: runtime error: invalid memory address or nil pointer dereference
goroutine 5590 [running]:
net/http.(*conn).serve.func1()
        /usr/local/go/src/net/http/server.go:1947 +0xbe
panic({0x19c2740?, 0x535ece0?})
        /usr/local/go/src/runtime/panic.go:785 +0x132
github.com/mickael-kerjean/filestash/server/plugin/plg_backend_s3.S3Backend.Ls.func1(0xc000986bd0, 0xe0?)
        /home/server/plugin/plg_backend_s3/index.go:218 +0x18a
github.com/aws/aws-sdk-go/service/s3.(*S3).ListObjectsV2PagesWithContext(0xc0005b01a8, {0x46ae758, 0xc000f187e0}, 0xc0006649a0, 0xc0005d7270, {0x0, 0x0, 0x0})
        /home/vendor/github.com/aws/aws-sdk-go/service/s3/api.go:7654 +0x1ad
github.com/mickael-kerjean/filestash/server/plugin/plg_backend_s3.S3Backend.Ls({0xc0005b0178, 0xc00074cd80, 0xc000f188a0, {0x46ae758, 0xc000f187e0}, 0x32}, {0xc0008810f0?, 0x99?})
        /home/server/plugin/plg_backend_s3/index.go:202 +0x31a
github.com/mickael-kerjean/filestash/filestash-enterprise/plugins/utils.wrapper.Ls({{0x46b77c0, 0xc000f18ff0}, {0x5511fc0, 0x0, 0x0}}, {0xc0008810f0?, 0x165dc9a?})
        /home/filestash-enterprise/plugins/utils/authorisation.go:64 +0x94
github.com/mickael-kerjean/filestash/server/ctrl.FileLs(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/ctrl/files.go:136 +0x7a2
github.com/mickael-kerjean/filestash/server/middleware.LoggedInOnly.func1(0xc000001d40?, {0x46a8bc8, 0xc000f18810}, 0x0?)
        /home/server/middleware/session.go:23 +0x2e
github.com/mickael-kerjean/filestash/server/middleware.SessionStart.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/session.go:77 +0x2e7
github.com/mickael-kerjean/filestash/server/middleware.WithPublicAPI.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:115 +0x3a7
github.com/mickael-kerjean/filestash/server/middleware.SecureOrigin.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:99 +0x4a2
github.com/mickael-kerjean/filestash/server/middleware.SecureHeaders.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:79 +0x28c
github.com/mickael-kerjean/filestash/server/middleware.ApiHeaders.func1(0xc000001d40, {0x46a8bc8, 0xc000f18810}, 0xc000227680)
        /home/server/middleware/http.go:22 +0x29d
github.com/mickael-kerjean/filestash/server.Build.NewMiddlewareChain.func18({0x46a8cb8, 0xc000904000}, 0xc000227680)
        /home/server/middleware/index.go:28 +0x17b
net/http.HandlerFunc.ServeHTTP(0xc000227540?, {0x46a8cb8?, 0xc000904000?}, 0x52f069?)
        /usr/local/go/src/net/http/server.go:2220 +0x29
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000000480, {0x46a8cb8, 0xc000904000}, 0xc000227400)
        /home/vendor/github.com/gorilla/mux/mux.go:212 +0x1e2
net/http.serverHandler.ServeHTTP({0xc000c41d40?}, {0x46a8cb8?, 0xc000904000?}, 0x6?)
        /usr/local/go/src/net/http/server.go:3210 +0x8e
net/http.(*conn).serve(0xc00059d950, {0x46ae758, 0xc000832240})
        /usr/local/go/src/net/http/server.go:2092 +0x5d0
created by net/http.(*Server).Serve in goroutine 135
        /usr/local/go/src/net/http/server.go:3360 +0x485
2025-01-10 15:52:28 +11:00
MickaelK
41923ef500 fix (firefox): input sizing across browser
before this, there was some annoying discrepencies with the way Firefox
would render input compared to chrome. Unfortunatly we couldn't find a
better way than fixing the height to fix it up
2025-01-06 15:46:22 +11:00
MickaelK
8d27075ddb chore (3d): refactor 3d viewer 2025-01-05 15:10:09 +11:00
MickaelK
24f3150c53 feature (svg): svg opener via threejs 2025-01-03 01:48:41 +11:00
MickaelK
2ac816dc9c feature (table): table opener app 2025-01-02 19:44:02 +11:00
MickaelK
2b872a07be fix (docker-compose): #790 #791 2024-12-31 05:49:36 +11:00