Commit 3fdc678a authored by Max Kellermann's avatar Max Kellermann

Main: support arbitrary storage plugins

parent a0088ccc
...@@ -8,6 +8,9 @@ ver 0.19 (not yet released) ...@@ -8,6 +8,9 @@ ver 0.19 (not yet released)
- proxy: forward "idle" events - proxy: forward "idle" events
- proxy: copy "Last-Modified" from remote directories - proxy: copy "Last-Modified" from remote directories
- upnp: new plugin - upnp: new plugin
* storage
- music_directory can point to a remote file server
- smbclient: new plugin
* playlist * playlist
- soundcloud: use https instead of http - soundcloud: use https instead of http
- soundcloud: add default API key - soundcloud: add default API key
......
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
#include "unix/SignalHandlers.hxx" #include "unix/SignalHandlers.hxx"
#include "unix/Daemon.hxx" #include "unix/Daemon.hxx"
#include "system/FatalError.hxx" #include "system/FatalError.hxx"
#include "util/UriUtil.hxx"
#include "util/Error.hxx" #include "util/Error.hxx"
#include "util/Domain.hxx" #include "util/Domain.hxx"
#include "thread/Id.hxx" #include "thread/Id.hxx"
...@@ -63,6 +64,7 @@ ...@@ -63,6 +64,7 @@
#include "config/ConfigData.hxx" #include "config/ConfigData.hxx"
#include "config/ConfigDefaults.hxx" #include "config/ConfigDefaults.hxx"
#include "config/ConfigOption.hxx" #include "config/ConfigOption.hxx"
#include "config/ConfigError.hxx"
#include "Stats.hxx" #include "Stats.hxx"
#ifdef ENABLE_DATABASE #ifdef ENABLE_DATABASE
...@@ -71,6 +73,7 @@ ...@@ -71,6 +73,7 @@
#include "db/DatabaseSimple.hxx" #include "db/DatabaseSimple.hxx"
#include "db/plugins/SimpleDatabasePlugin.hxx" #include "db/plugins/SimpleDatabasePlugin.hxx"
#include "storage/plugins/LocalStorage.hxx" #include "storage/plugins/LocalStorage.hxx"
#include "storage/Registry.hxx"
#endif #endif
#ifdef ENABLE_NEIGHBOR_PLUGINS #ifdef ENABLE_NEIGHBOR_PLUGINS
...@@ -148,6 +151,15 @@ glue_mapper_init(Error &error) ...@@ -148,6 +151,15 @@ glue_mapper_init(Error &error)
static bool static bool
InitStorage(Error &error) InitStorage(Error &error)
{ {
auto uri = config_get_string(CONF_MUSIC_DIR, nullptr);
if (uri != nullptr && uri_has_scheme(uri)) {
instance->storage = CreateStorageURI(uri, error);
if (instance->storage == nullptr && !error.IsDefined())
error.Format(config_domain,
"Unrecognized storage URI: %s", uri);
return instance->storage != nullptr;
}
auto path_fs = config_get_path(CONF_MUSIC_DIR, error); auto path_fs = config_get_path(CONF_MUSIC_DIR, error);
if (path_fs.IsNull() && error.IsDefined()) if (path_fs.IsNull() && error.IsDefined())
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment