Add shairport-sync password support

This commit is contained in:
badaix 2020-12-31 11:42:49 +01:00
parent 79d6d9a8ee
commit ae16e74f60
4 changed files with 42 additions and 12 deletions

View file

@ -4,17 +4,26 @@
### Features
- Client: TODO
- Client: Add PulseAudio player backend (Issue #722)
- Client: Configurable buffer time for alsa and pulse players
- Server: If docroot is not configured, a default page is served (Issue #711)
- Server: airplay source supports "password" parameter (Issue #754)
### Bugfixes
- TODO
- Server: airplay source deletes Shairport's meta pipe on exit (Issue #672)
- Server: alsa source will not send silece when going idle (Issue #729)
- Client: "make install" will set correct user/group for snapclient (Issue #728)
- Client: Fix printing UTF-8 device names on Windows (Issue #732)
- Client: Fix stuttering on alsa player backend (Issue #722, #727)
### General
- TODO
- Server: Change librespot parameter "killall" default to false (Issue #746, #724)
- Snapweb: Update to v0.1.0
- Build: Update CMakeLists.txt to build Snapclient on Android
_Johannes Pohl <snapcast@badaix.de> Thu, 24 Dec 2020 00:13:37 +0200_
_Johannes Pohl <snapcast@badaix.de> Sun, 10 Jan 2021 00:13:37 +0200_
## Version 0.22.0

23
debian/changelog vendored
View file

@ -1,13 +1,24 @@
snapcast (0.23.0-1) unstable; urgency=medium
* Features
-TODO
* Bugfixes
-TODO
* General
-TODO
-Client: Add PulseAudio player backend (Issue #722)
-Client: Configurable buffer time for alsa and pulse players
-Server: If docroot is not configured, a default page is served (Issue #711)
-Server: airplay source supports "password" parameter (Issue #754)
-- Johannes Pohl <snapcast@badaix.de> Thu, 24 Dec 2020 00:13:37 +0200
* Bugfixes
-Server: airplay source deletes Shairport's meta pipe on exit (Issue #672)
-Server: alsa source will not send silece when going idle (Issue #729)
-Client: "make install" will set correct user/group for snapclient (Issue #728)
-Client: Fix printing UTF-8 device names on Windows (Issue #732)
-Client: Fix stuttering on alsa player backend (Issue #722, #727)
* General
-Server: Change librespot parameter "killall" default to false (Issue #746, #724)
-Snapweb: Update to v0.1.0
-Build: Update CMakeLists.txt to build Snapclient on Android
-- Johannes Pohl <snapcast@badaix.de> Sun, 10 Jan 2021 00:13:37 +0200
snapcast (0.22.0-1) unstable; urgency=medium

View file

@ -69,15 +69,19 @@ Parameters introduced by Snapclient:
Launches [shairport-sync](https://github.com/mikebrady/shairport-sync) and reads audio from stdout
```sh
airplay:///<path/to/shairport-sync>?name=<name>[&dryout_ms=2000][&devicename=Snapcast][&port=5000]
airplay:///<path/to/shairport-sync>?name=<name>[&dryout_ms=2000][&devicename=Snapcast][&port=5000][&password=<my password>]
```
Note that you need to have the shairport-sync binary on your machine and the sampleformat will be set to `44100:16:2`
#### Available parameters
Parameters used to configure the shairport-sync binary:
- `devicename`: Advertised name
- `port`: RTSP listening port
- `password`: Password
- `params`: Optional string appended to the shairport-sync invocation. This allows for arbitrary flags to be passed to shairport-sync, for instance `params=--on-start=start.sh%20--on-stop=stop.sh`. The value has to be properly URL-encoded.
### file

View file

@ -53,7 +53,13 @@ AirplayStream::AirplayStream(PcmListener* pcmListener, boost::asio::io_context&
logStderr_ = true;
string devicename = uri_.getQuery("devicename", "Snapcast");
params_wo_port_ = "\"--name=" + devicename + "\" --output=stdout --use-stderr --get-coverart";
string password = uri_.getQuery("password", "");
params_wo_port_ = "--name=\"" + devicename + "\" --output=stdout --use-stderr --get-coverart";
if (!password.empty())
params_wo_port_ += " --password \"" + password + "\"";
if (!params_.empty())
params_wo_port_ += " " + params_;
port_ = cpt::stoul(uri_.getQuery("port", "5000"));
setParamsAndPipePathFromPort();