355 Commits

Author SHA1 Message Date
f4a99c4ad6 chore (plugin): revamp frontend plugin 2025-06-09 15:38:37 +10:00
fb29c7b6c2 feature (offline): handle offline files 2025-06-05 12:58:09 +10:00
c1834faa23 feature (thumbnail): revamp thumbnail plugin
We revamped the plugin so it doesn't have extra dependencies. The issue
is when images have external dependencies, forcing users to use
something like docker to satisfy those but as we see these days, we can
ship the viewer for heic as a wasm plugin existing client side and can
focus on building a smaller footprint server
2025-05-26 15:34:38 +10:00
ad14ad658a chore (maintenance): image thumbnail
the issue of plg_image_c is its reliance on shared libraries like libraw
which depends on lcms2 and libheif which depends on a whole bunch of
other stuff. That make releasing a fat binary that just work of
Filestash tricky

if someone ever read this, I would gladly get help to integrate the
whole build of those things within CI without prolonging the build time
by 2 hours.
2025-05-22 02:23:28 +10:00
d5628fd03d fix (s3): region issue on s3
for server like versitygw which as of today doesn't support
getBucketLocation, we'd be sending the wrong region through
2025-05-12 21:05:17 +10:00
73bab4a2e3 feature (3d): handle mesh files 2025-04-29 13:51:56 +10:00
3b6253cfbd feature (plg_application_3d): revamp support for 3d files 2025-04-23 00:36:38 +10:00
6277d00250 chore (readme): plugin doc 2025-04-15 21:39:38 +10:00
bf69108c54 feature (plg_override_actiondelete): delete icon on file 2025-04-09 21:02:04 +10:00
c43364eafa chore (plg_backend_local): better perm default 2025-04-09 14:43:06 +10:00
084bb33e83 fix (s3): handle cancellation 2025-04-09 14:42:21 +10:00
a29ec2cda9 chore (doc): plg_handler_mcp doc 2025-04-02 03:00:57 +11:00
777200374d chore (mcp): refactor mcp stuff 2025-04-02 00:26:21 +11:00
7821bc8681 feature (mcp): mcp server 2025-04-01 11:00:41 +11:00
eb7e30424e fix (capitalisation): disable android capit. 2025-03-18 20:57:34 +11:00
ba3ed7b945 fix (plg_search_sqlitefs): context issue 2025-03-14 16:04:53 +11:00
21c8a7f597 fix (s3): assume role on ecs 2025-02-21 17:26:00 +11:00
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
b2c9b29384 chore (refactoring): revamp sqlite full text search 2025-02-03 16:01:50 +11:00
db86daf867 fix (plg_search_sqlitefs): refactoring 2025-01-31 23:48:59 +11:00
773fd02871 fix (plg_office_wopi): wopi office integration 2025-01-30 17:49:40 +11:00
6e2a99adf1 fix (plg_office_wopi): shared link on wopi issue 2025-01-30 12:58:47 +11:00
42fd37e2ec fix (sharedlink): issue with ifram / wopi 2025-01-24 13:59:11 +11:00
4ed4365a33 fix (smb): finicky persistent stuff when decorated 2025-01-23 04:11:44 +11:00
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
fd839808b7 feature (feedback): suggestion from a redditor 2025-01-13 17:41:29 +11:00
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
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
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
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
1aa1a7d5e9 fix (deadlock): thumbnail issue in plg_image_c 2024-12-22 03:06:48 +11:00
f268d27967 feature (postMessage): iframe RPC via postMessage 2024-12-14 00:46:50 +11:00
44f4cc74f0 fix (wopi): wopi handler fileID 2024-12-13 00:42:00 +11:00
e0de8261a6 fix (wopi): path handling 2024-12-12 17:52:20 +11:00
1d06c785bc fix (wopi): wopi config (#785) 2024-12-12 16:07:34 +11:00
b3a44918e1 feature (office): enable wopi office docs 2024-12-12 10:58:38 +11:00
d6bc0d55f1 chore (banner): auth middleware banners 2024-12-10 00:42:06 +11:00
afd2f2566e fix (jenkins): broken build after refactoring 2024-12-09 09:03:05 +11:00
799ba868c3 feature (plg_authenticate_local): local source of user 2024-12-06 18:28:33 +11:00
e35158c259 chore (plg_authentication_simple): banner update 2024-12-06 07:21:41 +11:00
b317a50609 chore (plg_authenticate_simple): banner dashboard 2024-12-06 07:07:40 +11:00
d56cdd3cc3 chore (plg_authenticate_simple): additional debug info 2024-12-05 22:46:59 +11:00
8d70b7e26c feature (plg_authenticate_simple): auth facade with a gui 2024-12-05 22:34:01 +11:00
177961c62d fix (plg_video_thumbnail): error when backend doesn't support fileseek 2024-12-02 17:24:03 +11:00
ff67ed97ed feature (thumbnail): video thumbnail plugin
up until now, the stance was to refuse video thumbnail because it's too
slow but really many people don't seem to care that much about it and
keep insisting to have it.

With this solution, it's not in the base build but it gives an
option for those people to make it happen
2024-12-02 15:39:25 +11:00
c376fe8240 fix (onlyoffice): canary office integration - #629 2024-11-14 14:24:23 +11:00
6f03334871 feature (plugin): override plugin for download
This is to demonstrate how override work with the new frontend. This
plugin does create another download button in the file viewer page
2024-11-07 13:32:00 +11:00
363f9bd652 fix (typo): package name typo 2024-10-10 04:57:25 +11:00
963bac5146 fix (plg_backend_azure): remove things 2024-10-06 08:05:19 +11:00
5c87904cb1 feature (plg_backend_azure): support for seek 2024-10-04 19:22:26 +10:00