Skip to content

Commit

Permalink
Add custom URL prefix for HTTP URLs (#1260)
Browse files Browse the repository at this point in the history
Co-authored-by: Johannes Pohl <johannes.pohl@badaix.de>
  • Loading branch information
rechner and badaix committed Jul 23, 2024
1 parent 790edde commit 7b596ec
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 8 deletions.
18 changes: 11 additions & 7 deletions server/etc/snapserver.conf
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
# Number of additional worker threads to use
# - For values < 0 the number of threads will be 2 (on single and dual cores)
# or 4 (for quad and more cores)
# - 0 will utilize just the processes main thread and might cause audio drops
# in case there are a couple of longer running tasks, such as encoding
# - 0 will utilize just the processes main thread and might cause audio drops
# in case there are a couple of longer running tasks, such as encoding
# multiple audio streams
#threads = -1

Expand All @@ -41,7 +41,7 @@
# if empty, data dir will be
# - "/var/lib/snapserver/" when running as daemon
# - "$HOME/.config/snapserver/" when not running as daemon
#datadir =
#datadir =

#
###############################################################################
Expand Down Expand Up @@ -97,9 +97,13 @@ doc_root = /usr/share/snapserver/snapweb

# Hostname or IP under which clients can reach this host
# used to serve cached cover art
# use <hostname> as placeholder for your actual host name
# use <hostname> as placeholder for your actual host name
#host = <hostname>

# Optional custom URL prefix for generated URLs where clients can reach
# cached album art, to e.g. match scheme behind a reverse proxy.
#url_prefix = https://<hostname>

#
###############################################################################

Expand Down Expand Up @@ -170,7 +174,7 @@ source = pipe:///tmp/snapfifo?name=default
# Start Snapserver with "--stream:codec=<codec>:?" to get codec specific options
#codec = flac

# Default source stream read chunk size [ms].
# Default source stream read chunk size [ms].
# The server will continously read this number of milliseconds from the source into buffer and pass this buffer to the encoder.
# The encoded buffer is sent to the clients. Some codecs have a higher latency and will need more data, e.g. Flac will need ~26ms chunks
#chunk_ms = 20
Expand Down Expand Up @@ -201,9 +205,9 @@ source = pipe:///tmp/snapfifo?name=default

# log sink [null,system,stdout,stderr,file:<filename>]
# when left empty: if running as daemon "system" else "stdout"
#sink =
#sink =

# log filter <tag>:<level>[,<tag>:<level>]*
# log filter <tag>:<level>[,<tag>:<level>]*
# with tag = * or <log tag> and level = [trace,debug,info,notice,warning,error,fatal]
#filter = *:info
#
Expand Down
1 change: 1 addition & 0 deletions server/server_settings.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ struct ServerSettings
std::vector<std::string> ssl_bind_to_address{{"0.0.0.0"}};
std::string doc_root{""};
std::string host{"<hostname>"};
std::string url_prefix{""};
};

struct Tcp
Expand Down
1 change: 1 addition & 0 deletions server/snapserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ int main(int argc, char* argv[])
settings.http.ssl_bind_to_address.front(), &settings.http.ssl_bind_to_address[0]);
conf.add<Implicit<string>>("", "http.doc_root", "serve a website from the doc_root location", settings.http.doc_root, &settings.http.doc_root);
conf.add<Value<string>>("", "http.host", "Hostname or IP under which clients can reach this host", settings.http.host, &settings.http.host);
conf.add<Value<string>>("", "http.url_prefix", "URL prefix for generating album art URLs", settings.http.url_prefix, &settings.http.url_prefix);

// TCP RPC settings
conf.add<Value<bool>>("", "tcp.enabled", "enable TCP Json RPC)", settings.tcp.enabled, &settings.tcp.enabled);
Expand Down
6 changes: 5 additions & 1 deletion server/streamreader/pcm_stream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,11 @@ void PcmStream::setProperties(const Properties& properties)
auto md5 = ImageCache::instance().setImage(getName(), std::move(data), props.metadata->art_data->extension);

std::stringstream url;
url << "http://" << server_settings_.http.host << ":" << server_settings_.http.port << "/__image_cache?name=" << md5;
if (server_settings_.http.url_prefix == "") {
url << "http://" << server_settings_.http.host << ":" << server_settings_.http.port << "/__image_cache?name=" << md5;
} else {
url << server_settings_.http.url_prefix << "/__image_cache?name=" << md5;
}
props.metadata->art_url = url.str();
}
else if (!props.metadata.has_value() || !props.metadata->art_data.has_value())
Expand Down

0 comments on commit 7b596ec

Please sign in to comment.