Merge branch 'shout_tls' of git://github.com/JakobOvrum/MPD

This commit is contained in:
Max Kellermann 2019-01-20 21:03:13 +01:00
commit d1bdea8edb
3 changed files with 24 additions and 0 deletions

2
NEWS
View File

@ -1,6 +1,8 @@
ver 0.21.5 (not yet released) ver 0.21.5 (not yet released)
* tags * tags
- ape: map "Album Artist" - ape: map "Album Artist"
* output
- shout: add support for TLS
ver 0.21.4 (2019/01/04) ver 0.21.4 (2019/01/04)
* database * database

View File

@ -974,6 +974,8 @@ You must set a format.
- Set the timeout for the shout connection in seconds. Defaults to 2 seconds. - Set the timeout for the shout connection in seconds. Defaults to 2 seconds.
* - **protocol icecast2|icecast1|shoutcast** * - **protocol icecast2|icecast1|shoutcast**
- Specifies the protocol that wil be used to connect to the server. The default is "icecast2". - Specifies the protocol that wil be used to connect to the server. The default is "icecast2".
* - **tls disabled|auto|auto_no_plain|rfc2818|rfc2817**
- Specifies what kind of TLS to use. The default is "disabled" (no TLS).
* - **mount URI** * - **mount URI**
- Mounts the :program:`MPD` stream in the specified URI. - Mounts the :program:`MPD` stream in the specified URI.
* - **user USERNAME** * - **user USERNAME**

View File

@ -141,6 +141,25 @@ ShoutOutput::ShoutOutput(const ConfigBlock &block)
protocol = SHOUT_PROTOCOL_HTTP; protocol = SHOUT_PROTOCOL_HTTP;
} }
unsigned tls;
value = block.GetBlockValue("tls");
if (value != nullptr) {
if (0 == strcmp(value, "disabled"))
tls = SHOUT_TLS_DISABLED;
else if(0 == strcmp(value, "auto"))
tls = SHOUT_TLS_AUTO;
else if(0 == strcmp(value, "auto_no_plain"))
tls = SHOUT_TLS_AUTO_NO_PLAIN;
else if(0 == strcmp(value, "rfc2818"))
tls = SHOUT_TLS_RFC2818;
else if(0 == strcmp(value, "rfc2817"))
tls = SHOUT_TLS_RFC2817;
else
throw FormatRuntimeError("invalid shout TLS option \"%s\"", value);
} else {
tls = SHOUT_TLS_DISABLED;
}
if (shout_set_host(shout_conn, host) != SHOUTERR_SUCCESS || if (shout_set_host(shout_conn, host) != SHOUTERR_SUCCESS ||
shout_set_port(shout_conn, port) != SHOUTERR_SUCCESS || shout_set_port(shout_conn, port) != SHOUTERR_SUCCESS ||
shout_set_password(shout_conn, passwd) != SHOUTERR_SUCCESS || shout_set_password(shout_conn, passwd) != SHOUTERR_SUCCESS ||
@ -151,6 +170,7 @@ ShoutOutput::ShoutOutput(const ConfigBlock &block)
shout_set_format(shout_conn, shout_format) shout_set_format(shout_conn, shout_format)
!= SHOUTERR_SUCCESS || != SHOUTERR_SUCCESS ||
shout_set_protocol(shout_conn, protocol) != SHOUTERR_SUCCESS || shout_set_protocol(shout_conn, protocol) != SHOUTERR_SUCCESS ||
shout_set_tls(shout_conn, tls) != SHOUTERR_SUCCESS ||
shout_set_agent(shout_conn, "MPD") != SHOUTERR_SUCCESS) shout_set_agent(shout_conn, "MPD") != SHOUTERR_SUCCESS)
throw std::runtime_error(shout_get_error(shout_conn)); throw std::runtime_error(shout_get_error(shout_conn));