navidrome/plugins/host
Kendall Garner 54fe6c254e
feat(plugins): implement plugin specific storage (#5839)
* implement storage api/hooks

* fine. if the error messages are different, just match error

* rename storageMount

* add independent plugin test

* round 2

* .-.

* one more copypasta fail

* docs(plugins): document the Storage host service

The README is the plugin author reference and every other host service has a
section there, but Storage had none, so the /storage guest path contract only
existed in code.

Documents the mount point and its backing directory, the manifest permission,
the host function, and the two behaviours an author would otherwise discover
the hard way: there is no size limit, and the directory outlives an uninstall.

* docs(plugins): correct the library filesystem security notes

The README stated in three places that library filesystem access is read-only,
which stopped being true when AllowWriteAccess was added: an administrator can
grant a plugin write access to libraries.

Corrects those and gives the library and storage mounts the same wording for
what the sandbox guarantees, since both now go through the same jail.

* docs(plugins): describe symlink handling in mounts accurately

The security notes claimed paths resolving outside a mount are rejected, which
overstates the jail. Only lexical escapes are: '..' and absolute paths. Creating
symlinks is denied, but symlinks already present are followed and do reach
outside the mount, which is what lets music libraries link folders in from
elsewhere. Both behaviours are pinned by tests in the plugins package.

---------

Co-authored-by: Deluan Quintão <deluan@navidrome.org>
2026-08-03 14:23:42 -04:00
..
artwork.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
artwork_gen.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
cache.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
cache_gen.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
config.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
config_gen.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
doc.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
http.go feat(plugins): add NoFollowRedirects option to HTTPRequest 2026-03-20 18:16:07 -04:00
http_gen.go refactor(http): rename HTTP client files and update struct names for consistency 2026-02-26 16:19:37 -05:00
kvstore.go feat(plugins): add TTL support, batch operations, and hardening to kvstore (#5127) 2026-02-28 23:12:17 -05:00
kvstore_gen.go feat(plugins): add TTL support, batch operations, and hardening to kvstore (#5127) 2026-02-28 23:12:17 -05:00
library.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
library_gen.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
matcher.go feat(plugins): expose the song Matcher as a host service (#5643) 2026-07-01 11:19:15 -04:00
matcher_gen.go feat(plugins): expose the song Matcher as a host service (#5643) 2026-07-01 11:19:15 -04:00
scheduler.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
scheduler_gen.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
storage.go feat(plugins): implement plugin specific storage (#5839) 2026-08-03 14:23:42 -04:00
storage_gen.go feat(plugins): implement plugin specific storage (#5839) 2026-08-03 14:23:42 -04:00
subsonicapi.go fix(plugins): add base64 handling for []byte and remove raw=true (#5121) 2026-02-27 19:00:19 -05:00
subsonicapi_gen.go fix(plugins): add base64 handling for []byte and remove raw=true (#5121) 2026-02-27 19:00:19 -05:00
task.go feat(plugins): add TaskQueue host service for persistent background task queues (#5116) 2026-03-03 13:48:49 -05:00
task_gen.go feat(plugins): add TaskQueue host service for persistent background task queues (#5116) 2026-03-03 13:48:49 -05:00
users.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
users_gen.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
websocket.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
websocket_gen.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00